背景:对下单接口进行压测,其中参数 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 来代替参数变量