jmeter逻辑控制器详解(2)

逻辑控制器

8、Runtime Controller

运行周期控制器,顾名思义,这是一种设置运行时间的控制器,它的效果就是使该控制器下的子项运行时间为【Runtime】中的数值(单位:s)。

Runtime Controller】的运行时间为【Runtime】的值乘以线程组循环次数。

这里循环次数设置为2,时间为2秒:

9、bzm - Weighted Switch Controller

权重开关控制器(直译),它能分配其子项目(Child Item)的权重,从而控制子项的执行概率。首先建立如下的脚本结构:

在bzm - Weighted Switch Controller下有两个HTTP请求,将它们的Weight设置为6和4,线程数设为2,线程组循环次数设为10,当脚本运行结束后,观察聚合报告

10、Random Order Controller

随机顺序控制器,与简单控制器类似,会执行它下面的每个子项,只不过执行顺序是随机的。

11、Random Controller

随机控制器,当该控制器下有多个子项时,每次循环会随机执行其中一个。建立下图的脚本结构
运行脚本,结果如下:

随机控制器有一个参数项:Ignore sub-controller block(忽略子控制器模块)。如果勾选了此项,随机控制器下的子控制器中的多个子项只会被执行一个,

勾选【Ignore sub-controller block】后再次运行脚本,结果变为:

12、Interleave Example

交替控制器,使得该控制器包含的取样器步骤在每次循环中交替执行。例如下面的脚本结构,将线程组循环次数设为6并运行。

结果如下:

勾选【Ignore sub-contorller blocks】后再次运行:

区别很明显,勾选了【Ignore sub-contorller blocks】后,交替控制器子控制器中的取样器一次运行只会被执行一个。

13、Module Controller

模块控制器,可以理解为对封装好的模块的调用。

14.Critical Section Controller

临界区控制器,这个名字听起来很难理解,其实这个控制器的作用是为它的子项加一个同步锁,使得在多线程场景下,同一时刻,只有一个线程能够调用其子项。

然后设置线程组线程数为1,循环次数为10,设置固定定时器线程延迟为1000ms

运行后,观察结果树和聚合报告,可以观察到,HTTP请求是1s中被执行一次,因此Critical Section Controller的线程同步锁作用得到验证。

原文地址:https://www.cnblogs.com/mumulog/p/11320204.html