javascript - Jmeter,而 Controller 卡在请求上并且不循环

标签 javascript jmeter jmeter-plugins

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

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

当我执行这个测试时,它在http请求之后卡住了,该请求以绿色执行,接下来什么也没有发生,这里可能有什么问题?

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

Siunčiamas=正在发送

尝试了一些不同的东西。当 Controller 值更改为 -

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

并将 reg 表达式提取器值转换为 -

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

在 Controller 之前,我给状态变量值“Siunčiamas”

现在它停留在http请求上,但我在它后面添加了调试采样器,所以它每5秒重复一次。但它应该循环,直到正则表达式提取器找不到所需的值并返回不等于“Siunčiamas”的默认值,因此当 Controller 失败时。我在这里没有得到什么吗?

Screenshot

最佳答案

不是循环意味着,While Controller 中的条件不满足,不返回true .

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

  • indexOf返回-1如果在父级(州)中找不到该字符串

第一次,它运行是因为,你设置了 Statenot set yet ,其中条件返回 true (indexOf 返回 -1,因为“尚未设置”不包含“已接收”)

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. 如果测试停止,您可以假设条件失败(这意味着状态包含“已接收”),因此当 Controller 停止发送请求并退出时。 while Controller 的总体执行时间给出 ( number of times http request has been sent* (http request response time + 5 seconds) ) 获取“已接收”消息所需的时间。 注意:将 While Controller 作为子级添加到事务 Controller 以获取总体执行时间。
  2. 如果测试仍在运行,则表明您的测试设计存在问题。预计每 5 秒发送一次 http 请求。

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

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

enter image description here

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

关于javascript - Jmeter,而 Controller 卡在请求上并且不循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39638470/

相关文章:

javascript - 如何在 "style"标签中使用变量?

jmeter - 如何在 jmeter 中生成 HTML 报告

jMeter 出错后再次调用请求

android - 无法使用 JMeter 录制 Android 应用程序

mysql - 在 JMETER 中将汇总报告结果添加到数据库

javascript - Javascript 中可选异步预处理的习惯用法是什么?

php - 将文本字段的值添加到另一个文本字段

javascript - 根据特定值拆分字符串,但保留分隔符,但这样做时不要将它们附加到任何东西上

groovy - 用户定义的变量显示为 48 而不是 0

java - 如何将 Jmeter 变量保存到 csv 文件