jmeter5.2版本 配置元件之逻辑控制器详解

1、简单控制器(Simple Controller)

作用:将多个请求放置在一起,但是没有逻辑上的操作,进行一个简单的分组,一般是由于分组后的请求需要进行统一的某个操作或者存在共同的因素。在简单控制器下可添加http请求,也可添加其他控制器组合使用。

2、循环控制器(Loop Controller)

作用:指定其子节点运行的次数,可以使用具体的数值(如下图,设置为5次),也可以使用变量值。

通过变量的方式定义循环次数:

引用定义的变量:实现变量循环。

如果同时设置了线程组的循环次数和循环控制器的循环次数,那循环控制器的子节点运行的次数为两个数值相乘的结果:

验证1:结果为乘积:

验证2:

3、仅执行一次控制器(Once Only Controller)

作用:在测试计划执行期间,该控制器下的子节点对每个线程只执行一次,登录场景经常会使用到这个控制器。

在测试计划执行期间,该控制器下的子结点对每个线程只执行一次,登录场景经常会使用到这个控制器。

将Once Only Controller作为Loop Controller的子节点,在线程组循环下Once Only Controller在每次循环的第一次迭代时均会被执行。

4、循环控制器(ForEach Controller)

作用:ForEach控制器一般和用户自定义变量一起使用,其在用户自定义变量中读取一系列相关的变量。该控制器下的采样器或控制器都会被执行一次或多次,每次读取不同的变量值。与循环控制器(Loop Controller)相比虽然都是循环控制器,但不同的是循环控制器(Loop Controller)的循环次数是事先知道的指定的,而循环控制器(ForEach Controller)的循环次数是与变量以及配置项设置有关。关于设置项详细说明:

  • Input Variable Prefix:输入变量前缀
  • Output variable name:输出变量名称,也可以被其他的元件进行使用。
  • Start index for loop(exclusive):循环开始的索引(这里如果不填写,默认从1开始,如果没有1开始的变量,执行时会报错)
  • End index for loop(inclusive):循环结束的索引
  • Add”_”before number:输入变量名称中是否使用“_”进行间隔。

 也可以听过指定用户自定义变量中下标的方式:

5、事务控制器(Transaction Controller)

作用: 事务控制器会生产一个额外的采样器,用来统计该控制器子结点的所有时间。关于设置项详细说明:

  • Generate parent sample:(是否生成父采样,直观的说就是会将所有的子采样囊括在这个采样器下方便管理查看。选中这个参数结果展示如下图1部分:红框,否则显示为下图蓝框)
  • Include duration of timer and pre-post processors in generated sample:选中这一项会统计定时器(timer)的时间,否则只统计采样器(sample)的时间,如下图2部分。

 

 注意:上述说的load time总是会大于实际的时间,之所以会有这个主要依赖于软件系统时间的分辨率这个是没有办法避免的。同时如果当中有某个子采样失败了,那么这个事物控制器也会是失败的。

6、If 控制器(If Controller)

作用:根据给定表达式的值决定是否执行该节点下的子节点,如果条件为真将会执行If 控制器下的脚本,否则不执行。配置项详解:

  • Interpret Condition as Variable Expression?:选中这一项时表示:判断变量值是否等于字符串true(不区分大小写)
  • Evaluate for all children:如果选中这一项,在每个子结点执行前都会计算表达式 

勾选Interpret Condition as Variable Expression?:程序只会判断当前的变量是否与字符串true相等,忽略大小写问题。

或者直接是表达式:

使用案例1:ForEach Controller+User Defined Variables+If Controller

原文地址:https://www.cnblogs.com/wzx1blog/p/13123879.html