逻辑控制器让你定制JMeter的使用来决定何时发送请求的逻辑。 逻辑控制器可以改变其子元素的请求的顺序。 他们可以修改自己的请求,导致JMeter的重复请求,等等。
要了解逻辑控制器的测试计划的效果,考虑下面的测试树:
- 测试计划
- 线程组
- 一旦唯一的控制器
- 加载搜索页面(HTTP取样)
- 交错控制器
- 搜索的“A”(HTTP取样器)
- 搜索的“B”(HTTP取样器)
- HTTP默认请求(配置元素)
- HTTP默认请求(配置元素)
- Cookie管理(配置元素)
有关此测试的第一件事情就是登录请求将执行仅在第一次通过。 后续迭代会跳过它。 这是由于只有一次控制器的影响。
登录后,搜索页面(想象一个用户登录的Web应用程序,然后下一个采样器加载到一个搜索页面做一个搜索)。 这仅仅是一个简单的要求,不通过任何逻辑控制器过滤。
加载搜索页面后,我们希望做一个搜索。 其实,我们想要做的两个不同的搜索。 但是,我们希望重新装载搜索页面本身相互之间搜索。 我们可以通过4个简单的HTTP请求元素(负载搜索,搜索“A”,负载搜索,搜索的“B”)。 相反,我们使用交错控制器 ,通过一个孩子每次请求通过测试。 它使排序(IE浏览器 - 它不通过随机的,而是“记住”它的地方)的子元素。 交错2个孩子的要求可能会矫枉过正,但很容易被有8,或20个孩子的请求。
注意:HTTP请求默认值属于交错控制器。 试想一下,“搜索”和“搜索”共享相同的路径信息(HTTP请求规范包括域,协议,端口,方法,路径和参数,加上其他可选项目)。 这是有道理的 - 无论是搜索请求,打相同的后端搜索引擎(servlet或CGI脚本,让我们说)。 配置,而不是相同的信息都在其路径领域的HTTP取样器,我们可以抽象的信息,以一个单一的配置元素。 当交错控制器从“搜索A”或“搜索B”请求“通行证”,这将填补空白从HTTP默认请求配置元素的值。 因此,我们对这些请求离开的路径字段空白,并投入Configuration元素的信息。 在这种情况下,这是一个最好的未成年人的利益,但它演示功能。
树中的下一个元素是另一个HTTP默认请求,此时添加到线程组本身。 线程组有一个内置的逻辑控制器,因此,它使用此配置元素完全如上所述。 它填补空白的任何要求,通过。 在Web测试是非常有用的,留在所有的HTTP取样元素域字段为空,相反,放入一个HTTP默认请求元素的信息,添加到线程组。 通过这样做,你可以在不同的服务器上测试您的应用程序,只需在你的测试计划中通过改变一个字段。 否则,你必须编辑每个采样。
最后一个元素是一个HTTP Cookie管理器 。 一个cookie管理器应该添加到所有的Web测试 - 否则JMeter会忽略cookie。 通过添加线程组级别中,我们将确保所有的HTTP请求将共享相同的cookie。
逻辑控制器可以结合起来,以达到不同的结果。 见列表内置逻辑控制器 。