测试基础 Jmeter 订单压测时,订单号唯一问题

jwang · 2023年06月01日 · 最后由 MonGol 回复于 2023年06月02日 · 4849 次阅读

背景:对下单接口进行压测,其中参数 orderno 需要唯一?
遇到问题:
1.对 orderno 参数采用随机数/uuid 生成,但在请求中,仍然出现,订单号重复问题?
分为两种场景:
a:并发数为 1,迭代大于 1;
b:并发数大于 1,迭代为 1;
c:并发数和迭代数都大于 1;

1.在请求参数中设置变量,但发现一个请求中,两个参数取的值是不一样的,签名校验无法通过

2.设置如下:
设置:用户变量为:orderno=${__UUID};设置如下:

3.设置如下:

总结:正常情况下,第三种设置应该可以满足需求,但迭代时,订单号出现重复,经过排查,问题产生原因:
在 JSR223 脚本中,默认采取的机制是,预先将脚本编译缓存起来,其中有个选项--cache complited script if avariable 默认是勾选上的;
这也就是为什么 JSR223 脚本要比 beanshell 效率要高的原因之一,把这个选项清掉就可以了;beanshell 这种写法是可以满足的;

综上:建议在压测时,尽量设置无脚本,采用 csv 来代替参数变量

共收到 4 条回复 时间 点赞

可以直接用 jmeter 中的函数生成吧。只是获取一个随机数没有必要用 beanshell 的。

差班生 回复

不用自带的 ${UUID}原因是不满足场景,因为请求参数中,有多次引用 orderno,如果使用 ${UUID}会导致,同一个请求中,取到的订单号不一样

新建一个用户参数 , 然后 ${uuid}就可以, 每次都会不一样

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册