参考资料:官网
逻辑控制器控制Samplers执行的顺序;作用域是具体逻辑控制器元件的子节点,就是说放在控制器下面的所有的采样器都会当做一个整体,均受逻辑控制器控制。
jmeter提供了多样的逻辑控制器,如下图:
jmeter共提供17个逻辑控制器,下面逐个介绍
Jmeter里最简单的一个控制器,它可以组织采样器和其它的逻辑控制器(分组功能),提供一个块的结构和控制,并不具有任何的逻辑控制或运行时的功能,对jmeter测试运行没有任何影响。
例如将业务逻辑和监听器分别放入不同的组用来维护脚本,groupA用来存放控制逻辑控制器和具体sampler,groupB用来存放所有的监听器。
指定其子节点运行的次数
这里的设置类似线程组中的设置,Forever选项:勾选上这一项表示一直循环下去,直至计划结束或者人为结束,再或者异常结束。
如果清空loop count对应的数值,当离开该节点后,后自动勾选forever。
如果loop count中设置的是非数字,则不会运行。
如果同时设置了线程组的循环次数和循环控制器的循环次数,那循环控制器的子节点运行的次数为两个数值相乘的结果。
在测试计划执行期间,该控制器下的子结点对每个线程只执行一次,在整个测试计划中同一个线程的多次请求会被跳过。
Once Only Controller总是在任何循环父控制器的第一次迭代中执行,因此,如果once only controller放入loop controller中并设置循环次数为5,once only Controller只会在第一次迭代的时候执行一次;若在loop Controller的父级元素(这里是threadGroup)中设置循环次数,那么once only Controller会被执行父级的总循环次数
例1:分别设置threadgroup运行1次和2次,父子关系如图
例2:once only Controller的所在循环的父级共执行10次(2*5),once only Controller执行10次
交替控制,使得该控制器包含的取样器步骤交错执行在每个循环中。
忽略子控制器模块(Ignore sub-contorller blocks):如果勾选此项,交错控制器将sub-controllers像单一请求元素一样,一次只允许一个请求/控制器
用线程交替:多线程请求,通过求情的线程控制交替
例1:简单的两个请求交替
例2:配合控制块完成复杂交替若有交替操作的有多个请求,请使用simple Controller
例3:勾选Ignore sub-contorller blocks(顺便演示3个请求块交替)
可以嵌套完成更复杂的混合交替
类似交替控制器,但该控制器随机选取某一个取样器请求(或者一个块)并执行,不是轮询而是随机,完全可以参考interleave controller
从例子的结果看啊3个分组是没有按顺序执行,而是没有规律的随机执行
随机顺序控制器类似简单的控制器,它会一次执行每个子元素,但是节点的执行顺序是随机的(正常的情况下是依次按顺序执行)
从例子的结果看,simpleController中的sampler是按顺序执行的,randomOrderController中的sampler是乱序的(为了更好看出结果的差异,可以多执行几次,或者在外部加入循环控制器)
控制方式有两种:
Throughput:设置具体值
Per User:每个用户
如果勾选此项,控制器在每个用户(线程)的基础上计算是否应该执行;否则计算所有用户(线程)
例1:设置线程组循环10次,throughput Controller的控制策略设置Total Executions为1,最终throughput控制的sampler只执行一次
例2:将上述用例做修改Throughput Controller的控制策略设置Percent Executions为20,结果执行2次
例:设置runtime为5秒(设置太大结果过多不好演示),在sampler的name中加入时间
有点变成知识的都懂得,if是条件判断。根据给定表达式的值决定是否执行该节点下的子节点,默认使用javascript的语法进行判断。
condition:表达式,true/false。若结果不是boolean值,认为是false
Interpret Condition as Variable Expression:是否判断变量值是否等于字符串true(不区分大小写)
Evaluate for all children:是否在每个子结点执行前都会计算表达式
默认情况下,条件只在初始条目上进行一次评估,但是可以选择对控制器中包含的每个可运行元素。
循环控制器的一种:while(condition表达式) action 。根据给定表达式的值决定是否执行该节点下的子节点。
blank - 当取样器发生错误时,退出循环
LAST - 当取样器发生错误时,退出循环.如果在循环前面的取样器失败,不进入循环
Otherwise - 当条件是false时退出循环
jmeter应用—逻辑控制器(一)
jmeter应用—逻辑控制器(二)
原文连接 http://blog.csdn.net/yue530tomtom/article/details/78658890