jmeter 逻辑控制器Logic Controller详解

摘要:
7、 开关控制器:功能:开关控制器通过为控制器中的值分配一个值来指定要运行的采样器。

Jmeter之逻辑控制器(Logic Controller)

前言:

1、 Jmeter官网对逻辑控制器的解释是:“Logic Controllers determine the order in which Samplers are processed.”。意思是说,逻辑控制器可以控制采样器(samplers)的执行顺序。由此可知,控制器需要和采样器一起使用,否则控制器就没有什么意义了。放在控制器下面的所有的采样器都会当做一个整体,执行时也会一起被执行。

2、JMeter中的Logic Controller分为两类:

  a) 控制测试计划执行过程中节点的逻辑执行顺序,如:Loop Controller、If Controller等;

  b) 对测试计划中的脚本进行分组、方便JMeter统计执行结果以及进行脚本的运行时控制等,如:Throughput Controller、Transaction Controller。

3、Jmeter提供如下这么多的控制器:

jmeter 逻辑控制器Logic Controller详解第1张

一、简单控制器(Simple Controller):

  作用:这是Jmeter里最简单的一个控制器,它可以让我们组织我们的采样器和其它的逻辑控制器(分组功能),提供一个块的结构和控制,并不具有任何的逻辑控制或运行时的功能。 

二、循环控制器(Loop Controller):

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

  1、Forever选项:勾选上这一项表示一直循环下去

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

jmeter 逻辑控制器Logic Controller详解第2张 

三、仅一次控制器(Once Only Controller):

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

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

四、ForEach控制器(ForEach Controller):

   作用:ForEach控制器一般和用户自定义变量一起使用,其在用户自定义变量中读取一系列相关的变量。该控制器下的采样器或控制器都会被执行一次或多次,每次读取不同的变量值。如下图:

参数:

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

jmeter 逻辑控制器Logic Controller详解第3张

用户自定义变量:

  变量名前缀为ForEach Controller中Input variable prefix定义的name + 下划线(上图中我们勾选了下划线)+数字编号

jmeter 逻辑控制器Logic Controller详解第4张

执行结果:

  总共执行了3次,每次执行时会把获取到的变量值赋值给输出变量outNmae,其它地方可以通过${outNmae}进行调用。

jmeter 逻辑控制器Logic Controller详解第5张

 

五、事务控制器(Transaction Controller):

  作用: 事务控制器会生产一个额外的采样器,用来统计该控制器子结点的所有时间。

jmeter 逻辑控制器Logic Controller详解第6张

参数:

  • Generate parent sample:(选中这个参数结果展示如下图红框,否则显示为下图蓝框)
  • Include duration of timer and pre-post processors in generated sample:选中这一项会统计定时器(timer)的时间,否则只统计采样器(sample)的时间

jmeter 逻辑控制器Logic Controller详解第7张

六、If 控制器(If Controller):

   作用:根据给定表达式的值决定是否执行该节点下的子节点,默认使用JavaScript的语法进行判断(如下图红框内的文字)。

jmeter 逻辑控制器Logic Controller详解第8张

参数:

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

示例一:使用变量的方式进行判断:

jmeter 逻辑控制器Logic Controller详解第9张

示例二:选中Interpret Condition as Variable Expression?

jmeter 逻辑控制器Logic Controller详解第10张

jmeter 逻辑控制器Logic Controller详解第11张

jmeter 逻辑控制器Logic Controller详解第12张

七、Switch控制器(Switch Controller):

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

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

当Value为空时,默认执行第1个子节点元素。 

示例:

1、Switch Controller选择的值为login page

jmeter 逻辑控制器Logic Controller详解第13张

2、执行结果:

jmeter 逻辑控制器Logic Controller详解第14张

八、吞吐量控制器(Throughput Controller):

   作用:控制其下的子节点的执行次数与负载比例分配,也有两种方式:

  • Total Executions:设置运行次数
  • Percent Executions:设置运行比例(1~100之间)

 jmeter 逻辑控制器Logic Controller详解第15张

示例:

1、设置线程组循环5次:

jmeter 逻辑控制器Logic Controller详解第16张

2、Throughput Controller1的子结点执行3次:

jmeter 逻辑控制器Logic Controller详解第17张

3、Throughput Controller2的子结点执行(40% * 线程组循环次数5)= 2次:

jmeter 逻辑控制器Logic Controller详解第18张

执行结果:

jmeter 逻辑控制器Logic Controller详解第19张

