2

我有一个注册 REST 服务来测试性能。对于每个循环/线程请求,只需更改必需的参数 mobilenumber

作为负载测试的一部分,如何在线程/循环到多个测试时增加我的用户定义变量(通过增量值存储为另一个 udv)。

尝试为所有成功的注册请求使用 jsr 233 预处理器

我不想使用 csv,因为我只有一个要更改的参数

我正在阅读有关 var.get() 和 vars.put() 可以使用但没有正确理解的函数。


尝试以下代码 - 代码下方显示的登录

log.info("Before execution")
log.info("${mobileNumber}") // my udv mobileNumber
log.info("${increment}") // my udv increment value

inc = ${increment}

long number = Long.parseLong(vars.get("mobileNumber"))

number = number + inc

log.info("Incremented number")
log.info(String.valueOf(number))

vars.put("mobileNumber", String.valueOf(number))

log.info("After Execution")
log.info("${mobileNumber}")

日志 :

2014/11/25 09:25:26 INFO  - jmeter.threads.JMeterThread: Thread started: Dummy services 1-1 
2014/11/25 09:25:26 INFO  - jmeter.protocol.java.sampler.JSR223Sampler: Before execution 
2014/11/25 09:25:26 INFO  - jmeter.protocol.java.sampler.JSR223Sampler: 9990000000 
2014/11/25 09:25:26 INFO  - jmeter.protocol.java.sampler.JSR223Sampler: 1000 
2014/11/25 09:25:26 INFO  - jmeter.protocol.java.sampler.JSR223Sampler: Incremented number 
2014/11/25 09:25:26 INFO  - jmeter.protocol.java.sampler.JSR223Sampler: 9990001000 
2014/11/25 09:25:26 INFO  - jmeter.protocol.java.sampler.JSR223Sampler: After Execution 
2014/11/25 09:25:26 INFO  - jmeter.protocol.java.sampler.JSR223Sampler: 9990000000 
2014/11/25 09:25:26 INFO  - jmeter.threads.JMeterThread: Thread finished: Dummy services 1-1 

根据日志,增量成功但 vars.put() 不成功?

4

4 回答 4

5

鉴于手机号码最长可达 15 位,您需要使用 Long Java 类。

假设您的UDV持有手机号码是“号码”,您可以使用以下代码段:

long number = Long.parseLong(vars.get("number")); 
number = number + 1;
vars.put("number", String.valueOf(number));

您还可以考虑使用__RandomString() JMeter 函数来生成任意长度的随机数(该函数使用字符串表示)。

有关和其他 JMeter API 对象暴露给支持脚本的测试元素的更多信息vars,请参阅如何使用 BeanShell:JMeter 最喜欢的内置组件指南。ctx

于 2014-11-24T13:59:09.400 回答
1

如果我们正在更新 JMeter 变量,我们无法使用 ${varName} 格式访问更新后的值(不确定原因)。我使用 vars.get("varName"} 函数成功获得了更新的值。

log.info("Before execution")
log.info("${mobileNumber}") // my udv mobileNumber
log.info("${increment}") // my udv increment value

inc = ${increment}

long number = Long.parseLong(vars.get("mobileNumber"))

number = number + inc

log.info("Incremented number")
log.info(String.valueOf(number))

vars.put("mobileNumber", String.valueOf(number))

log.info("After Execution")
log.info("${mobileNumber}")
log.info(vars.get("mobileNumber"))

日志:

2014/11/26 09:16:06 INFO  - jmeter.protocol.java.sampler.JSR223Sampler: After Execution 
2014/11/26 09:16:06 INFO  - jmeter.protocol.java.sampler.JSR223Sampler: 8762200000 
2014/11/26 09:16:06 INFO  - jmeter.protocol.java.sampler.JSR223Sampler: 8762201000

感谢 Dmtri 和 olyv 的帮助

于 2014-11-26T04:01:27.840 回答
0

我通常使用 BSFPre(后)处理器 + Groovy。在这种情况下,它看起来像

i = ${YOUR_UDV}
i += 1
vars.putObject("YOUR_UDV", i.toString())
于 2014-11-24T12:28:09.913 回答
0

通用公司长变量:

long number = Long.parseLong(vars.get(Parameters)); 
number = number + 1;
vars.put(Parameters, String.valueOf(number));

参数:变量名

使用 Groovy 的 inc 长变量

于 2016-02-20T12:56:58.983 回答