Jmeter中的逻辑控制器分为两类:一类是来控制测试计划执行过程中节点的逻辑执行顺序。如:Loop Controller、If Controller等,一类则与节点的逻辑执行顺序无关,用于对测试计划中的脚本进行分组,方便Jmeter统计执行结果以及进行脚本的的运行时控制,如:ThroughputController、TransactionsController.
1、Loop Controller
循环控制器可以控制在其节点下的元件的执行次数。
如果在线程组中也设置了执行次数,那么循环控制器下的元件的执行次数是:线程组执行次数*循环控制器的执行次数。比如线程组设置执行3次,循环控制器设置执行次数6,总执行次数为18
参数说明:
Loop Count:设置成Forever 或填写具体执行次数
场景:
一个用户登录系统成功后,一上午都在忙物流计划(plan)。模拟次业务过程登录一次后,然后就一直做物流计划,对plan可以设置Loop controller实现反复操作
2、Once Only Controller
一次控制器,也就是此控制器下的子元件只运行一次,即使把仅一次控制器放在循环控制器下面,也只能运行一次
场景:在模拟请求时有时只需登录一次,就可以把登录的部分放在一次性控制器下
3、ForEach Controller
循环控制器和用户自定义变量有关,设置的参数个数就是循环执行的次数
参数说明:
Input variable prefix:输入变量前缀,可以在“用户自定义变量”中定义一组变量,循环控制器可从中获取到变量对应的值,然后作为循环控制器的循环条件,还可输出变量作为取样器的参数。
Start index for loop:循环变量下标的起点
End index for loop:循环变量下标的终点
Output variable name:输入变量名称,循环控制器生成的变量名称。
Add “”before number?:变量前缀后是否加“”作为分隔符
应用:
1、添加一个User Defined Variables
2、ForEach Controller 设置对应参数
ForEach Controller 循环name_1/2/3,输出变量名称是username,其中名称、输入变量名称、输出变量名称是必须的
场景:
在订单查询页面查询订单号,然后对每一条订单出库,此时需要遍历每一条订单,可以把订单号作为循环条件操作。
4、Transaction Controller
事务响应时间使我们衡量业务性能的主要指标,事务控制器可以把其节点下的取样器执行消耗的时间累加在一起,便于我们统计。同时我们对每一个取样器的执行时间进行统计。
如果事务控制器下的取样器有多个,那么只有每一个取样器都运行成功了,整个事务控制器定义的事务才算成功,这是充分必要的条件。
参数说明:
Generate Parent sample:是否生成一个父取样结果
Include duration of timer and pre-post processors in generated sample:是否包含定时器,选中将在取样器前与后加上延时。
5、If Controller
条件控制器,可以通过某个条件来控制此节点下的元件是否运行,condition可以使用JavaScript与变量表达式。
参数说明:
Condition:判断条件
Interpret Condition as Variable Expression?:Condition使用变量表达式来设置条件,结果返回TRUE时执行节点下的元件
Evaluate for all children:判断条件是否针对所有的子节点,默认不勾选,只在if controller入口执行一次
6、Runtime Controller
用来控制其子元件的执行时长
参数说明:
Runtime(seconds):默认为1,去掉1默认为0,此时不执行其节点下的元件
7、Switch Controller
Switch 条件控制器,指定运行的取样器编号为0(Jmeter会给节点下的取样器顺序编号,第一个取样器“http”编号为0,第二个编号1,所以指定0就会运行第一个请求)。如果指定的编号超出了下面的节点数或者不指定,则运行第0个取样器。另外也可以指定取样器名称,名称匹配时大小写及空格都敏感,如果匹配不上则不运行取样器。
参数说明:
Switch Value:匹配值,可以为数字也可以为字符。为字符时匹配取样器名称,匹配不上就会默认并找取样器为default的取样器,如果没有则不运行。
8、While Controller
条件控制器,其节点下的元件将一直运行到while条件为false。
参数说明:
Condition:接受变量表达式与变量
Blank:当循环中有取样器失败后停止
LAST:当循环前有取样器失败则不进入循环
Otherwise:当判断条件为false时停止循环
其他控制器:
Interleave Controller
Throughput Controller
Random Controller
Random Order Controller
Recording Controller