九、随机控制器(Random Controller):

   作用:随机执行其下的所某个子结点

十、随机顺序控制器(Random Order Controller):

   作用:随机执行其下的所有子结点

 

下面是另外一篇文章介绍 jmeter逻辑控制器

下面是另外一篇文章介绍 jmeter逻辑控制器

1、ForEach控制器

ForEach控制器在用户自定义变量中读取一系列相关的变量。该控制器下的采样器或控制器都会被执行一次或多次,每次读取不同的变量值。所以ForEach总是和User Defined Variables一起使用。下面会以实例的形式介绍它的用法。

控制面板

jmeter 逻辑控制器Logic Controller详解第20张

参数

Name:控制器名称

Comments:备注

Input Variable Prefix:输入变量前缀

Output variable name:输出变量名称

Add”_”before number:输入变量名称中是否使用“_”进行间隔。

示例

该示例中在ForEach控制器中添加了一个HTTP请求(登录页面),需要输入用户名,密码。我们这里把用户名作为变量在用户自定义变量中设置。

jmeter 逻辑控制器Logic Controller详解第21张

User Parameter面板中设置

jmeter 逻辑控制器Logic Controller详解第22张

 

ForEach控制器面板中设置

jmeter 逻辑控制器Logic Controller详解第23张

 

HTTP请求采样器面板中设置

jmeter 逻辑控制器Logic Controller详解第24张

这样执行测试计划时,ForEach控制器会遍历User Parameter查找符合设置条件的变量名,这里就是”Name”+”_”+”循环次数”。查到符合的变量后就把值赋给输出变量(Vname)。然后就可以在ForEach控制器下的采样器或控制器中使用了,使用的格式是${输出变量名}。

运行测试计划,在“察看结果树”中就可以看到,每次请求使用了不同的参数。

 

2、包含控制器--Include Controller

包含控制器用于使用外部的Jmx文件。为了演示使用它,可以添加一个simple controller,然后在其中添加一个采样器(sample),比如一个http请求。然后把这个simple controller保存为一个jmx文件。这样在include controller中设置该jmx文件就可以在测试计划中使用了。值得注意的是,包含测试的测试计划中不能有线程组,仅仅只能有simple controller,然后其下可以添加任何采样器,控制器。

如果用户需要使用cookie manage或者 用户自定义变量,都应该在顶层的测试计划中设置,不应该包含在外部文件中,否则不会它们不会起作用。

This element does not support variables/functions in the filename field.

However, if the propertyincludecontroller.prefixis defined, the contents are used to prefix the pathname.

如果在prefix+filename的路径中找不到文件,控制器会尝试在JMX存放目录中根据文件名进行查找。

 

控制面板

jmeter 逻辑控制器Logic Controller详解第25张

 

参数

 

Attribute

Description

Required

Filename

包含的文件

Yes

 

3、Runtime Controller

 

4、Switch Controller

Switch控制器通过给该控制器中的Value赋值,来指定运行哪个采样器。有两种赋值方式:

1.第一种是数值,Switch控制器下的子节点从0开始计数,通过指定子节点所在的数值来确定执行哪个元素。

2.第二种是直接指定子元素的名称,比如采样器的Name来进行匹配。当指定的名称不存在时,不执行任何元素。

当Value为空时,默认执行第1个子节点元素。

 

控制面板

jmeter 逻辑控制器Logic Controller详解第26张

 

参数

Name:控制器名称

Switch Value:指定需要运行的子元素的名称或所处的数值。

 

示例

jmeter 逻辑控制器Logic Controller详解第27张

线程组的各参数都设置为1,switch value中设置“Login.aspx”,运行测试计划,在“view results tree”中查看结果

jmeter 逻辑控制器Logic Controller详解第28张

仅仅执行了Name为“Login.aspx”的Http请求。

 

5、While Controller

 

6、事务控制器

事务控制器会生成一个额外的采样器来测量其下测试元素的总体时间。值得注意的是,这个时间包含该控制器范围内的所有处理时间,而不仅仅是采样器的。

对于Jmeter2.3以上的版本,有两种模式的操作

•      事务采样器是添加到其下采样器后面的

•      事务采样器是作为其下采样器的父采样器。

生成的事务采样器的测量的时间包括其下采样器以及其他的一切时间。由于时钟频率的问题,这个时间可能略大于单个采样器的时间之和。时钟开始时间介于控制器记录开始时间与第一个采样器开始之间,时钟结束时间亦然。

