2012-05-09 41 views
0

我有以下结构的测试部分:JMeter Correlator +交错控制器在采样器错误上重置?

Test Part 
-Correlator 
--Debug Sampler 
--Interleave Controller 
---Page 1 
---Page 2 
----Response Assertion 
---Page 3 (etc) 
--Regular Expression Extractor 
--Post Debug Sampler 

这是工作的罚款时一切正常,但我一直在添加断言检查我收到的答复是正确的。线程组被设置为在采样器故障时启动下一个循环。当页面2下的响应断言失败时,下一个循环开始,但是当它到达交错控制器时,它直接跳到第3页,这引起了问题。

有没有办法在采样器故障时重置交错控制器状态?

感谢

Willisterman

回答

0

这是预期行为;交错控制器的设计就是这样工作的。不管你从任何断言得到什么结果,它仍然会移动到下一个循环的列表中的下一个采样器。像这样:

循环1将执行第1页
循环2将执行第2页
循环3将执行第3页
循环4将执行第1页
LOOP5将执行第2页
LOOP6将执行第3页
LOOP7将执行Page 1
...等。

没有简单的方法 - 我知道 - 重置交错控制器的位置。相反,JMeter中有大量的逻辑控制器(If,While,For Each等)以及计数器甚至beanshell逻辑,因此大多数情况都是可能的。

+0

我使用交错控制器的唯一原因是在每个页面请求后运行一个正则表达式提取器。这使我能够获得视图状态,因为它是我正在测试的.net系统。 这似乎有点奇怪的行为,但我可以通过在每个页面下放置一个正则表达式提取器来替换它......它看起来不会很好,或者易于维护,但... – Willisterman

+0

听起来像你不需要使用交错控制器。我只是简单地将每个请求的正则表达式作为一个孩子,这是更简单和更可预测的。我通常以viewstates的方式工作,或者说,我把正则表达式作为一个孩子,只有那些给我一个我以后需要回发的视图状态的请求。 –

+0

我已经把它放回了一个更简单的布局,它可以工作。这就是我想要有一个漂亮的布局。能够让调试采样器自动包装每个请求是非常有用的。 – Willisterman