一 前言
环境:
Jmeter 5.3 window 10
本篇继续记录逻辑控制器
二 逻辑控制器
1 吞吐控制器
按照官方的说法,此控制器的命名并不正确,因为它并不直接控制吞吐量
该控制器用来控制其子节点的执行的频率,有两种模式
- 执行百分比
- 执行次数
未勾选per user的情况下,假设线程组那里配置循环10次线程数为1 或线程数为10 循环1
百分比那里填写20 则控制器下的子节点只会执行2次
执行次数填写3 则控制器下的子节点只会执行3次
勾选per user时 只有配置为总执行次数才有效,配置百分比无效
而且只有 线程组配置里的每个线程的循环次数>吞吐数时才会生效,每个线程的执行次数为吞吐数
每个线程的循环次数<=吞吐数时,每个线程的执行次数为 线程组配置的的循环次数
线程组那里配置线程数为10
注意:官方提醒,该控制器与其它控制器结合使用,很可能会变得非常复杂,但如果结合运用用得比较好,也能也非常好的效果
个人认为,无论什么控制器,尤其是控制执行频率的控制器结合在在一起使用,都很可能变得异常复杂,产生一个意外的效果
1.1 示例
例1
例2
例3
结果
例4
结果
2 事务控制器
事务控制器的作用:自行生成一个代表该控制器的sampler,以便统计其子节点(默认只会统计其子节点中所有sampler)在执行时所花费的总时间
如
查看聚合报告
结果数
注意:报告中控制器所代表的总数据是可能大于其子节点的数据总和的
关于食物控制器的选项
Generate Parent Sample:选中的话 ,控制器所生成的sampler会作为父节点,在结果树中,控制器和其子节点会按照层级嵌套显示,在聚合报告等其他监听器中,只会显示控制器生成的sampler所代表的总的数据,不会显示子节点的数据。 未选中的话,就像上面示例样,控制器与其子节点会平行显示出来
Include duration of timer and pre-post processors in generated sample:
勾选的话,控制器所代表的sampler会包含其子节点中定时器、预处理器与后置处理器所执行的时间。不勾选的话就是默认统计子节点中所有sampler所执行的时间
勾选Generate Parent Sample后监听器的变化
3 运行时间控制器
3.1 例子
3.1.1 例1
由上可知,在配置时间内,该控制器会让子节点重复运行,有点像循环控制器,循环控制器是通过控制次数,而它则是控制时间
3.1.2 例2
运行时间配置成0
由上可知 时间为0时,控制器下的节点根本为执行
4 while控制器
类似编程语言中的while判断与循环,会一直运行其子节点
条件输入框有种可填
- 空白(不填):控制器子节点最后一个sampler失败时推出循环
- LAST:有和空白一样的效果,除此外,进入循环前的最后一个sampler失败时也不会进入循环
- 计算结果为False的任何变量与函数:计算结果为False时推出或不进入循环
注意:所谓失败,指代断言失败或者请求不成功导致的失败
4.1 例子
4.1.1 例1
如上,控制器子节点的最后一个sampler失败后就会退出循环
上面如果把百度3和百度4调换一下位置,则百度2 3 4就会一直循环执行下去
4.1.2 例2
结果
可以看到while循环器下的节点并未执行
4.1.3 例3
把之前例2稍微改下
刚开始loop定义为False
在 while之前的sample的后置处理器中 把loop改为True
在循环器下的第2个sampler的后置处理器中再次把loop改为False
在下面一个sampler的名称中加上变量或者加一个debug sampler判断之前beanshell处理是否正确
结果
可以看到,在while循环中 并不是判断条件变为False后就马上推出循环,而是再次回到循环判断时来判断是否推出循环
标签:控制器,执行,逻辑,循环,线程,sampler,Jmeter,节点 From: https://www.cnblogs.com/MyRecords/p/17985112