JMeter 逻辑控制器

概念

逻辑控制器: 可以按照设定的逻辑控制取样器的执行顺序

思考:
线程组属性可以控制循环次数,那么循环控制器有什么用?

控制的作用域不同:
线程组: 控制线程组下的所有请求
循环控制器: 控制其子节点的所有接口请求

如果线程组循环次数为M,循环控制器循环次数为N:
循环控制器下的HTTP请求运行次数: M * N 次
线程组下的其他HTTP请求运行次数: M次
案例: 登录接口-密码错误逻辑据校验
密码错误逻辑: 当输入密码错误3次之后,账户锁定,不能再登录, 60S后才能再次登录

IF 控制器

位置:线程组 -> 添加 -> 逻辑控制器 -> IF 控制器

如下需求:通过定义的全局变量address 和IF 控制器 来控制两个HTTP请求该执行哪一个

IF 逻辑控制器有如下两种比较方式:

方式1: JS语法比较

方式2:采用jex函数比较(推荐)

注意:HTTP请求是放在IF 控制器下面

循环控制器

位置:线程组 -> 逻辑控制器 -> 循环控制器
以下是访问baidu 5 次的案例,需要注意层级关系
当线程组的循环次数(m)和循环控制器的循环次数一起配置(n)时,最终的请求次数为 m * n

ForEach 控制器

位置:线程组 -> 添加 -> 逻辑控制器 -> ForEach控制器
与用户定义的变量和正则表达式配合一起使用,循环读取用户定义的变量
用户定义的变量需要用:固定前缀_数字 或者 固定前缀+数字的格式,方便在foreach循环中使用

ForEach 面板:

参数介绍:
- 输入变量前缀: 要读取的输入变量的固定前缀
- 开始循环字段: 要读取的输入变量后缀数字的最小值-1
- 结束循环字段: 要读取的输入变量后缀数字的最大值
- 输出变量名称: 读取输入变量的值后保存的新变量名,用于后续HTTP请求来引用

上送请求取到了key的值:

结束循环字段如何动态获取?
通过debug sample 查看jmeter 内存:

可以通过${address_matchNr} 来获取, address 为foreach面板的输入变量前缀

事务控制器

应用场景: 业务流程的性能测试

面板:

https://www.cnblogs.com/rxy622061/p/14593617.html

posted @ 2021-12-29 22:53  chuangzhou  阅读(45)  评论(0编辑  收藏  举报