——————————————————判断条件————————————————
If控制器:
- 类似与python中的if判断
- 尽量用__jexl3、__groovy函数生成表达式来作为判断条件(此时,必须勾选【interprent conditions as variable expression?】选项)
While控制器:
- 其下的节点将一直运行,直到while的条件为false
- condition:填写判断条件,如:${value1}<10
ForEach控制器:
- 从正则表达式取到的数组(a)中循环取值,然后赋值给另一个变量(b)
- start index for loop:循环变量下标起点(jmeter变量下标,不是数组下标)
- end index for loop:循环变量下标终点
Switch控制器:
- switch value:根据输入值匹配下面的取样器名称,找相同的来执行,没有就不执行
- 如果值是数字:
- 则根据取样器排列顺序选择哪个执行(从上到下为0,1,2...)
- 如果值是字符:
- 字符同名的取样器 > 名为default的取样器 > 不执行
- 如果值是数字:
——————————————————导入——————————————————
Include控制器:
- 类似于python中的import,导入封装的通用方法
- 用于导入jmeter的测试片段(.jmx格式,不能包含线程组,只能包含简单控制器和控制器下的元件)
模块控制器:
- 类似include控制器,但是只能引用逻辑控制器及其下的所有元件
- 与include控制器相同:
- 都是引用一段测试脚本,方便维护和减少重复代码
- 与include控制器不同:
- include引用的是jmx脚本(从jmeter外部引用)
- 模块控制器是从当前的测试计划中引用(内部引用)
—————————————————执行顺序—————————————————
Interleave控制器:
- 交替控制器,其下的节点会交替执行
- 其下有A,B,C三个节点,运行4次,结果是:A+其他,B+其他,C+其他,A+其他
- 忽略子控制器:其下子控制器功能失效
- interleave across threads:线程交叉,若勾选:
- 设置3个线程A、B、C,循环次数为3,取样器为3(请求1,请求2,请求3)
- 结果为:请求1,请求2,请求3,请求2,请求3,请求1,请求3,请求1,请求2
- 第一组为A的结果,第二组为B的结果,第三组为C的结果
- 线程顺序:取前一个线程第一次执行+1的取样器作为自己的第一次执行位置
- 复杂用法:两个交替控制器串行使用
- 主要用来模拟,一个操作组合(类似与列表),按照顺序执行,每次取一个操作出来参与测试计划执行,要执行完整个测试计划再循环才会取下一个操作
随机控制器:
- 其下的节点随机运行,类似于交替控制器
- 与交替控制器不同:
- 每次运行随机抽取其下的一个元件运行,所以最后可能不是所有的元件都会被遍历到
- 有可能一个元件运行多次
- 主要用来模拟,一系列操作中随机抽一个执行参与测试计划
随机顺序控制器:
- 其下的节点随机运行,类似于随机控制器
- 与随机控制器不同:
- 首先将随机顺序控制器下的所有元件都无规则运行一遍,再运行测试计划中其他操作
- 一个是随机抽一个运行再运行其他,一个是随机运行全部再运行其他
- 主要用来模拟,一系列操作执行时随机组合遍历后参与测试计划
—————————————————执行次数—————————————————
仅一次控制器:
- 只运行一次,常用于获取cookie
循环控制器:
- 控制其下元件执行次数
- 勾选为永远则不会停止
- 执行次数 = 线程组数量 * 循环次数 * 控制器执行次数参数
吞吐量控制器:
- 用来控制其下元件的执行次数
- Percent executions:按照百分比控制
- 使用这个模式Per user是否勾选都不影响结果
- 实际执行数量 = 线程数 * 循环次数 * percent设置参数(%)
- Total executions:按照数量来控制
- 使用这个模式Per user参与计算
- 实际执行数量 = total设置参数(线程数 * 循环次数 > total设置设置)
- 实际执行数量 = 实际执行数量(线程数 * 循环次数 < total设置设置)
- Per user:是否让线程数量参与计算
- 勾选后根据线程数(用户数)来控制每个都用户数都需要执行n(设置的参数)次
- 举例:
- total参数为7,线程数为2,循环次数为10
- 应该执行数量 = 2*10
- 勾选Per user,实际执行结果为2*7=14
- 不勾选Per user,实际执行结果为1*7=7
- 思考:
- 这个控制器是在线程组总执行数量下控制内部元件的执行次数
- 与【仅一次控制器】功能相同,只不过这个控制数量是大于1次的情况
—————————————————其他———————————————————
简单控制器:
- 主要作为一个分组使用,如果禁用该控制器,则该分组下所有请求都被禁用
- 在结果树中不显示分组,该控制器下所有取样器都正常排列展示
- 无参数
录制控制器:
- 录制脚本时使用的控制器
- 可以用简单控制器替代
Runtime控制器:
- 用于控制子元素执行时长(单位为秒)
- 默认为1S,如果为0,则不执行
事务控制器:
- 将其下的取样器消耗时间加在一起,方便统计
- Generate parent sample:是否在生成结果(聚合报告)时生成一个事务控制器结果(将其下取样器结果加和),不勾选则只展示每个取样器的结果
- Include duration of timer and pre-post processors in generate sample:是否将定时器的延迟时间也加入统计,一般不选