Apache Jmeter - 需要线程范围变量

Apache Jmeter - need thread scope variables

我正在尝试 运行 websocket 负载测试,发现我需要访问在线程范围内定义的变量。

具体来说,我需要随机生成一个UUID作为伪用户ID。我们的 API 要求将其作为每个请求的参数传递:

发送带有 UUID 的授权请求 - 这将创建一个以系统信息为键的用户帐户 等待回应 使用 UUID

循环发送 sync/initialize

UUID 是应用程序 ID。我可以通过 UUID 函数使用用户定义的变量轻松地将其随机化,但是,用户定义的变量显然是在测试开始时计算一次,而我需要它们在线程组范围内生成。有没有办法做到这一点?如果现在,我该如何实现?

换句话说,我需要为线程组中的每个采样器访问的每个线程(作为用户)随机生成一个 UUID。

提前致谢!

您可以为第一个需要此 UUID 的采样器使用 Beanshell preprocessor,如下所示。

vars.put("uuid", "${__UUID}");

user/thread 线程组中的所有其他采样器将具有相同的 UUID,可以使用 ${uuid}.

访问它

我在负载测试中确实遇到过这个问题,解决方案是

使用纪元时间(毫秒)并附加 UUI 值。这是解决方案,因为纪元时间永远不会相同,如果同时发出两个事务,UUI 每次都会更改。所以每当你运行测试时,这些值应该是unique.Below是代码参考

epoch Time:${__javaScript(Math.round(new Date().getTime()))}
UUID: ${__BeanShell(UUID.randomUUID().toString())}

Combination is :${__javaScript(Math.round(new Date().getTime()))}_${__BeanShell(UUID.randomUUID().toString())}