控制器在请求时卡住并且不循环时的 Jmeter
Jmeter while controller gets stuck on request and does not loop
我正在编写一个等待使用 while 控制器的特定响应的测试。
更准确地说,我用 jmeter 发送一条消息,然后该消息的状态为 "sending",大约 30 秒后状态变为 "received"。因此,使用 while 控制器我尝试获取接收该消息需要多长时间。
- 所以我创建"State"变量并给他值"not set yet"
- 将 while 控制器条件设置为 ${__javaScript("${State}".indexOf("Received") == -1,)}
- 然后在 while controller 中添加 http 请求项,该页面在更改时应包含接收到的状态
- 在 http 请求中,我添加了正则表达式提取器,它应该将所有正则表达式设置为“(.+)”的响应文本和引用名称设为 "State"
- 在 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?
测试是停止了还是还在运行?
- 如果测试停止,您可以假设条件失败(这意味着状态包含 "Received"),因此当控制器停止发送请求并出来时。 while 控制器的总体执行时间给出了 (
number of times http request has been sent* (http request response time + 5 seconds)
) 获取 "Received" 消息所需的时间。 注意:将 While Controller 作为子项添加到 T运行saction Controller 以获得整体执行时间。
- 如果测试仍然是 运行,您的测试设计有问题。预计每 5 秒发送一次 http 请求。
添加 Debug Sampler 以了解 State 变量使用 Reg Ex Extractor 捕获的值。
以下是我如何理解场景的屏幕截图。
与我们分享您的测试计划以便为您提供帮助。
我正在编写一个等待使用 while 控制器的特定响应的测试。 更准确地说,我用 jmeter 发送一条消息,然后该消息的状态为 "sending",大约 30 秒后状态变为 "received"。因此,使用 while 控制器我尝试获取接收该消息需要多长时间。
- 所以我创建"State"变量并给他值"not set yet"
- 将 while 控制器条件设置为 ${__javaScript("${State}".indexOf("Received") == -1,)}
- 然后在 while controller 中添加 http 请求项,该页面在更改时应包含接收到的状态
- 在 http 请求中,我添加了正则表达式提取器,它应该将所有正则表达式设置为“(.+)”的响应文本和引用名称设为 "State"
- 在 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?
测试是停止了还是还在运行?
- 如果测试停止,您可以假设条件失败(这意味着状态包含 "Received"),因此当控制器停止发送请求并出来时。 while 控制器的总体执行时间给出了 (
number of times http request has been sent* (http request response time + 5 seconds)
) 获取 "Received" 消息所需的时间。 注意:将 While Controller 作为子项添加到 T运行saction Controller 以获得整体执行时间。 - 如果测试仍然是 运行,您的测试设计有问题。预计每 5 秒发送一次 http 请求。
添加 Debug Sampler 以了解 State 变量使用 Reg Ex Extractor 捕获的值。
以下是我如何理解场景的屏幕截图。
与我们分享您的测试计划以便为您提供帮助。