在项目实际测试中,不仅仅是简单的执行http请求,还需要对执行的逻辑进行控制,就需要用到jmeter的逻辑控制器,通过右键线程组->添加->逻辑控制器,选择对应的控制器添加即可,以下是jmeter支持的几种逻辑控制器,本文将举例让大家熟悉一下jmeter的逻辑控制器。
1、ForEach控制器
- 举例1
设置三个用户自定义变量分别为vb_1/2/3,ForEach控制器根据变量的前缀vb和循环字段(开始为0,结束为3)获取变量的值,并将变量的值保存在输出变量中,java请求通过${vbNum}访问控制器输出的变量。
- 举例2:
访问我的CSDN博客主页网页,通过正则表达式提取网页的文章的链接,使用ForEach控制器遍历所有的链接。
2、简单控制器
简单控制器用来指定了一个执行单元,它不改变元件的执行顺序。
- 举例,设置几个http请求,可以看到执行顺序是没有被改变的
3、Include控制器
可以导入外部没有线程组的测试片段 - 举例:将用户定义的变量保存为测试片段,新建测试计划添加Include控制器,导入外部测试片段便可以引用其变量。
4、Runtime控制器
控制其子元件的执行时长
-
举例:设置http请求执行时长为10秒
5、Switch控制器
jmeter会给节点下的取样器编号,依次为0,1,2……,Switch控制器可以控制执行哪个请求,如果指定的编号超出了节点数或者不指定,则运行第0个取样器 -
举例1:运行第二个http请求
-
举例2:运行第一个http请求
6、While控制器
While控制器下的元件将一直运行到while条件为false -
举例:设置变量SubTotal为100,While控制器的条件KaTeX parse error: Expected group after '_' at position 2: {_̲_javaScript({SubTotal}<500)}一直为true,所以会一直运行下去
7、交替控制器
节点下的取样器会交替执行
- 举例:设置一个线程执行3次
8、仅一次控制器
仅一次控制器下的元件只执行一次
9、吞吐量控制器
吞吐量控制器可以用来控制元件的执行次数
选项 | 描述 |
---|---|
Percent Executions | 按执行次数的百分比计算执行次数,Throughput取值范围为0~100 |
Per User | 按虚拟用户数计算执行次数,未选中则按所有虚拟用户 |
Total Executions | 按Throughput值来指定执行次数,可以是任意整数 |
- 举例
序号 | 线程数 | 循环次数 | 模式 | Throughput | Per User | 执行次数 |
---|---|---|---|---|---|---|
1 | 2 | 10 | Percent | 50 | Y | 10 |
2 | 2 | 10 | Percent | 50 | N | 10 |
3 | 2 | 10 | Total | 7 | Y | 14 |
4 | 2 | 10 | Total | 7 | N | 7 |
5 | 2 | 2 | Total | 7 | Y | 10 |
6 | 2 | 2 | Total | 7 | N | 10 |
(1)序号1和2可以看出Per User对于Percent模式没有影响
(2)序号3时,每个虚拟用户执行7次,总共执行14次
(3)序号4时,所有虚拟用户执行7次,总共执行7次
(4)序号5时,每个虚拟用户执行7次,总共执行14次,但是线程组的循环次数是2乘以2,所以最多执行4次
(5)序号5时,所有虚拟用户执行7次,总共执行7次,但是线程组的循环次数是2乘以2,所以最多执行4次
10、条件控制器
通过某个条件控制此节点下的元件是否运行
- 举例:设置变量var的值为5,条件使用JavaScript将变量var的值与5比较,结果返回ture,则执行请求
- 举例:表达式的结果为ture时执行请求