事务采样器只有在其子采样器都成功的情况下才显示成功。

在父模式下,事务控制器下的各个采样器只有在the Tree View Listener里才能看到。同时,子采样器的数据也不会在CSV文件中显示,但是在XML文件中可以看到。

 

控制面板

jmeter 逻辑控制器Logic Controller详解第29张

 

参数

 

Attribute

Description

Required

Name事务控制器的名称Yes
Sample

如果点中,事务采样器作为其下采样器的父采样器

否则,作为额外采样器添加在子采样器的后面

Yes

 

示例

其中线程组中设置1个Users,1 Loop。

jmeter 逻辑控制器Logic Controller详解第30张

1.Generate Parent Sample不选中情况下,Aggregate Report显示为

jmeter 逻辑控制器Logic Controller详解第31张

其中事务采样器采集的数据排在子采样器数据之后,同时各列数据略大于子采样器数据之和。

2.Generate Parent Sample选中情况下,Aggregate Report显示为

jmeter 逻辑控制器Logic Controller详解第32张

其中仅显示事务采样器采集的数据,而不会显示子采样器采集的数据。

 

7、交替控制器  一次传递一个子请求到这个测试,按子元件的排列顺序

jmeter 逻辑控制器Logic Controller详解第33张

 

8、仅一次控制器  这个控制器可以保证线程在多次循环跑得情况下只登陆一次

jmeter 逻辑控制器Logic Controller详解第34张

 

9、吞吐量控制器

 

10、如果(If)控制器   在“条件:”中填写判断条件进行执行

        在做类似内存审计和长sql审计测试时,常需要测试各种类型的sql语句,如果为每种sql语句建立一个测试计划有点太麻烦,这里我们就可以使用如果(if)逻辑控制器来实现各种sql的控制。

        已长sql审计测试为例,我们需要模拟长sql、短sql和长短混合sql的审计测试,这里我们就可以设置2个用户变量和if控制器来实现。

jmeter 逻辑控制器Logic Controller详解第35张

jmeter 逻辑控制器Logic Controller详解第36张

jmeter 逻辑控制器Logic Controller详解第37张

变量longsql用于控制长sql的jdbc请求是否执行,shortsql用于控制短sql的jdbc请求是否执行,在每条sql对应的jdbc请求上插入if控制器,如上图所示

"${shortsql}"=="true":变量shortsql的取值为true时即执行

"${shortsql}"!="true":变量shortsql的取值不为true时即执行

 

11、录制控制器  我们用JMeter自身来录制脚本时用的控制器

jmeter 逻辑控制器Logic Controller详解第38张

 

12、循环控制器  该控制器下的请求可以循环执行

jmeter 逻辑控制器Logic Controller详解第39张

 

13、模块控制器  测试某一个模块

jmeter 逻辑控制器Logic Controller详解第40张

 

14、简单控制器  最基本的控制器,没有任何附加作用,可以用来命名某些操作

jmeter 逻辑控制器Logic Controller详解第41张

 

15、随机控制器  JMeter可能会随机选取某一个请求

jmeter 逻辑控制器Logic Controller详解第42张

 

16、随机顺序控制器   子节点全部执行,但顺序是随机的

jmeter 逻辑控制器Logic Controller详解第43张

1、ForEach控制器

ForEach控制器在用户自定义变量中读取一系列相关的变量。该控制器下的采样器或控制器都会被执行一次或多次,每次读取不同的变量值。所以ForEach总是和User Defined Variables一起使用。下面会以实例的形式介绍它的用法。

控制面板

jmeter 逻辑控制器Logic Controller详解第20张

参数

Name:控制器名称

Comments:备注

Input Variable Prefix:输入变量前缀

Output variable name:输出变量名称

Add”_”before number:输入变量名称中是否使用“_”进行间隔。

示例

该示例中在ForEach控制器中添加了一个HTTP请求(登录页面),需要输入用户名,密码。我们这里把用户名作为变量在用户自定义变量中设置。

jmeter 逻辑控制器Logic Controller详解第21张

User Parameter面板中设置

jmeter 逻辑控制器Logic Controller详解第22张

 

ForEach控制器面板中设置

jmeter 逻辑控制器Logic Controller详解第23张

 

HTTP请求采样器面板中设置

jmeter 逻辑控制器Logic Controller详解第24张

