系列文章目录
安装jmeter
jmeter常用配置元件介绍总结之逻辑控制器
- 逻辑控制器
- 1.IF控制器
- 2.事务控制器
- 3.循环控制器
- 4.While控制器
- 5.ForEach控制器
- 6.Include控制器
- 7.Runtime控制器
- 8.临界部分控制器
- 9.交替控制器
- 10.仅一次控制器
- 11.简单控制器
- 12.随机控制器
- 13.随机顺序控制器
- 14.吞吐重控制器
- 15.Switch控制器
- 16.模块控制器
逻辑控制器
1.IF控制器
功能:输入条件表达式,条件为真时,执行控制器里面的请求
参数说明:
- Expression:输入条件表达式,表达式的结果必须是true或者false;推荐使用_jexl3或_groovy来执行表达式
- Use status of last sample:点击后会自动插入一个表达式,用来判断上一节点的取样器成功还是失败;成功则执行控制器里面的请求
- Interpret Condition as Variable Expression:默认勾选的,勾选后条件解释为变量表达式,需要使用_jexl3或_groovy来执行表达式
- Evaluate for all children:勾选后控制器里面的每一个子元素运行前都会判断条件表达式是否为true
如图:提取第一个请求的响应消息,判断响应消息是否符合预期的值,符合则执行控制器中的请求
2.事务控制器
功能:生成一个额外的示例,合并统计示例下的所有测试元素所花费的总时间
参数说明
- Generate parent sample:勾选后,会把多个请求样本归类到事务控制器下,不勾选则是独立样本
- Include duration of timer and pre-post processors in generated sample:勾选后生成的样本讲包括计时器、前置后置处理器等参数的延迟时间
如图:
3.循环控制器
功能:会将循环控制器里面的所有请求循环指定次数
提示:加上
${__jm__控件名字__idx}
,如:${__jm__test__idx}
,可以查看循环的索引
如图演示:
如图:显示每次循环的索引
4.While控制器
功能:输入表达式,来控制,控制器里面的请求循环多少次
参数说明:
Condition (function or variable):输入表达式,控制循环的次数;推荐使用_jexl3或_groovy来执行表达式;内容为空白时会一直执行
5.ForEach控制器
功能:对值进行前缀匹配,然后循环遍历,可以让控制器里面的请求的内容,结合每次遍历的结果来执行
如:某个参数需要执行不同的内容,其余的参数保持不变,就可以先定义内容,然后每次迭代循环该字段的值都会改变
参数说明:
输入变量前缀:输入要变量的变量前缀,会根据前缀去匹配变量,只有符合前缀的变量才会被迭代
开始循环字段(不包含):可以理解为从第几个变量值开始迭代,不包含输入的值,应该实际迭代的值 = 输入的值 + 1
结束循环字段(含):迭代到第几个值结束,输入多少就对应第几个值结束
输出变量名称:参数化时的引用名
数字之前加上下划线:勾选后,遍历的变量名的前缀和数字之间必须要有_下划线
注意:
1.开始和结束字段的值一定要设置对,否则不会循环
2.遍历的变量名和输入的”输入变量前缀“有关联关系;变量名去掉输入的变量前缀剩余的字符串,必须是有序的整数数字或者下划线加有序数字;
如:输入变量前缀:test;则变量名必须是:test1,test2,…或者test_1,test_2…
如果是:testss;test01;test_01;等都是不会被迭代的
必须要有序数字,如:第一个变量是test1,第二个变量是test9;则只会迭代test1
6.Include控制器
功能:选择导入测试片段,能运行测试片段里面的脚本,重复利用已有的脚本不需要再次编写
注意:导入的测试片段不能有线程组
如图保存测试片段
如图演示:
7.Runtime控制器
功能:设置控制器下取样器运行时长,单位秒;比如:限时活动等有时间限制的场景可以使用
8.临界部分控制器
功能:设置同步所,确保同一时间每次只能有一个请求通过执行,适用于控制并发的场景;
可以理解为设置了一把锁,只有有锁的人才能通过,通过了就把锁释放掉,下一个占用到锁后才能通过
如图演示:我这里设置了5个线程数,控制器中的取样器设置了个延迟3秒的固定定时器,结果是每个请求的间隔都是3秒
9.交替控制器
功能:让控制器下面的请求、元素交替、轮流执行
参数说明
- 忽略子控制器块:勾选后,会忽略子控制器的功能,让子控制器里面的元素也交替执行
- Interleave across threads:勾选后,可跨线程交替,多个线程数的时候也会轮流交替请求
如图演示:设置了6个线程数,结果是每个线程交替的请求了不同的取样器
10.仅一次控制器
功能:控制器里面的取样器元素等,再多次循环中只会执行一次
适用场景:如有几个接口依赖于登录获取token,才能正常请求,此时登录接口就可仅执行一次用来提取token,后面的请求直接引用即可,避免重复多次请求登录接口
如图演示:设置了1个线程循环5次,结果是控制器下的请求只执行了1次
11.简单控制器
功能:没有实际的功能,作用是归纳分组元素,模块化封装让脚本结构更清晰
12.随机控制器
功能:控制器中的请求元素随机取一个执行,勾选,忽略子控制器块,会忽略子控制器的功能
13.随机顺序控制器
功能:控制器中每个请求元素都会被执行一次,但执行的顺序是随机的
14.吞吐重控制器
15.Switch控制器
功能:通过设置的Switch Value值来决定执行哪个请求
提示:有3种取值方式
1.输入节点位置顺序,从0开始;输入0会执行第一个取样器,1则执行第二个依次类推
2.直接输入取样器的名称:如”调试取样器-4“
3.value为空或者不存在时,默认执行第一个
16.模块控制器
功能:主要是为了方便测试代码、以及维护,
可以选中里面的测试片段,运行指定片段