Jmeter配置之逻辑控制器

Jmeter配置之逻辑控制器

一、说明

1、Jmeter官网对逻辑控制器的解释是:“Logic Controllers determine the order in which Samplers are processed.”。意思是说,逻辑控制器可以控制采样器(samplers)的执行顺序。由此可知,控制器需要和采样器一起使用,否则控制器就没有什么意义了。放在控制器下面的所有的采样器都会当做一个整体,执行时也会一起被执行。
2、逻辑控制器分为两种,一类是运行控制器用于分组之类如Critical Section Controller,一类是运行逻辑控制器用于循环判断等如If Controller;
逻辑控制器

二、逻辑控制器配置说明

1、If Controller

此为条件判断控制器,根据内容判断是否执行此控制器之后的内容;
If

(1)配置说明:

Name:此控制器名称,可以自己设置;
Comments:此if控制器说明;
Expression:用于判断的表达式,可以是根据表达式获取的参数值,也可以是一个”${变量}”==”变量值”这样的表达式;
Interpret Condition as Variable Expression?:中这一项时表示:判断变量值是否等于字符串true(不区分大小写)即如果勾选则会判断表达式为true或者false,如果不勾选则需要自己写判断表达式;比如有个参数FOUND,如果勾选此项则表达式填${FOUND},如果不勾选则填“${FOUND}”==“true”
Evaluate for all children:如果选中这一项,则在每个此控制器下的采样器的执行前都会计算表达式;

2、Transaction Controller

此为事物控制器,用于采集其下采样器的花费时间;
事物

(1)配置说明:

Name:控制器名称;
Generate Parent Sample:勾选此项,则会在查看结果树监听器中此为父节点,其下采样器为子节点来展示,否则独立显示;
Include duration of timer and pre-post processors in generated sample:如勾选此项,则会计算定时器、Pre Processors和Post Processors的时间;

3、Loop Controller

顾名思义为一个循环控制器,用于控制循环次数;
loop

(1)配置说明:

Name:控制器名称;
Comments:控制器说明;
Loop Count:循环次数;
Forever:勾选此项则无限循环;

4、While Controller

这是一个循环判断控制器,如果表达式值为“false”时跳出,否则一直循环运行其下的sample;
while

(1)配置说明:

Name:控制器名称;
Comments:控制器说明;
Condition:可以为blank, LAST, 或者参数、表达式,如${FOUND}或者“${FOUND}”==“true”

5、Critical Section Controller

关键部分控制器,用于核心部分的控制,确保其子节点下的取样器或控制器在一个线程中仅会执行一次
critical

(1)配置说明:

Name:控制器名称;
Comments:控制器说明;
Lock Name:要锁定的子元素名称;

(2)范例:

如下所示,在一个线程中,DS2- {__threadNum}和DS4- {__threadNum}将只执行一次,
critical范例

6、ForEach Controller

ForEach控制器,ForEach控制器一般和用户自定义变量或者正则表达式提取器一起使用,其在用户自定义变量或者从正则表达式提取器的返回结果中读取一系列相关的变量。该控制器下的采样器或控制器都会被执行一次或多次,每次读取不同的变量值;
forEach

(1)配置说明:

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

(2)范例1:

如下所示,ForEach Controller会根据从正则表达式提取器中返回的结果进行循环输出到定义的变量名称,HTTP2再调用此变量;
forEach范例

7、Include Controller

引用外部测试计划控制器,测试过程中,需要引用外部的测试计划,注意如果jmx文件中有cookie或者用户自定义变量,可能无法起效;
include

(1)配置说明:

Name:控制器名称;
Comments:控制器说明;
Filename:引用的外部jmx文件路径;

8、Interleave Controller

间隔控制器,也称交替控制器,使得该控制器包含的取样器步骤交错执行在每个循环中,每个线程用户仅执行一次控制器内的请求,线程用户依据循环的次数请求控制器中的请求数;
interleave

(1)配置说明:

Name:控制器名称;
Comments:控制器说明;
Ignore sub-controller blocks:勾选此项,则此控制器下的子控制器会作为一个整体进行迭代,;
Interleave across threads:勾选此项,则交替控制器下的请求将应用至所有线程和循环中迭代。如有四个请求,三个线程,两轮循环,那么第一轮三个线程分别运行请求1,请求2,请求3,第二轮循环的三个线程运行请求4,请求1,请求2;

