参考技术A
1,交替控制器
交替控制器下的请求主要和线程组下的请求或者其他控制器下的请求交替运行。例如:
@1,我们创建一个线程组,循环5次,如图所示:
@2,在线程组下添加一个交替控制器,里面加入3个请求,在线程组下加入一个请求,如图所示:
@5,再次运行,查看结果:
总结:交替控制器类似于代数中的分离同类项。(A+B+C) M = (A M + B M +C*M),你理解了吗?
2,一次控制器
一次控制器不管怎么循环,只运行一次。
我们可以在@5的基础上添加一个仅一次控制器,运行如图所示:
3,随机控制器
顾名思义,随机控制器就是对其下的请求随机运行,可以是任意一个:如图:
4,简单控制器
简单控制器其实没任何作用,就是一个分组,下边可以添加请求,也可以嵌套其他控制器。
5,随机顺序控制器
随机顺序控制器是该控制器下的所有的请求都执行,但是先后顺序随机。随机控制器是指每次循环随意执行其中一个请求
6,循环控制器
最常用的一个控制器,没什么特别之处,输入循环次数,按照请求顺序依次执行循环次数。
7,事务控制器
事务控制器并没有啥实质性的作用,和简单控制器的作用差不多,分组。Generate Parent Sample:如果选中,则生成样本作为其他样本的父项,否则样本将作为独立样本生成。使用根据自己需求使用。
nclude duration of timer and pre-post processors in generated sample:是否在生成的样本中包括计时器,预处理和后处理延迟。默认值为false。一般不建议选择,因为选择会把一些额外时间算入总时间
勾选则会把其他时间算入事务总数:
逻辑控制器下一共16个控制器:
1、foreach controller循环控制器
定义变量数组,按数组遍历循环
2、simple controller 简单控制器
不改变元件的执行顺序,指定了一个执行单元;
3、include controller
导入外部的测试片段,不能有线程组,只能包含简单控制器及控制器下的元件;
4、runtime controller
控制其子元件的执行时长;
runtime默认为1,去掉1则默认为0,此时不执行其节点下的元件;
5、switch controller
switch条件控制器,指定运行的取样器编号,该节点下的元取样器从0排序,编号是多少,则执行该取样器;
如果指定的编号超出了节点数或者不指定,则运行第0个取样器。
也可指定取样器名称,此时大小写、空格都敏感;
如果匹配不上,则不运行取样器;
6、while controller
其节点下的元件将一直运行直到while条件为false;
另外提供以下三个常量:
Blank:当循环中有取样器失败后停止;
LAST:当循环中有取样器失败则不进入循环;
Otherwise:当判断条件为false时停止循环;
7、interleave controller交替控制器
其节点下的取样器会交替执行;即控制器下有三个取样器,则第一次循环只执行第一个取样器;循环第二次时执行第二个取样器;
8、once only controller仅一次控制器
此控制器的子元件只运行一次,即使把仅一次控制器放在循环控制器下面,也只是运行一次;
9、throughput controller
用来控制其下元件的执行次数,并无控制吞吐量的功能;
详情见P93;
10、if controller条件控制器
通过某个条件来控制此节点下的元件是否运行。
可直接取值truefalse的变量,也可通过语句取得的值;
11、module controller模块控制器
在当前测试计划中引入新的测试片段;
12、random controller随机控制器
节点下的元件随机运行,与交替控制器不一样的是节点下的元件运行顺序不定;
13、random order controller
其节点下的元件随机执行,不过每个元件只执行一次,顺序是随机的;
14、loop controller
控制在其节点下的元件的执行次数;
如果在线程组中也设置了执行次数,则循环控制器下元件的执行次数是:线程组执行次数*循环控制器执行次数;
15、recording controller录制控制器
录制的时候用到的。当我们用JMeter代理进行录制时,录制的脚本默认放在此控制器的节点下面;
16、transaction controller事务控制器
可把其节点下的取样器执行消耗时间累加在一起;同时我们把每一个取样器的执行时间进行统计;
如果事务控制器下的取样器有多个,那么只有每一个取样器都运行成功了,整个事务控制器定义的事务才算成功,这是充分必要条件。
参考文献:
《全栈性能测试修炼宝典 JMeter实战》