Jmeter当控制器被请求卡住而且没有循环

时间:2016-09-22 12:00:23

标签: javascript jmeter jmeter-plugins

我正在编写一个测试,等待使用while控制器的特定响应。 更确切地说,我用jmeter发送消息,然后该消息获得状态“发送”,并且在大约30秒后它将状态改变为“已接收”。因此,使用while控制器我会尝试获取该消息需要多长时间才能收到。

  1. 所以我创建了“State”变量并给了他“尚未设置”的价值
  2. 将控制器条件设置为$ {__ javaScript(“$ {State}”。indexOf(“Received”)== -1,)}
  3. 然后在控制器I中添加http请求项目,该页面应该包含更改后的接收状态
  4. 在http请求中,我添加了正则表达式提取程序,它应该将所有响应文本的reg表达式设置为“(。+)”并将引用名称设置为“State”
  5. 在http请求中添加5秒的常量计时器
  6. 当我执行这个测试时,它会在http请求后被卡住,它以绿色执行,接下来没有任何反应,这里可能出现什么问题?

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

    Siunčiamas=发送

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

    时更改

    $ {__ javaScript(“$ {State}”==“Siunčiamas”,)}

    和reg表达式提取器值为 -

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

    之前,而控制器我给状态变量值“Siunčiamas”

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

    Screenshot

1 个答案:

答案 0 :(得分:1)

它不是循环方式,条件在while控制器不满足,不返回true

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

  • indexOf返回-1,以防在父(州)中找不到字符串

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

  

当我执行此测试时,它会在http请求后卡住,即   以绿色执行,接下来没有任何事情发生,可能是什么问题   这里吗?

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

  1. 如果测试停止,您可以假设条件失败(这意味着状态包含“已接收”),因此控制器停止发送请求并出现。 while控制器的总执行时间给出(number of times http request has been sent* (http request response time + 5 seconds))获取“已接收”消息所需的时间。 注意:将控制器作为子项添加到事务控制器以获取总体执行时间。
  2. 如果测试仍在运行,则测试设计出现问题。预计是每5秒,http请求应该是SENT。
  3. 添加Debug Sampler以了解状态变量使用Reg Ex Extractor捕获的值。

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

    enter image description here

    与我们分享您的测试计划以帮助您。