jmeter(11)-从入门到精通-逻辑控制器(下)
4.1Interleave Controller
交替控制器,顾名思义是:互相交替,其节点下的取样器交替执行。根据被控制器触发执行次数,去依次执行控制器下的子节点<逻辑控制器、采样器>。被触发执行可以由线程组的线程数、循环次数、逻辑控制器触发。
2、关键参数说明如下:
Name:名称,可以随意设置,甚至为空;
Comments:注释,可随意设置,可以为空;
Ignore sub-controller blocks:忽略子控制器,即子控制器失效,由交替控制器接管。
勾选后,会无视节点下的所有控制器<交替控制器、随机控制器例外>,将每个取样器作为一个单独字节点执行
不勾选忽略子控制器,交替执行时,节点下次一级每个取样器、逻辑控制器都认为是一个单独子节点来交替执行。
Interleave across threads: 勾选此项,则交替控制器下的请求将应用至所有线程和循环中迭代。如有四个请求,三个线程,两轮循环,那么第一轮三个线程分别运行请求1,请求2,请求3,第二轮循环的三个线程运行请求4,请求1,请求2。
允许跨线程交替执行,勾选后,当线程组线程数大于1时,当前线程首次执行会根据线程数顺序进行交替,后续执行按自己所属线程的上一个次的执行的位置交替,如: 交替控制器下由A B C D E 5个接口, 设置线程组 线程数3个,循环4次,则最终执行结果为 线程1执行 A B C D 线程2执行 B C D E 线程3执行 C D E A 。
实例:
4.2Once Only Controller
在每个线程内,该控制器下的内容只会被执行一遍,无论循环多少次,都只执行一遍。<嵌套在循环控制器之内时是个例外,每个线程组循环都会被执行一遍>。
此控制器通常用于控制需要登录的请求,测试过程中,我们往往都只需要登录一次,获取到对应的登录信息后即可执行后续相关的请求,而不是每执行一个请求都登录一次,如将login请求放入仅一次控制器,则在线程组循环运行期间,不论循环次数设置为多少次,login请求都将仅在第一次执行时运行
2、关键参数说明如下:
Name:名称,可以随意设置,甚至为空;
Comments:注释,可随意设置,可以为空。
实例:
4.3Random Controller
随机控制器节点下的元件随机运行,与交替控制器不一样的是节点下的元件运行顺序不定。
2、关键参数说明如下:
Name:名称,可以随意设置,甚至为空;
Comments:注释,可随意设置,可以为空;
Ignore sub-controller blocks:忽略子控制器,即子控制器失效,由随机控制器接管,类似交替控制器。
实例:
4.4Random Order Controller 随机顺序控制器
随机顺序控制器其节点下的原件随机执行,不过每个元件只执行一次。
当控制器被触发时,将控制器下的所有子节点顺序打乱执行一遍,执行一遍;执行一遍,不是执行一个。
注意:是将子节点的顺序打乱,而非请求的顺序打乱,子节点可以是其他逻辑控制器。
随机控制器与随机顺序控制器名字十分接近,但两者还是有着明显的区别,可参考 上边介绍的随机控制器。
随机控制器为每次只执行节点下的一个子节点,随机顺序控制器是将节点下的所有子节点都正常执行,只是将执行顺序打乱
2、关键参数说明如下:
Name:名称,可以随意设置,甚至为空;
Comments:注释,可随意设置,可以为空。
实例:
4.5Recording Controller
其录制控制器,顾名思义是录制的时候会用到。实际上它是一个位置,当我们用JMeter代理进行录制时,录制的脚本默认放在此控制器的节点下面。没有实际的逻辑作用,我们用简单控制器也可以代替它。
2、关键参数说明如下:
Name:名称,可以随意设置,甚至为空;
Comments:注释,可随意设置,可以为空;
Forever:勾选上这一项表示一直循环下去。