这样执行测试计划时,ForEach控制器会遍历User Parameter查找符合设置条件的变量名,这里就是”Name”+”_”+”循环次数”。查到符合的变量后就把值赋给输出变量(Vname)。然后就可以在ForEach控制器下的采样器或控制器中使用了,使用的格式是${输出变量名}。

运行测试计划,在“察看结果树”中就可以看到,每次请求使用了不同的参数。

 

2、包含控制器--Include Controller

包含控制器用于使用外部的Jmx文件。为了演示使用它,可以添加一个simple controller,然后在其中添加一个采样器(sample),比如一个http请求。然后把这个simple controller保存为一个jmx文件。这样在include controller中设置该jmx文件就可以在测试计划中使用了。值得注意的是,包含测试的测试计划中不能有线程组,仅仅只能有simple controller,然后其下可以添加任何采样器,控制器。

如果用户需要使用cookie manage或者 用户自定义变量,都应该在顶层的测试计划中设置,不应该包含在外部文件中,否则不会它们不会起作用。

This element does not support variables/functions in the filename field.

However, if the propertyincludecontroller.prefixis defined, the contents are used to prefix the pathname.

如果在prefix+filename的路径中找不到文件,控制器会尝试在JMX存放目录中根据文件名进行查找。

 

控制面板

jmeter 逻辑控制器Logic Controller详解第25张

 

参数

 

Attribute

Description

Required

Filename

包含的文件

Yes

 

3、Runtime Controller

 

4、Switch Controller

Switch控制器通过给该控制器中的Value赋值,来指定运行哪个采样器。有两种赋值方式:

1.第一种是数值,Switch控制器下的子节点从0开始计数,通过指定子节点所在的数值来确定执行哪个元素。

2.第二种是直接指定子元素的名称,比如采样器的Name来进行匹配。当指定的名称不存在时,不执行任何元素。

当Value为空时,默认执行第1个子节点元素。

 

控制面板

jmeter 逻辑控制器Logic Controller详解第26张

 

参数

Name:控制器名称

Switch Value:指定需要运行的子元素的名称或所处的数值。

 

示例

jmeter 逻辑控制器Logic Controller详解第27张

线程组的各参数都设置为1,switch value中设置“Login.aspx”,运行测试计划,在“view results tree”中查看结果

jmeter 逻辑控制器Logic Controller详解第28张

仅仅执行了Name为“Login.aspx”的Http请求。

 

5、While Controller

 

6、事务控制器

事务控制器会生成一个额外的采样器来测量其下测试元素的总体时间。值得注意的是,这个时间包含该控制器范围内的所有处理时间,而不仅仅是采样器的。

对于Jmeter2.3以上的版本,有两种模式的操作

•      事务采样器是添加到其下采样器后面的

•      事务采样器是作为其下采样器的父采样器。

生成的事务采样器的测量的时间包括其下采样器以及其他的一切时间。由于时钟频率的问题,这个时间可能略大于单个采样器的时间之和。时钟开始时间介于控制器记录开始时间与第一个采样器开始之间,时钟结束时间亦然。

事务采样器只有在其子采样器都成功的情况下才显示成功。

在父模式下,事务控制器下的各个采样器只有在the Tree View Listener里才能看到。同时,子采样器的数据也不会在CSV文件中显示,但是在XML文件中可以看到。

 

控制面板

jmeter 逻辑控制器Logic Controller详解第29张

 

参数

 

Attribute

Description

Required

Name事务控制器的名称Yes
Sample

如果点中,事务采样器作为其下采样器的父采样器

否则,作为额外采样器添加在子采样器的后面

Yes

 

示例

其中线程组中设置1个Users,1 Loop。

jmeter 逻辑控制器Logic Controller详解第30张

1.Generate Parent Sample不选中情况下,Aggregate Report显示为

jmeter 逻辑控制器Logic Controller详解第31张

其中事务采样器采集的数据排在子采样器数据之后,同时各列数据略大于子采样器数据之和。

2.Generate Parent Sample选中情况下,Aggregate Report显示为

jmeter 逻辑控制器Logic Controller详解第32张

其中仅显示事务采样器采集的数据,而不会显示子采样器采集的数据。

 

7、交替控制器  一次传递一个子请求到这个测试,按子元件的排列顺序

jmeter 逻辑控制器Logic Controller详解第33张

 

8、仅一次控制器  这个控制器可以保证线程在多次循环跑得情况下只登陆一次

jmeter 逻辑控制器Logic Controller详解第34张

 

9、吞吐量控制器

 

