控制器在请求时卡住并且不循环时的 Jmeter

Jmeter while controller gets stuck on request and does not loop

我正在编写一个等待使用 while 控制器的特定响应的测试。 更准确地说,我用 jmeter 发送一条消息,然后该消息的状态为 "sending",大约 30 秒后状态变为 "received"。因此,使用 while 控制器我尝试获取接收该消息需要多长时间。

  1. 所以我创建"State"变量并给他值"not set yet"
  2. 将 while 控制器条件设置为 ${__javaScript("${State}".indexOf("Received") == -1,)}
  3. 然后在 while controller 中添加 http 请求项,该页面在更改时应包含接收到的状态
  4. 在 http 请求中,我添加了正则表达式提取器,它应该将所有正则表达式设置为“(.+)”的响应文本和引用名称设为 "State"
  5. 在 http 请求中添加 5 秒的常量计时器

当我执行这个测试时,它在 http 请求后卡住,以绿色执行,接下来没有任何反应,这里可能是什么问题?

更新 ------------------------------------------ ------------------------

Siunčiamas=发送中

尝试了一些不同的东西。控制器值更改为 -

${__javaScript("${State}" == "Siunčiamas",)}

并将正则表达式提取器值设为 -

class="label-primary label" id="parentSyncState">(Siunčiamas)<

并且在我给状态变量值控制器之前 "Siunčiamas"

现在它停留在 http 请求上,但我在它之后添加了调试采样器,所以它每 5 秒重复一次。但它应该循环直到正则表达式提取器找不到所需的值和 return 默认值不等于 "Siunčiamas" 所以当控制器失败时。我这里没有东西吗?

不是循环的意思,while控制器中的条件不满足,不返回true

顺便说一下,${__javaScript("${State}".indexOf("Received") == -1,)} 的意思是,当 State 不包含 Received 时条件为真。

  • indexOf returns -1 以防在父级(州)中找不到字符串

第一次,它 运行 因为,你将 State 设置为 not set yet,其中条件 returns true (indexOf returns - 1 因为 "not set yet" 不包含 "Received")

When I execute this test, it gets stuck after http request, which is executed in green and nothing happens next, what can be the problem here?

测试是停止了还是还在运行?

  1. 如果测试停止,您可以假设条件失败(这意味着状态包含 "Received"),因此当控制器停止发送请求并出来时。 while 控制器的总体执行时间给出了 (number of times http request has been sent* (http request response time + 5 seconds)) 获取 "Received" 消息所需的时间。 注意:将 While Controller 作为子项添加到 T运行saction Controller 以获得整体执行时间。
  2. 如果测试仍然是 运行,您的测试设计有问题。预计每 5 秒发送一次 http 请求。

添加 Debug Sampler 以了解 State 变量使用 Reg Ex Extractor 捕获的值。

以下是我如何理解场景的屏幕截图。

与我们分享您的测试计划以便为您提供帮助。