一、循环控制器:设置请求的循环次数或永远循环,可用于压力测试
二、简单控制器:测试用例顺序执行
将请求分组归集在一个简单控制器中,可以理解成一个模块,使得脚本结构更清晰。对JMeter脚本运行没有实质上的影响
三、事务控制器:
将多个请求放 在同一个事务中,可以用于测试执行嵌套测试元素所花费的总时间,即相当于用户进行一系列操作的测试,只有整个事务控制器定义的事务成功,才算成功
Gegerate parent sample:聚合报告中只显示事务控 制器的数据,不会显示其中 的各个请求的数据
Include duration of timer and pre-post processors in generated sample:是否在生成的样本中包括计时器,预处理和后处理延迟。默认值为false。一般不建议选择,因为选择会把一些额外时间算入总时间
什么都不勾:
事务控制器执行时间等于两个请求执行时间之和
勾选 Gegerate parent sample:
嵌套在一起
四、仅一次控制器
解释:在循环执行中对该控制器下的请求进行执行一次,然后在接下来的循环执行中将会跳过该控制器下的所有请求
仅一次控制器对多线程不生效,它只是针对单线程
线程循环次数为3次
五、foreach控制器
输入变量前缀:需要进行遍历的变量名
开始循环字段:变量的起始值,不填写默认为1,如果变量里没有1,会报错
结束循环字段:结束的值
输出变量名称:将循环遍历出来的值赋值给输出变量
数字之前加上下划线:输入变量名称中是否使用“_”进行间隔
六、if控制器
if控制器条件满足,执行控制器下的Sampler;不满足、不填写条件,则不执行
Interpret Condition as Variable Expression?:
//在5.1.1版本中,【Interpret Condition as Variable Expression】是默认勾选的,意为【将条件解释为变量表达式】。在这种模式下,
//1!=1、1==1等条件表达式是会被一律判定为false的,这点要注意。
//${__jexl3(${COUNT} < 10)}:变量表达式判断COUNT这个变量小于10(COUNT是此控制器前被定义并赋值的);
//${__jexl3(1 == 1)}:变量表达式判断 1==1是否成立;
//${__groovy(vars.get("myVar") != "Invalid" )}:判断myVar不是无效的;
//${__groovy(vars.get("myInt").toInteger() <=4 )} :判断myInt这个变量小于等于4;
debug Sampler 响应数据 JMeterThread.last_sample_ok=true
条件设置为${JMeterThread.last_sample_ok},这是判断boolean类型,true执行,false不执行
判断条件符合执行
“${JMeterThread.last_sample_ok}”==“False”
不满足判断条件 不执行
七、随机控制器
随机该控制器下的某个sampler
八、随机顺序控制器
随机该控制器下的所有sampler
九、交替控制器
交替控制器对多线程不生效,它只是针对单线程
线程循环次数为3次
十、Runtime控制器
Runtime(seconds):设置为N,则其下所有节点的运行时间为N秒。其下所有节点,跑完一轮,耗费时间小于N秒,此时,再从头执行一边,直到执行时间等于N,跳出控制器。
一秒可以跑完的次数,超过1秒就跳出
十一、while控制器
while controller会一直运行,直到条件(condition)为false
Condition可以输入以下:
可输入变量或变量表达式
还有三个官方提供特殊用途的常量
Blank:当循环中有取样器失败后停止
LAST:当循环前有取样器失败则不进入循环
Otherwise:当判断条件为false时停止
//表达式结果为false时,退出循环。有以下情形:
//
//${myVar} :变量myVar在其它项中被赋值为false;
//${__javaScript(${C}==10)}:针对数字型变量进行对比判断,这种表达式的计算结果为false时不进入或者退出循环;
//${__javaScript("${C}"=="abc")}:针对字符串类型变量进行对比判断,这种表达式的计算结果为“false”时不进入或者退出循环(区别在于双引号);
//${__javaScript("${VAR2}"=="abcd")}:VAR2在其它项中被赋值与“abcd”做比较,不相等则退出循环;
${__javaScript(${myVar}==1)}
//${_P(property)}:属性被其它项目赋予false