Logic Controller(逻辑控制器)

Posted zhuzhaoli

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Logic Controller(逻辑控制器)相关的知识,希望对你有一定的参考价值。

逻辑控制器主要用来控制采样器的执行顺序,仅对其子节点的逻辑控制器和采样器其作用。

1.Simple Controller(简单控制器)

简单控制器主要用来组织其他逻辑控制器和采样器,该采样器不具有逻辑控制功能。

如下:把两个Ant Http Request和两个Log4J Http Request分别放在两个Simple Controller中,执行顺序为Ant Home Page,Ant News Page,Log Home Page,Log History Page。

技术分享图片

2.Loop Controler(循环控制器)

循环控制器指定子节点循环的次数,如果线程组中设置了循环次数,则子节点采样器执行的数量为循环控制器数量乘以线程组中设置循环次数。

如下:Jakarta Users设置的循环数量为1,Loop Controller设置的循环次数为3,则Home Page执行的次数为1次,News Page执行的次数为3次。

技术分享图片

3.Once Only Controller(仅一次控制器)

用来控制每个线程只执行一次该控制器下的采样器,如果该控制器在Loop Controller的子节点,则不论Loop Controller设置循环次数为多少次,则Once Only Controller在一个线程只允许一次,如果Thread Group的循环次数设置为多次,而Once Only Controller在Loop Controller的子节点,则Once Only Controller执行循环的次数。一般该控制器用来控制登录,因为通常一个线程只需要登录一次。

a)Loop Controller循环次数为5次,Once Only Controller只执行一次。

技术分享图片

技术分享图片

2)线程组的循环次数设置为5次,则Once Only Controller执行5次。

技术分享图片

技术分享图片

4.ForEach Controller

 ForEach Controller用来遍历变量的值,每次循环,取的值都不一样,每个变量都是使用下划线和数字扩展。

示例:

新增加配置元件,用户自定义变量,然后新增加五个用户,如下:

技术分享图片

新增加ForEach控制器:

技术分享图片

名称:为该Foreach控制器设置一个名称。

输入变量前缀:需要遍历的变量名的前缀,就是下划线前面的,如上就是username。

开始循环字段:开始编号,不包括在循环的值里面。

结束循环字段:结束编号,包含在循环的值里面。

输出变量名称:定义每次循环中我们取到值。

Add“_” before number?是否在数字前面加上下划线。

在ForEach Controller子节点添加Debug Sampler,运行测试,并查看结果,可以看到myDefValue,每次取的值都不一样。

技术分享图片

技术分享图片

5.Transaction Controller(事务控制器)

事务控制器可以产生一个额外的采样器,用来统计子节点采样器执行的总时间。

技术分享图片

说明:Generate parent sample,产生额外的采样器为父节点,如下是勾选和不勾选的区别。

技术分享图片

Include duration of timer and pre-post processors in generated sample:计算的总的时间包括定时器和前置处理器的时间。

6.IF Controller

IF Controller用来控制其子节点的元素是否执行。

示例:

在Thread Group下新增加User Defined Variables,然后添加五组数据:

技术分享图片

在Thread Group下新增加ForEach Controller,配置如下:

技术分享图片

在ForEach Controller下新增加If Controller,配置如下:

技术分享图片

说明:在JMeter4.0版本后If Controller中的表达式部分不支持直接写判断表达式,需要使用__jexl3或者__groovy计算表达式true或false。Evaluate for all children,勾选时执行子节点每个采样器时都会使用If Controller进行判断,不勾选时只在入口执行一次If Controller。

在If Controller下新增加HTTP Request采样器:

技术分享图片

运行测试,可以看到只有username为boxiaoyuan时才运行登录请求:

技术分享图片

7.Switch Controller

Switch Controller可以根据Switch中设置的值来决定执行子节点的测试元件,有两种方式可以指定,一种是使用索引,从0开始;一种是使用测试元件的名称。

如下,第一个结果为Switch控制器中的Switch Value设置为1,第二个结果为Switch控制器中的Switch Value设置为搜狗。

技术分享图片

8.Throught Controller(吞吐量控制器)

吞吐量控制器用来控制子节点测试元素的执行频率,有两种方式,一种是按照百分比的方式;一种是按照数量的方式。

技术分享图片

假设线程组设置线程数位2,循环数为4,控制器1设置的吞吐量为百分之50,即所有用户的百分之50,2*4*0.5=4;控制器2设置的吞吐量为3次,即所有用户3次。

技术分享图片

现在勾选控制器1的Per User,即每个用户百分之50,4*0.5*2=4,勾选控制2的Per User,即每个用户3次,两个用户就是6次。

技术分享图片

技术分享图片

 

以上是关于Logic Controller(逻辑控制器)的主要内容,如果未能解决你的问题,请参考以下文章

Jmeter之逻辑控制器(Logic Controller)

Jmeter之逻辑控制器(Logic Controller)

Jmeter之逻辑控制器(Logic Controller)

Jmeter----逻辑控制器(Logic Controller)

Jmeter的逻辑控制器

Jmeter系列(14)- 逻辑控制器Logic Controllers 的入门介绍