(JMeter笔记17 | JMeter逻辑控制器)
- 逻辑控制器可以对元件的执行逻辑进行控制;
- 逻辑控制器下可以嵌套别的逻辑控制器(一次控制器除外);
- 如图:
1 ForEach Controller
- 遍历循环控制器;
- 参数如下:
参数 | 说明 |
---|---|
Name |
名称:随意设置,可为空 |
Comments |
注释:随意设置,可为空 |
Input variable prefix |
输入变量前缀:输入需要遍历的用户参数 |
Start index for loop(exclusive) |
开始的值,不填默认为1 |
End index for loop(inclusive) |
结束的值, |
Output variable name |
输出变量名称,将遍历查询到的符合条件的用户参数赋值给输入变量(Vname),然后就可以在控制器下的取样器使用,格式为${输出变量名}
|
Add”_”before number |
输入变量名称中是否使用“_” 进行间隔 |
- 一般配合正则表达式提取器来一起使用,可对页面上的某些元素进行重复处理。
2 Simple Controller
- 简单控制器;
- 提供一个块的结构和控制,不具有任何的逻辑控制和运行时的功能,比如可做分组功能;
- 参数如下:
参数 | 说明 |
---|---|
Name |
名称:随意设置,可为空 |
Comments |
注释:随意设置,可为空 |
3 Loop Controller
- 循环控制器;
- 指定其子节点运行的次数;
- 参数:
参数 | 说明 |
---|---|
Name |
名称:随意设置,可为空 |
Comments |
注释:随意设置,可为空 |
Loop Conunt |
要么选Infinite(永远),要么设置具体数字 |
4 Include Controller
- 包含控制器;
- 用来导入外部的测试片段(非完整的测试计划);
- 被导入的测试计划不能有线程组,只能包含简单控制器及控制器下的元件;
- 参数如下:
参数 | 说明 |
---|---|
Name |
名称:随意设置,可为空 |
Comments |
注释:随意设置,可为空 |
Filemame |
文件名,必选,未选会报错 |
5 Runtime Controller
- 生命周期/运行周期控制器;
- 用来控制其子元件的执行时长;
- 参数如下:
参数 | 说明 |
---|---|
Name |
名称:随意设置,可为空 |
Comments |
注释:随意设置,可为空 |
Runtime |
执行时长,默认为1,不填默认为0,此时不执行子元件 |
6 Switch Controller
- Switch条件控制器;
- 类似于编程语言中的Switch控制语句;
- 参数如下:
参数 | 说明 |
---|---|
Name |
名称:随意设置,可为空 |
Comments |
注释:随意设置,可为空 |
Switch Value |
匹配值,可为数字(即取样器编号从0开始);可为字符,为字符时匹配取样器名称 |
7 While Controller
- While条件控制器;
- 其下的元件一直执行,直到while的条件为False;
- 参数如下:
参数 | 说明 |
---|---|
Name |
名称:随意设置,可为空 |
Comments |
注释:随意设置,可为空 |
Condition(function or variable) |
可输入变量或变量表达式。为空:直到某次请求失败退出循环;LAST:直到最后一个请求请求失败退出循环; 其他:当判断条件为false时停止循环 |
8 Interleave Controller
- 交替控制器;
- 其节点下的取样器交替执行;
- 比如该控制器下有2个取样器1和2,交替执行1和2请求,即每次传递一个子请求到这个测试,按子元件的排列顺序;
- 参数如下:
参数 | 说明 |
---|---|
Name |
名称:随意设置,可为空 |
Comments |
注释:随意设置,可为空 |
Ignore sub-controller blocks |
忽略子控制器模块,子控制器失败由交替控制器接管 |
Interleave across threads |
允许跨线程交替执行 |
9 Once Only controller
- 仅一次控制器;
- 在测试计划执行期间,该控制器下的子结点对每个线程只执行一次;
- 登录场景经常会使用到这个控制器;
- 参数如下:
参数 | 说明 |
---|---|
Name |
名称:随意设置,可为空 |
Comments |
注释:随意设置,可为空 |
10 Throughput Controller
- 吞吐量控制器;
- 用来控制其下元件的执行次数;
- 并无吞吐量的功能,想要控制吞吐量需要使用 Constant Throughput Timer;
- 参数如下:
参数 | 说明 |
---|---|
Name |
名称:随意设置,可为空 |
Comments |
注释:随意设置,可为空 |
Based on:Percent Ececutions |
按执行次数的百分比来执行次数,此时Throughput 取值0-100,是否勾选Per Uner对 Percent Ececutions模式无影响。 |
Based on:Total Ececutions |
按Throughput 的值来指定执行次数, 此时Per Uner 和Total Ececutions一起影响执行次数。 |
Throughput |
指定执行次数 |
Per Uner |
每个用户 |
11 If Controller
- If条件控制器;
- 可通过某个条件控制此节点下的元件是否运行;
- 参数如下:
参数 | 说明 |
---|---|
Name |
名称:随意设置,可为空 |
Comments |
注释:随意设置,可为空 |
Condition |
判断条件 |
Condition(default javascript) |
使用JavaScript的函数或变量进行评估判断条件为真或假 |
interpret condition as variable expression |
如果勾选该项,那么变量表达式会进行求值,并与“ture”或“false”进行比较,而无需使用JavaScript |
evaluate for all children |
如果勾选该项,则该controller在没一个子节点执行时执行一次 |
12 Module Controller
- 模块控制器;
- 测试控制器子节点下的某一个模块,而不是整个测试计划;
- 用于跳转到选定的控制器位置并执行对应的控制器;
- 应用场景为业务逻辑的跳转;
- 参数如下:
参数 | 说明 |
---|---|
Name |
名称:随意设置,可为空 |
Comments |
注释:随意设置,可为空 |
Module to Run |
选择需要跳转到的目标控制器 |
13 Random Controller
- 随机控制器;
- 节点下的元件随机运行,与交替控制器不一样的是节点下的元件执行顺序不定;
- 参数说明:
参数 | 说明 |
---|---|
Name |
名称:随意设置,可为空 |
Comments |
注释:随意设置,可为空 |
MIgnore sub-controller blocks |
忽略子控制器,控制器失败由随机控制器接管 |
14 Random Order Controller
- 随机顺序控制器;
- 随机执行其下的所有子结点;
- 与Random Controller不同的是,这个控制器会先将需要随机的内容均执行一遍,但次序不定;
- 参数如下:
参数 | 说明 |
---|---|
Name |
名称:随意设置,可为空 |
Comments |
注释:随意设置,可为空 |
15 Recording Controller
- 录制控制器;
- 类似代理服务器的作用,在测试执行期间记录测试样本;
参数 | 说明 |
---|---|
Name |
名称:随意设置,可为空 |
Comments |
注释:随意设置,可为空 |
Clear all the recorded samples |
注清除之前执行时记录的所有脚本 |
16 Transaction Controller
- 事务控制器;
- 把其节点下的取样器执行消耗时间累加在一起;
- 如果事务控制器下的取样器有多个,只有每一个取样器都运行成功,整个事务控制器定义的事务才算成功;
- 参数说明:
参数 | 说明 |
---|---|
Name |
名称:随意设置,可为空 |
Comments |
注释:随意设置,可为空 |
Generate parent sample |
注选择是否生成一个父取样结果 |
Include duration of timer and pre-post processors in generated sample |
是否包含定时器,选中的话在取样器前和后加上延时 |
17 Critical Section Controller
- 临界区控制器;
- 确保其子节点下的取样器或控制器将被执行(只有一个线程作为一个锁);
- 参数说明:
参数 | 说明 |
---|---|
Name |
名称:随意设置,可为空 |
Comments |
注释:随意设置,可为空 |
Lock name |
锁的名称,最好作为唯一值 |