Jmeter官网对逻辑控制器的解释是:“Logic Controllers determine the order in which Samplers are processed.”。
意思是说,逻辑控制器可以控制采样器(samplers)的执行顺序。由此可知,控制器需要和采样器一起使用,否则控制器就没有什么意义了。放在控制器下面的所有的采样器都会当做一个整体,执行时也会一起被执行。
JMeter逻辑控制器可以对元件的执行逻辑进行控制,除仅一次控制器外,其他可以嵌套别的种类的逻辑控制器。
2.逻辑控制器分类JMeter中的Logic Controller分为两类:
(1)控制测试计划执行过程中节点的逻辑执行顺序,如:Loop Controller、If Controller等;
(2)对测试计划中的脚本进行分组、方便JMeter统计执行结果以及进行脚本的运行时控制等,如:Throughput Controller、Transaction Controller。
首先我们来看一下JMeter的逻辑控制器,路径:线程组(用户)->添加->逻辑控制器(Logic Controller);我们可以清楚地看到JMeter5中共有17个逻辑控制器,如下图所示:
如果上图您看得不是很清楚的话,宏哥总结了一个思维导图,关于JMeter5的逻辑控制器类型,如下图所示:
通过以上的了解,我们对逻辑控制器有了一个大致的了解和认识。下面宏哥就给小伙伴或则童鞋们分享讲解一些通常在工作中会用到的逻辑控制器。
4.常用逻辑控制器详解这一小节,宏哥就由上而下地详细地讲解一下常用的逻辑控制器。
4.1Critical Section Controller我们先来看一下,官方原汁原味的解释:The Critical Section Controller ensures that its children elements (samplers/controllers, etc.) will be executed by only one thread as a named lock will be taken before executing children of controller.
宏哥这个二把刀的翻译,给你们翻译一下这段鸟语看看到底是什么意思,大致意思是: Critical Section Controller(临界区控制器),确保它的子元素(samplers /控制器等)在执行控制器的子程序之前只执行一个线程作为指定的锁。呵呵!看到这句话是不是觉得一头雾水啊,摸一摸自己所剩无几的头发陷入沉思中.....没有关系的,不要纠结了,宏哥后边会用具体实例讲解一下,看完实例后,再回过头来阅读这句话,你就会恍然大悟了。
1、我们先来看看这个Critical Section Controller长得是啥样子,路径:线程组 > 添加 > 逻辑控制器 > 临界部分控制器,如下图所示:
2、关键参数说明如下:
Name:名称,可以随意设置,甚至为空;
Comments:注释,可随意设置,可以为空;
Lock name:锁名称,这里可以填入其子节点下执行的线程的名称,这个线程作为一个全局锁存在
4.1.1实例讲解这部分主要是通过配合实例我们来理解一下开始那句话到底什么意思。
1、宏哥这里先说一个访问宏哥博客园的JMeter系列文章的测试场景:我们第一步首先要访问博客园的首页,第二步找到宏哥的访问宏哥博客园的首页,第三步点击JMeter类别。按顺序完成三步,才能完成这个测试场景。那么我们根据这个场景用JMeter来添加多个请求的取样器。如下图所示:
2、脚本调试是通了,运行JMeter,查看结果树,如下图所示:
3、从上个图,查看结果树中显示请求结果数据不是按照顺序请求,不符合预期,这个时候增加一个critical section controller(临界部分控制器),增加一个锁,就能控制执行顺序。如下图所示: