逻辑控制器可以控制采样器的执行顺序,所以控制器需要和采样器一起使用
Jmeter中的逻辑控制器分为两类
1、控制测试计划执行过程中节点的逻辑顺序,如循环控制器、If控制器
2、对测试计划中的脚本进行分组,方便Jmeter统计执行结果以及进行脚本的运行时控制,如事务控制器、吞吐量控制器
逻辑控制器类型
一、简单控制器
作用:这是Jmeter最简单的控制器,它可以组织我们的采样器和和其他逻辑控制器,相当于分组,提供一个块的结果和控制,并不具有任何的逻辑控制或运行时的功能
二、循环控制器
作用:指定其子节点运行的次数,可以使用具体的数字,也可以使用变量
如果同时设置了线程组的循环次数和循环控制器的循环次数,那循环控制器的子节点运行次数为线程组循环次数*循环控制器循环次数
三、仅一次控制器
作用:在测试计划执行期间,该控制器下的子节点对每个线程组只执行一次
如果将仅一次控制器作为循环控制器的子节点,那么仅一次控制器在每次循环的第一次迭代时均会被执行
四、ForEach控制器
作用:ForEach控制器一般和用户自定义变量一起使用,其在用户自定义变量中读取一系列相关的变量。该控制器下的采样器或控制器都会被执行一次或多次,每次读取不同的变量值
参数:
输入变量前缀,即用户定义变量的前缀
循环开始的索引(不包含),如果不填写,默认从1开始,如果没有从1开始的变量,执行时会报错
循环结束的索引(包含)
输出变量名称,其他地方可以通过${变量名称}进行调用
输入变量名称中是否使用“_”分隔
比如用户定义的变量如下:
五、事务控制器
作用:事务控制器会产生一个额外的采样器,用来统计该控制器下所有子节点的时间
Generate parent sample:生成父取样器,不勾选时,事务控制器添加在其采样器后面;勾选时,事务控制器是作为其下采样器的父采样器,效果见如下图
Include duration of timer and pre-post processors in generated sample:勾选后会统计定时器的时间和前后生成采样器的时间,否则只统计采样器的时间
六、如果(If)控制器
参数:
Interpret Condition as Variable Expression:判断变量值是否等于字符串true,不区分大小写
Evaluate for all children:勾选后,在每个子节点执行前都会计算表达式
七、Switch控制器
作用:Switch控制器通过给该控制器中的value赋值,来指定运行哪个采样器,有两种赋值方式
第一种通过数字赋值,Switch控制器下的子节点从0开始计数,通过指定子节点所在的数值来确定执行哪个元素
第二种是直接指定子元素的名称,比如采样器的名称来进行匹配,当指定名称不存在时,不执行任何元素
当value为空时,默认执行第一个子节点元素
八、吞吐量控制器
作用:控制其下的子节点的执行次数与负载比例分配,有两种方式
Total Executions:设置运行次数
Percent Executions:设置运行比例(1~100之间)
九、随机控制器
作用:随机执行其下某个子节点
十、随机顺序控制器
作用:按随机顺序,执行其下的所有子节点
十一、Runtime控制器
作用:用于控制该控制器下的取样器或控制器的运行时间,单位秒