目录
一、Jmeter逻辑控制器
①IF(如果)控制器
作用:
位置:
参数介绍:
步骤:
②循环控制器
作用:
位置:
步骤:
线程组属性VS循环控制器
③ForEach控制器
作用:
位置:
参数介绍:
步骤:
二、定时器
①同步定时器:
位置:
参数介绍:
步骤:
②常数吞吐量定时器
作用:
位置:
参数介绍:
步骤:
一、Jmeter逻辑控制器
逻辑控制器:可以按照设定的逻辑控制取样器的执行顺序
常见的:IF控制器、循环控制器、ForEach控制器
①IF(如果)控制器
作用:
IF控制器用于控制它下面的测试元素是否运行
位置:
测试计划 -> 线程组 -> 逻辑控制器 -> IF(如果)控制器
参数介绍:
JS语法形式、函数形式
步骤:
1.添加线程组
2.用户定义的变量
3.添加IF控制器,判断name是否等于baidu
不勾选Interpret Condition,'${name}' == 'baidu'
勾选,${_jexl3('${name}' == 'baidu',)}
4.添加HTTP请求,访问百度
5.添加IF控制器,判断name是否等于itcast
6.添加HTTP请求,用来访问itcast
7.添加查询结果树
②循环控制器
作用:
通过设置循环次数来实现循环发送请求
位置:
测试计划 -> 线程组 -> 逻辑控制器 -> 循环控制器
步骤:
1.添加线程组
2.添加循环控制器—设置循环次数
3.添加HTTP请求
4.添加查询结果树
线程组属性VS循环控制器
不同点:线程组的循环次数对线程组下的所有HTTP请求有效
循环控制器的循环次数对子节点下的HTTP请求有效
关联:假设循环控制器设置M次,线程组属性中设置N次
循环控制器下的请求运行:N*M
线程组下,非循环控制器下的请求运行N次
③ForEach控制器
作用:
一般和用户自定义变量/正则表达式提取器一起使用,读取返回结果中一系列相关变量值。该控制器下的取样器都会执行一次/多次,每次读取不同的变量值。
位置:
测试计划 -> 线程组 -> 逻辑控制器 -> ForEach控制器
参数介绍:
输入变量前缀:要读取的输入变量的固定前缀
开始循环字段:要读取的输入变量后缀数字的最小值-1
结束循环字段:要读取的输入变量后缀数字的最大值
输出变量名称:读取输入变量的值后保存的新变量名,用于后续HTTP请求来引用。
步骤:
一、与用户定义的变量配合使用:
1.添加线程组
2.添加用户定义的变量 命名规则:前缀_编号
3.添加ForEach控制器
4.添加HTTP请求—百度
5.添加查看结果树
二、与正则表达式配合使用
1.添加线程组
2.添加HTTP请求1-itcast
3.在HTTP请求1下,添加正则表达式提取器,提取出所有的地址信息
二、定时器
①同步定时器:
阻塞线程(累积一定的请求),当在规定的时间内达到一定的线程数量。这些线程会在同一个时间点一起释放,瞬间产生很大的压力。
位置:
测试计划 -> 线程组 -> 定时器 -> 同步定时器
参数介绍:
模拟用户组的数量:模拟用户的数量,即指定同时释放的线程数数量,若设置为0,等于设置为线程组中的线程数量。若设置为0,等于设置为线程组中的线程数量。
超过时间以毫秒为单位:超时时间,即超时多少毫秒后同时释放指定的线程数。
· 如果设置为0,该定时器将会等待线程数达到了设置的线程数才释放,若没有达到设置的线程数会一直死等。
· 如果大于0,那么如果超过超时时间中设置的最大等待时间后还没有达到设置的等待数,Timer将不再等待,释放已到达的线程,默认为0.
步骤:
1.添加线程组,设置线程数为n
2.添加HTTP请求
3.添加同步定时器
设置并发线程数:同时发送请求的虚拟用户数
设置超时时间:建立设置,并不能设置大小
4.添加查看结果树
5.添加监听器—聚合报告
②常数吞吐量定时器
稳定测试时,要求模拟用户真实的业务场景
作用:
让Jmeter按指定的吞吐量来执行,以分钟为单位
位置:
测试计划 -> 线程组 -> HTTP请求 -> 定时器 -> Constant Throughput Timer
参数介绍:
目标吞吐量:每个用户每分钟发送的请求数。
步骤:
1.添加线程组,循环次数设置为永远
2.添加HTTP请求
3.添加常数吞吐定时器
· 设置目标吞吐量:每个用户每分钟发送的请求数
· 计算方法:要求QPS*60/线程数
4.添加查看结果树
5.添加监听器,聚合报告