Jmeter使用While控制器

1.前言

对于性能测试场景中,需要用"执行某个事物,直到一个条件停止"的概念时,While控制器控制器无疑是首选,但是在编写脚本时,经常会出现推出循环异常,获取参数异常等问题,下面总结两种常用的写法

2.${flag}直接引用判断

1.在预处理器中定义一个flag

或者在用户定义的变量中定义

def flag = true
vars.putObject("flag",flag)
log.error("JSR223 预处理程序 flag: " + flag )

2.创建While控制器

3.使用示例触发退出循环

使用"计数器"来实现每次迭代 num_ber+1

在 num_ber > 9 时,将 flag 置为 false

log.info("Elapsed Time1: ms:" + vars.getObject("flag"))
int num_ber = (vars.getObject("test_num")).toInteger()
if (num_ber > 9){
	vars.putObject("flag", false)
	}
	
	
log.info("Elapsed Time1: ms:" + vars.getObject("flag") + " num " + num_ber)

4. 运行示例

在num_ber = 10时,while循环结束

3.使用函数判断条件

这里推荐使用 ${__groovy(,)} 来作为函数载体

首先groovy语法与JSR223 中一致,便于理解和学习

其次在很多资料中显示

  • {__jexl3({C}==10)}
  • {__javaScript({C}==10)}

这两种写法存在兼容性bug,经常导致判断失败或异常报错

使用groovy:

${__groovy(vars.getObject("flag1") < 10,)}
${__groovy("vars.get("flag1")" < "10",)}

1.同上,使用预处理器,定义flag

int flag1 = 0
vars.putObject("flag1",flag1)
log.error("JSR223 预处理程序 flag1: " + flag1 )

2.设置while

3.设置退出条件

log.info("Elapsed Time1: ms:" + vars.getObject("flag1"))
int num = (vars.getObject("test_num")).toInteger()

vars.putObject("flag1",num)
log.info("Elapsed Time1: ms:" + vars.getObject("flag1") + " num " + num)

4.结果展示

在num_ber = 10时,while循环结束

相关推荐
sszmvb12349 小时前
测试开发 | 电商业务性能测试: Jmeter 参数化功能实现注册登录的数据驱动
jmeter·面试·职场和发展
小码哥说测试11 小时前
接口测试用例设计的关键步骤与技巧解析!
自动化测试·测试工具·jmeter·职场和发展·测试用例·接口测试·postman
小钱c714 小时前
Mac下安装Apache JMeter并启动
jmeter·macos·apache
古人诚不我欺17 小时前
jmeter常用配置元件介绍总结之函数助手
jmeter
川石课堂软件测试17 小时前
性能测试|docker容器下搭建JMeter+Grafana+Influxdb监控可视化平台
运维·javascript·深度学习·jmeter·docker·容器·grafana
古人诚不我欺17 小时前
jmeter常用配置元件介绍总结之取样器
jmeter
十叶知秋17 小时前
【jmeter】jmeter的线程组功能的详细介绍
数据库·jmeter·性能测试
我非夏日17 小时前
JMeter基础篇
jmeter
茶馆大橘1 天前
微服务系列五:避免雪崩问题的限流、隔离、熔断措施
java·jmeter·spring cloud·微服务·云原生·架构·sentinel
土小帽软件测试1 天前
jmeter基础01-2_环境准备-Mac系统安装jdk
java·测试工具·jmeter·macos·软件测试学习