Thread Group下常用组件介绍
- Pre Processors,发出请求前要做哪些准备工作,类似于 Unittest 中的 setUp
- Post Processor:请求之后的处理,常用的就是正则,通过正则表达式将其他接口需要的某些数据存在变量里,其他接口的请求参数就可以直接调用生成好的变量。也可以断言或者做数据关联.
- Assertions,用来对结果做断言,检查实际结果和预期是否一致。
- Timer,定时器。设置sleep时间,还可以控制请求发送速度,比如10分钟发送100次请求。
- Test Fragment片段,类似于一个函数,其他控制器可以引用。
- Config Element配置元件,可以提前设置一些信息,供后续公共使用。CSV date set config 将本地数据文件形成数据池(date
pool) - Listener监听器,对测试结果进行可视化处理,可以分析响应结果和报告。
Thread Group下组件执行顺序
- 配置元件-前置处理器-定时器-取样器-后置处理器-断言-监听器
补充
- User Defined Variables 的 3 种方式
- test plan中添加变量,可以通过${变量名}在任意位置引用
- Config element中添加变量,如下图。如果同时在test plan和config element中添加了同样的一个变量名,则根据就近原则,会取config element中的变量,但是定义的时候最好不要变量同名。
- User parameter,可以针对不同的线程定义不同的变量。
目前总共有两个用户,三个变量,设置三个http请求,在每个请求中,url1 url2 url3填入请求地址中:
设置线程数为1,执行,可以看到只执行了user1的三个变量参数,同理,如果设置线程数为2,则user2的三个变量参数也被执行。如果设置线程数为3,则在第三个线程中会随机从user1或者user2中选择变量参数执行:
- test plan中添加变量,可以通过${变量名}在任意位置引用
插件生成器
下载https://jmeter-plugins.org/downloads/all/
下载后将插件包放到jmeter 的lib/ext目录下并重启jmeter
定时器
作用域:
⚫ 定时器是在每个 sampler(采样器)之前执行的,而不是之后(无论定时器位置在
sampler 之前还是下面);
⚫ 当执行一个 sampler 之前时,所有当前作用域内的定时器都会被执行;
⚫ 如果希望定时器仅应用于其中一个 sampler,则把定时器作为子节点加入;
⚫ 如果希望在 sampler 执行完之后再等待,则可以使用 Test Action
集合点的设置,设置好后还需要在thread group中设置:
Loop controller设置
如果同时设置了线程组thread group的循环次数和循环控制器的循环次数,那循环控制器的子节点运行的次数为两个数值相乘的结果。Forever 选项:勾选上这一项表示一直循环下去。即下截图中总共会运行6次。
用文件做参数化
设置两个http request,设置thread group 循环次数为3:
一共执行了6次,数据文件datetest.txt 中只有4个 url,CSV Data Source配置的是 Recycle on EOF,所有后面两个请求和开始的是重复的。
更改配置继续执行,则只执行4次。
将测试结果保存到文件中
将测试结果倒出到HTML
jmeter -n -t D:\program\apache-jmeter-5.0\samples\28.summary_report.jmx -l
d:\summary.jtl -e -o d:\result
D:\program\apache-jmeter-5.0\samples\28.summary_report.jmx:表示要执行的脚本
d:\summary.jtl:生成后的脚本
d:\result :web 页面报告的存储路径
生成随机变量的 3 种方式
- Random variable
- Function helper dialog中设置随机变量
- Counter,在整个线程组内设置一个全局变量,该变量的值是唯一的
- 对变量还可以做附加操作,如通过javascript、增加字符串、substring函数对变量做改变对变量处理后再使用:
- __javaScript 处理 counter_num
- 增加字符串,${__javaScript(${counter_num}+'abc',result)}
- substring,${__substring(${counter_num},0,1,)}等价于:${__javaScript("${counter_num}".substring(1),result)}
- __javaScript 处理 counter_num
将响应数据保存到指定文件
根据响应数据的内容保存成不同的格式,比如 html/xml/.zip 等。如果响应的数据太多,导致 View Results Tree 不能很好的展示,可以 用此插件功能保存到文件。目录是相对于 jmeter 的 bin 目录的相对路径,如果不写的话默认就在 bin 目录下,生成
的文件根据实际响应的数据类型保存为对应的格式,不需要写后缀名。
HTTP Mirror Server
在本地临时搭建一个 HTTP 服务器,将服务器接收到的请求原样返回,这样就可以看到发出请求的具体内容,供调试使用。