(2)范例1:

如下所示执行结果为News Page–>Log Page–>FAQ Page–>Log Page–>Gump Page–>Log Page,此处如果循环次数为2,则结果为News Page–>Log Page–>FAQ Page–>Log Page;
forEach1

(2)范例2:

如下所示,为Interleave Controller下又套了两个Interleave Controller,此范例未勾选Ignore sub-controller blocks;
inter2
结果:
inter2
备注:我试过在此范例勾选Ignore sub-controller blocks,但结果与不勾选相同,不知道为什么,在官网上不勾选此项运行结果应该为Home Page, CVS Page, Interleaved, Bug Page, FAQ Page, Interleaved;

9、Once Only Controller

仅一次控制器,此控制器在每个线程中只会运行一次,无论多少个循环;常用于登录这种只需要做一次的部分;
Once Only

(1)配置说明:

Name:控制器名称;
Comments:控制器说明;

10、Random Controller

随机控制器,与交替控制器类似,不过并非按照顺序迭代,而是随机的;
Random Controller

(1)配置说明:

Name:控制器名称;
Comments:控制器说明;
Ignore sub-controller blocks:与交替控制器的此项设置意义相同,子控制器作为块进行迭代,参考其范例2;

11、Random Order Controller

随机顺序控制器,类似简单的控制器,每个子元素每次只运行一次,但是节点的执行顺序将是随机的。
Random Order

(1)配置说明:

Name:控制器名称;
Comments:控制器说明;

12、Recording Controller

记录控制器,用于录制脚本,此控制器是用于指示代理服务器应该将样本记录到何处的位置保持器,即此控制器放在何处,则录制脚本时脚本就将方在何处;
Recording COntroller

(1)配置说明:

Name:控制器名称;
Comments:控制器说明;
Clear all the recorded samples:清除所录制的所有sample;

13、Runtime Controller

运行时间控制器,此控制器用于控制其下子元素的运行时间,如超过设置时间则终止该子元素运行;
Runtime

(1)配置说明:

Name:控制器名称;
Comments:控制器说明;
Runtime(seconds):子元素超时时间;

14、Simple Controller

简单控制器,无特别意义,基本上作为分类所用,其下子元素按顺序执行,每轮执行一次;
Simple Controller

(1)配置说明:

Name:控制器名称;
Comments:控制器说明;

15、Throughput Controller

吞吐量控制器,控制其下的子节点的执行次数与负载比例分配,也有两种方式;
throughput

(1)配置说明:

Name:控制器名称;
Comments:控制器说明;
Throughput:吞吐量,如为Total Excutions模式,其下子元素的执行按照此数值来执行,如线程循环设置为5,此数值设置为3,则其下子元素只执行3次;如为Percent Excutions模式,则此处设置为百分比(不带百分号),如循环5次,此值为40,则执行5*40%=2次;
Per User:如勾选此项,则此控制器的设置单独应用于每个线程,如不勾选,则应用于全部线程;

(2)范例:

设置:
throughput设置1
throughput设置2
设置3
结果:
结果1

16、Module Controller

模块控制器,用于跳转到选定的控制器位置并执行对应的控制器;
Model Controller

(1)配置说明:

Name:控制器名称;
Comments:控制器说明;
Module to Run:要跳转的控制器;

(2)范例:

如下所示进入此模块控制器时会跳转到Android节点;
model

17、Switch Controller

Switch控制器,Switch控制器通过给该控制器中的Value赋值,来指定运行哪个采样器。有两种赋值方式:
第一种是数值,Switch控制器下的子节点从0开始计数,通过指定子节点所在的数值来确定执行哪个元素。
第二种是直接指定子元素的名称,比如采样器的Name来进行匹配。当指定的名称不存在时,不执行任何元素。
当Value为空时,默认执行第1个子节点元素
switch

(1)配置说明:

Name:控制器名称;
Comments:控制器说明;
Switch Value:要切换到的子元素的编号或者是名称;

(2)范例:

配置如下:
switch 范例
结果如下:
swith结果

猜你喜欢

转载自blog.csdn.net/df0128/article/details/80637608
今日推荐