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循环结束

相关推荐
弹简特21 小时前
【Fiddler抓包工具】一文通关Fiddler抓包工具【附:Fiddler结合jmeter接口测试实战】
jmeter·fiddler·接口测试·抓包
测试19981 天前
性能测试方案设计的方法和思路
自动化测试·软件测试·测试工具·jmeter·测试用例·压力测试·性能测试
川石课堂软件测试1 天前
软件测试|常见面试题整理
数据库·python·jmeter·mysql·appium·postman·prometheus
这是个菜比测试1 天前
jmeter无法访问内网接口
jmeter
qq_452396232 天前
第三篇:《JMeter断言:验证接口响应正确性》
android·jmeter
是小章啊3 天前
Jmeter压测实战之HTTP_POST
网络协议·jmeter·http
古城小栈4 天前
封神!Rust 出品 HTTP 压测神器 cargo-whero,轻量碾压 JMeter、wrk,新手也能秒上手
jmeter·http·rust
_周游5 天前
【软件测试】使用JMeter进行压力测试_3
jmeter·压力测试
EVE จุ๊บ7 天前
如何修改mac上的jmeter堆内存
jmeter·macos
狼爷7 天前
JMeter 全指南:从性能测试入门到架构级实战
jmeter·测试