一. 性能测试工具选择
*考虑以下几点
成本(Loadrunner license成本高)
a. 工具成本b. 学习成本
通信协议(往往通过协议来模拟压力)
a. 标准协议(HTTP,FTP,...)b. 自有协议(公司开发的对内协议)
生命力
Jmeter版本更新快,生命力强
跨平台
Loadrunner不跨平台,Jmeter跨平台
二. Jmeter语言更改
*bin目录下的jmeter.properties存储所有配置将文件内language改为en英文,然后重启
三. Jmeter工具目录
Bin:其中放置了各项配置文件(比如日志设置、JVM设置等)、启动文件(JMeter启动快捷方式,报告生成快捷方式,Heap Dump快捷方式等),jmeter.sh的linux的启动文件,启动jar包,示例脚本等
Dos:放置了JMeter API离线帮助文档,WEB方式。
Extras:JMeter 辅助功能,提供与Ant Jenkins集成的可能性,我们可以利用Ant 与Jenkins来构建性能测试自动化构架。Ant可以利用xsl脚本把XML格式的测试结果以HTML方式展示。
Lib:JMeter组件以jar包的形式放置在lib/ext目录下,如果我们要扩展JMeter组件,扩展后的jar包即放在此目录,Jmeter启动时会加载此目录下的jar包。
printable_docs:JMeter的离线帮助文件放置目录。
licenses:相关声明信息都放在此文件夹中,全部是文本文件。对测试没有实际作用,可以忽略。
LICENSE:LIcense说明文件。
NOTICE:License说明文件。
Readme:JMeter简明介绍。
四. 八大可执行元件
1.Threads线程
1.1Setup thread group
一种特殊类型的ThreadGroup的,用于执行预测试操作。这下线程的行为完全像一个正常的线程组元件。不同的是,这些类型的线程执行测试前进行 定期线程组的执行。类似LR的init().
1.2Teardown thread group
一种特殊类型的ThreadGroup的,用于执行预测试操作。这下线程的行为完全像一个正常的线程组元件。不同的是,这些类型的线程执行测试结束后执行定期的线程组。类似LR的end().
1.3Thread group(线程组)
这个是我们通常添加的线程。可以看作是一个虚拟用户组,线程组里的每一个线程都可以理解为一个虚拟用户。线程组的线程数量在测试执行过程中不会改变,类似LR的action().主要为设置场景的起始点和用户并发数,代码的开始运行时间和要运行的时间。
1.4Stepping Thread Group(需要下载jar包)
主要用于性能测试。
2. 测试片段(Test Fragment)
测试片段是控制器上的一种特殊的线程组,它在测试树上与线程组处于一个层级。但它不能被执行,必须通过逻辑控制器中的Include_Controller 或者模块控制器来调用。
3.配置元件(config Element)
对sample进行配置,避免重复内容。用来初始化默认值和变量,以便后续采样器使用,将其在作用域的初始化阶段使用,如:csv data set config可以将本机静态数据形成数据池。
4.定时器(Timer)
用于操作之间设置等待时间
4.1 定时器是在每个sampler(采样器)之前执行的,而不是之后。
4.2 定时器是有作用域的;当执行一个sampler之前时,所有当前作用域内的定时器都会被执行;
4.3 如果希望定时器仅应用于其中一个sampler,则把该定时器作为子节点加入
4.4 如果希望在sampler执行完之后再等待,则可使用Test Action;
5.前置处理器(per processors)
实际的请求发送之前对即将发出的请求进行特殊的处理,以及更新从上一个响应获得的变量值。eg:http url 重写修饰符可以实现url重写,当url有session id一类的session信息时,可通过该处理器填充实际发送的session id。
6.后置处理器(post processors)
对于sampler发出请求后得到的服务器响应进行处理,一般用于提取响应中的特定数据
7.断言
用于检查测试中得到的数据与预期是否相等,断言用来设置检查点,用于保证性能测试过程中数据交互与预期一致。
8.监听器
是用来对测试结果数据进行处理和可视化展示的一系列元件,一般常用图形结果,查看结果树,聚合报告,收集运行信息,如:响应时间,请求和响应的详细信息等。