Jmeter:使用SetUp thread group变量中的变量值运行HTTP sampler n次

Jmeter:使用SetUp thread group变量中的变量值运行HTTP sampler n次,jmeter,Jmeter,我们正在使用Jmeter 5.1.1v来执行负载测试,我们的场景是从设置线程组中获取25个令牌(在设置线程组下,线程设置为25,启动时间为25秒),然后有一个正常的线程组,其中包含HTTP采样器,在此采样器中,需要为每1个线程传递这25个令牌,因此此线程组包含25个线程的配置,时间为25秒 但是,当运行测试时,生成了25个令牌,但只有最后一个用于所有线程的第25个令牌(使用第25个令牌)。尝试为每个线程获取应该得到一个令牌值,如果是第二个线程,那么应该使用第二个令牌 结构如下: TestPlan

我们正在使用
Jmeter 5.1.1
v来执行负载测试,我们的场景是从
设置线程组
中获取25个令牌(在
设置线程组
下,线程设置为25,启动时间为25秒),然后有一个正常的
线程组
,其中包含
HTTP采样器
,在此采样器中,需要为每1个线程传递这25个令牌,因此此线程组包含25个线程的配置,时间为25秒

但是,当运行测试时,生成了25个令牌,但只有最后一个用于所有线程的第25个令牌(使用第25个令牌)。尝试为每个线程获取应该得到一个令牌值,如果是第二个线程,那么应该使用第二个令牌

结构如下:

TestPlan 
--SetUp Thread Group - 25 Threads, 25 Secs
---HTTP Sampler - Gets the Token here using RegEx and Set the value as Property using Beanshell Assertion
O/P: Got 25 tokens generated, and set in the property value

--Thread Group - 25 Threads, 25 Secs
---HTTP Sampler - Get Token value as property
O/P: Only the 25th token been used for all 25 threads
编辑

已尝试回答,但出现错误:


在同一线程组内创建令牌,如果不想考虑结果,

您可以通过添加行
prev.setIgnore()

prev-(SampleResult)-访问上一个SampleResult


在同一线程组内创建令牌,如果不想考虑结果,

您可以通过添加行
prev.setIgnore()

prev-(SampleResult)-访问上一个SampleResult


由于不知道如何在线程组之间传递令牌,因此很难判断出问题出在哪里,这是一个“盲点”:您使用的是一个被覆盖的JMeter属性

解决方案是使令牌线程特定,例如,您可以将其设置为:

props.put("token_" + (ctx.getThreadNum() + 1), vars.get("variable from regex here"));
然后用类似的方法阅读:


还有几点提示:

  • 到现在为止
  • 您,考虑使用JSR223测试元素和Groovy语言
  • 在线程之间传递数据(即使它们位于不同的线程组中)使用

  • 由于不知道如何在线程组之间传递令牌,因此很难判断出问题出在哪里,这是一个“盲点”:您使用的是一个被覆盖的JMeter属性

    解决方案是使令牌线程特定,例如,您可以将其设置为:

    props.put("token_" + (ctx.getThreadNum() + 1), vars.get("variable from regex here"));
    
    然后用类似的方法阅读:


    还有几点提示:

  • 到现在为止
  • 您,考虑使用JSR223测试元素和Groovy语言
  • 在线程之间传递数据(即使它们位于不同的线程组中)使用

  • 为什么使用安装线程组?为什么不在同一线程组内创建令牌呢?谢谢回复,SEUP线程组令牌生成请求我们不想考虑结果分析,我们只需要分析正常线程组取样器请求的性能。令牌采样器是我们用来通过点击API生成令牌的变通方法。为什么要使用安装线程组?为什么不在同一线程组内创建令牌呢?谢谢回复,SEUP线程组令牌生成请求我们不想考虑结果分析,我们只需要分析正常线程组取样器请求的性能。令牌采样器是我们用来通过点击API生成令牌的解决方法。再次感谢您的指导,我们尝试添加建议的后处理器和线程组,现在它同时包含令牌采样器和请求采样器。然而,获取错误(通过在JSR233后处理器中选择不同的语言—Java/JS/Beanshell进行尝试)将屏幕截图附加到主线程中。添加脚本时我可能做错了什么。请仅使用
    prev.setIgnore()
    ,我将删除与您的案例不完全相关的注释。非常感谢,在token sampler下添加后处理器后,它就工作了。谢谢你,现在一切如期。谢谢你的指导。接受答案。再次感谢您的指导,尝试添加建议的后处理器和线程组,该组现在同时包含令牌和请求采样器。然而,获取错误(通过在JSR233后处理器中选择不同的语言—Java/JS/Beanshell进行尝试)将屏幕截图附加到主线程中。添加脚本时我可能做错了什么。请仅使用
    prev.setIgnore()
    ,我将删除与您的案例不完全相关的注释。非常感谢,在token sampler下添加后处理器后,它就工作了。谢谢你,现在一切如期。谢谢你的指导。我接受了答案。