0
点赞
收藏
分享

微信扫一扫

【jmeter逻辑控制器概览】

一、说明

Jmeter官网对逻辑控制器的解释是:“Logic Controllers determine the order in which Samplers are processed.”。意思是说,逻辑控制器可以控制采样器(samplers)的执行顺序。由此可知,控制器需要和采样器一起使用,否则控制器就没有什么意义了。 不同的逻辑控制器可以实现不同的效果,我们在实际测试中,需要根据自己当前的测试场景,来选择合适的逻辑控制器。

二、逻辑控制器类型及用法

1、简单控制器

仅用作将采样器及其相关逻辑控制器等放在一起,组成一个整体结构便于管理和维护,并不具备任何的逻辑控制或者运行时的功能

2、循环控制器

【jmeter逻辑控制器概览】_逻辑控制

  • 指定其子节点在线程组运行一次的过程中运行的次数,可以使用具体数字,或者使用变量,设置多少次,就循环多少次
  • 勾选永远,就会一直循环

3、仅一次控制器

在测试计划执行期间,该控制器下的子节点对每个线程只执行一次

4、forEach控制器

可以根据用户的多个变量依次被循环调用,直到最后一个变量被调用即结束循环。
一般需要配合‘用户定义的变量’来使用,作用是参数化
下面我们来看下具体用法。

【jmeter逻辑控制器概览】_逻辑控制_02

添加forEach控制器:

【jmeter逻辑控制器概览】_子节点_03

  • 输入变量前缀:变量的前缀;如要使用的变量为name_1,则需要填name。
  • 开始循环字段(不包括):从X+1号的变量开始,X为第几个变量;如填0,实际从第一个开始。
  • 结束循环字段(包括):到X的变量结束,X为第几个变量;如填4,实际到第4个
  • 输出变量名称:将要用来使用的变量名
  • Add“”before number?(数字之前加上下划线“”):用户定义的变量有没有下划线分隔编号,最好还是勾上比较方便标识;

设置完成后,我们在forEach控制器下添加一个调试取样器,来展示取到的变量的值。并添加察看结果树,查看结果

【jmeter逻辑控制器概览】_子节点_04

可以看到,线程组运行一次,forEach控制器下引用变量的取样器,每个符合条件的变量都会被执行一次

5、事务控制器

  • jmeter中,默认一个取样器,执行一次,就是一个事务
  • 可以把多个取样器执行一次请求,合并成一个事务, 就可以模拟用户一个真实操作行为
  • 勾选: generate parent sample,在聚合报告中,事务中的所有取样器会被总体展示

【jmeter逻辑控制器概览】_逻辑控制_05


6、如果(If)控制器

适用于满足某项条件才去执行某些取样器的场景

6.1 默认情况: 用 jexl3 或 groovy函数, 函数的运算结果为真时, 才会去运行子集的取样器。

条件格式:${__jexl3(条件表达式)}
示例

== 是否等于,如${__jexl3(${VAR}==1,)},判断${VAR}变量是否等于1
!=不等于,如${__jexl3(${VAR}!=1,)},判断${VAR}变量是否不等于1
!非,如${__jexl3(!(${VAR}!=1),)}${VAR}!=1的结果取反
&&||且与或,如 ${__jexl3(${VAR}==1 && ${name} != "heima",)}
> 或者>== 大于等于,如${__jexl3(${count}>=10,)}

6.2 如果直接写表达式,去掉 interpret condition as variable expression 复选勾

【jmeter逻辑控制器概览】_采样器_06

直接写表达式

  • 表达式为真,则执行控制器下的取样器
  • 表达式为假,则不会执行控制器下的取样器

7、交替控制器

同一线程的多次循环,会交替执行控制器下的取样器,自上而下每次一个,如果全部执行后会循环执行

8、随机控制器

子节点的取样器,随机执行一个

9、随机顺序控制器

子节点的取样器的执行顺序随机

10、Switch控制器

Switch控制器作用:Switch控制器通过给该控制器中的Value赋值,来指定运行哪个采样器。

【jmeter逻辑控制器概览】_逻辑控制_07

有两种赋值方式:

  • 第一种是数值,Switch控制器下的子节点从0开始计数,通过指定子节点所在的数值来确定执行哪个元素,可以和random函数配合使用。
  • 第二种是直接指定子元素的名称,比如采样器的Name来进行匹配。当指定的名称不存在时,不执行任何元素。
  • 当Value为空时,默认执行第1个子节点元素。



举报

相关推荐

0 条评论