使用多个REST端点的结果开发JMeter测试计划

3

在JMeter中,是否可以开发一个测试计划,使第一个测试的结果(一个ID)成为下一个测试的输入,并且在接下来的4个测试中都如此,因为每个测试都会生成一个唯一的ID,每个这些ID都是相互依赖的。 它们之间的关系如下:提交ID > 执行ID > 两者将生成完成ID以表示结果是否通过。 这些都是REST API调用。 我需要运行并发用户负载测试。 最后,我需要从每个测试中测量延迟和吞吐量。


是的,这是可能的,但您的问题过于宽泛,无法提供任何实际示例(有许多方法可以做到这一点,具体取决于您的测试计划的情况)。 - timbre timbre
4个回答

2

在采样器请求之间,使用JSON后处理器解析API响应,将其分配给${variable_name}并在其他请求中使用。


1
它应该看起来像这样:

It should look something like this.

Thread group
     Userdefined variables
     Http Sampler
       Regex to get id
     Http Sampler
       Regex to get id

如果您想测量所有取样器的响应时间,请将一个简单的控制器作为所有取样器的父级。

0

感谢您的快速提示。我通过将ID传递到正则表达式中使第一步骤工作,但是同样的正则表达式在第三步骤中不起作用。让我在这里提供更多细节。基本上,第一个post命令会给出提交ID>我将该ID用于正则表达式>在下一步中使用类似于'/../2ndStep/submissionId'的URL运行get命令>这被传递了>我在下一个get命令中使用相同的正则表达式,其URL类似于'/../3rdStep/submissionId/executions'>这应该给出另一个executionId,但对我来说失败了。我不确定我错过了什么。


如果我像这样在采样器中传递变量值而不是变量名称,测试就会通过。 /../3rdStep/${submissionId}/executions/. 我希望这是在下一个采样器中传递的正确方式。 - Santana

0

感谢大家提供的解决方案。但是我需要以不同的方式来实现以下要求。

当我使用JMeter在我的REST API HTTP请求上运行POST命令测试时,它会返回一个ID作为响应。其他步骤将使用此ID完成工作。我目前正在将ID传递到正则表达式中,并在每个步骤的采样器之间使用它,如上所建议,然后测量延迟,但是依赖于该ID的GET步骤可能需要一些时间才能完成。因此,我不能将这些GET步骤放入一个线程中,因为其中两个步骤失败了,因为它们可能需要一些时间才能完成。有没有办法将POST命令与其余部分分开,并自动开始轮询其余步骤上的GET命令以解决此问题。底线是我需要测量每个步骤的延迟和吞吐量。请让我知道是否有一种方法可以在JMeter中实现这一点?

再次感谢,Santana


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接