Jmeter - 响应断言触发时暂停?

时间:2012-04-11 16:21:43

标签: jmeter

我有一个Jmeter测试并在我正在构建的API上运行 如果API过载,则API返回:

{"status":{"type":"failure","cause":"internal","http":500}}

我想做的是如果JMeter得到了那个结果,也会暂停。

我已经设置了一个捕获这些错误的响应断言。看起来这应该是一个简单的设置,但我没有看到它。我看到我可以添加一个If Controller,但这只适用于Javascript vars。

我是否需要添加正则表达式提取器,将“失败”作为“类型”变量抓取,然后将其添加到If控制器?
似乎有点过于复杂了?
我错过了什么吗?

1 个答案:

答案 0 :(得分:2)

尝试使用BeanShell Timer来处理这种情况。

  • 允许脚本编写,因此您可以根据需要对计时器行为进行编程;
  • 可以访问jmeter上下文 - 通过ctx变量 - 所以你可以处理ResponseCode条件。

Here你可以找到一篇很好的文章,并举例说明如何使用 here - 如何访问beanshell变量并处理响应代码。

你的情况将是这样的:

if (prev.getResponseCode().equals("500") == true) { 
    . . .
}

请注意:BeanShell Timer 中使用的脚本应返回值用作等待的毫秒数。

另一个问题是这样做的原因。 如果您有负载/压力测试场景,那么这些结果是您在测试期间应该得到的结果,然后进行分析 如果您有一种“功能”测试场景,那么您必须以更一般的方式处理这种情况,向每个采样器添加任何类型的正确配置timer - 以避免过载或模拟“真实”场景。
我错过了什么吗?