10、如果(If)控制器   在“条件:”中填写判断条件进行执行

        在做类似内存审计和长sql审计测试时,常需要测试各种类型的sql语句,如果为每种sql语句建立一个测试计划有点太麻烦,这里我们就可以使用如果(if)逻辑控制器来实现各种sql的控制。

        已长sql审计测试为例,我们需要模拟长sql、短sql和长短混合sql的审计测试,这里我们就可以设置2个用户变量和if控制器来实现。

jmeter 逻辑控制器Logic Controller详解第35张

jmeter 逻辑控制器Logic Controller详解第36张

jmeter 逻辑控制器Logic Controller详解第37张

变量longsql用于控制长sql的jdbc请求是否执行,shortsql用于控制短sql的jdbc请求是否执行,在每条sql对应的jdbc请求上插入if控制器,如上图所示

"${shortsql}"=="true":变量shortsql的取值为true时即执行

"${shortsql}"!="true":变量shortsql的取值不为true时即执行

 

11、录制控制器  我们用JMeter自身来录制脚本时用的控制器

jmeter 逻辑控制器Logic Controller详解第38张

 

12、循环控制器  该控制器下的请求可以循环执行

jmeter 逻辑控制器Logic Controller详解第39张

 

13、模块控制器  测试某一个模块

jmeter 逻辑控制器Logic Controller详解第40张

 

14、简单控制器  最基本的控制器,没有任何附加作用,可以用来命名某些操作

jmeter 逻辑控制器Logic Controller详解第41张

 

15、随机控制器  JMeter可能会随机选取某一个请求

jmeter 逻辑控制器Logic Controller详解第42张

 

16、随机顺序控制器   子节点全部执行,但顺序是随机的

免责声明:文章转载自《jmeter 逻辑控制器Logic Controller详解》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇idea配置struts2.5环境vim-ctags-taglist-netrw下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

字符串截取及切割,正则表达式,expect预期交互

                                        字符串截取及切割,正则表达式,expect预期交互 案例1:字符串截取及切割 案例2:字符串初值的处理 案例3:expect预期交互 案例4:使用正则表达式 1案例1:字符串截取及切割 1.1问题 使用Shell完成各种Linux运维任务时,一旦涉及到判断、条件测试等相关操作时...

android 快捷键

Alt+回车 导入包,自动修正Ctrl+N 查找类Ctrl+Shift+N 查找文件Ctrl+Alt+L格式化代码Ctrl+Alt+O 优化导入的类和包Alt+Insert 生成代码(如get,set方法,构造函数等)Ctrl+E或者Alt+Shift+C最近更改的代码Ctrl+R 替换文本Ctrl+F 查找文本Ctrl+Shift+Space 自动补全代...

SQL Server游标的使用 转

   游标是邪恶的!        在关系数据库中,我们对于查询的思考是面向集合的。而游标打破了这一规则,游标使得我们思考方式变为逐行进行.对于类C的开发人员来着,这样的思考方式会更加舒服。        正常面向集合的思维方式是:               而对于游标来说:              这也是为什么游标是邪恶的,它会使开发人员变懒,懒...

JS基础知识1

基础点: es5 原型链、 2. 继承、 3. this指向、 4. new操作符、 5. 隐式转换、 6. 事件循环机制macro micro、 7. 基础类型、 8. 数据去重/交集/并集、 9. 判断是否为数组、 10. 变量声明提升、 11. 函数作用域、 12. 节流/防抖、 13.  apply/call、 14.  jsonp跨域、 15....

UiPath Level 1-Lesson 3. Data Manipulation

学习大纲 如何拆分字符串 如何改变部分字符串的格式 如何在表格中根据条件选中特定的行 1. 标量型变量,集合,表格 活动的属性都有预定义的数据类型。鼠标悬停在属性面板的某个属性上,就会出现相应的提示。 使用右键菜单或Ctrl+K在属性栏创建的变量,会直接设置为属性预定义的类型。 标量型变量 (Scalar Variables):一个单独的固定类...

Intellij IDEA Debug

Debug用来追踪代码的运行流程,通常在程序运行过程中出现异常,启用Debug模式可以分析定位异常发生的位置,以及在运行过程中参数的变化。通常我们也可以启用Debug模式来跟踪代码的运行流程去学习三方框架的源码。 所以学习下如何在Intellij IDEA中使用好Debug,主要包括如下内容: 一、Debug开篇 二、基本用法&快捷键 三、变量查看...