如何在Jmeter中存储提取的RegEx并在下一个采样器中使用它

时间:2018-03-22 08:42:37

标签: jmeter

我试图测量添加到线程组中每个采样器的每个REST API的并发性响应吞吐量。我的测试计划中的线程组如下

线程组

  1. 第一取样器> HTTP POST的POST POST /路径/>结果>生成唯一ID1 - > RegEx:$ {uniqueId1}
  2. 1.1。暂停10秒的测试操作,因为POST可能需要一些时间来生成唯一的ID1

    1. 第二个采样器> HTTP GET / REST API路径/ $ {uniqueId1}>结果>生成唯一ID2 - > RegEx:$ {uniqueId2}

    2. 第三个采样器> HTTP GET / REST API路径/ $ {uniqueId1} / $ {uniqueId2}>结果>生成唯一的ID3 - > RegEx:$ {uniqueId3}

    3. 第四个采样器> HTTP GET / REST API路径/ $ {uniqueId1} / $ {uniqueId2} / $ {uniqueId3} / data>结果

    4. 正如您所看到的,因为每个采样器彼此依赖,我必须将它们添加到一个线程组中,并且功能验证工作正常,没有任何问题。

      但我需要测量每个采样器中每个REST API的响应吞吐量。这意味着我需要运行100到100K +之类的并发线程来测量每个API响应的限制限制。

      如果我按照10个线程和5个循环计数运行上述线程组,则每个采样器正在等待,直到下游采样器完成,因此吞吐量计算会有所不同,因为10个线程基于5个循环计数重复5次。

      所以我试图找到一种方法来完成所有POST,无论线程数是10还是线程数是10,有5个循环计数,并收集所有$ {uniqueId1}并将其传递给所有GET采样器这样POST采样器就不必等待完成剩余的采样器。

      类似地,$ {uniqueId2}和$ {uniqueId3}应该遵循相同的过程。

      那么在Jmeter中有没有办法实现这个目标?立即回答将非常感谢!

      提前致谢

1 个答案:

答案 0 :(得分:0)

  1. 您不需要测试操作采样器,因为JMeter在开始下一个采样器之前等待之前的采样器完成。
  2. 如果您想并行运行请求,最直接的解决方案是在setUp Thread Group中根据需要创建尽可能多的ID,然后并行运行4个普通Thread Groups代表您的方案。
  3. 您可以使用JMeter属性在线程组之间传递uniqueIDs值,即:

    有关在不同线程组之间共享数据的示例,请参阅Knit One Pearl Two: How to Use Variables in Different Thread Groups文章