JMeter有两种控制器:采样器和逻辑控制器。这些驱动测试的处理。html
采样器告诉JMeter发送请求到服务器。例如,若是你想要JMeter发送http请求添加一个HTTP请求取样器。您还能够经过向采样器中添加一个或多个配置元素来定制请求。更多信息,参见:采样器。web
逻辑控制器让你自定义JMeter决定要发送请求时用什么样的逻辑。例如,您能够在两个HTTP请求采样器之间添加交错逻辑控制器apache
逻辑控制器让您自定义JMeter决定要发送请求时的逻辑。逻辑控制器能够改变来自子元素的请求顺序。他们能够本身修改请求,致使JMeter重复请求,等等。后端
要了解逻辑控制器对测试计划的影响,请考虑如下测试树:服务器
登陆后,下一个采样器加载搜索页面(想象一个用户登陆的web应用程序,而后进入搜索页面进行搜索)。这只是一个简单的请求,没有通过任何逻辑控制器的过滤。cookie
加载搜索页面后,咱们要进行搜索。实际上,咱们想作两种不一样的搜索。可是,咱们但愿在每次搜索之间从新加载搜索页面自己。咱们能够经过4个简单的HTTP请求元素(加载搜索、搜索“A”、加载搜索、搜索“B”)来实现这一点。相反,咱们使用Interleave Controller控制器每次经过测试传递一个子请求。它保持了排序(即它不会随机地传递一个,而是“记住”它的子元素的位置)。插入两个子请求可能会被过分使用,可是可能会有8个或20个子请求。测试
注意,HTTP Request Defaults属于Interleave Controller。假设“Search A”和“Search B”共享相同的路径信息(HTTP请求规范包括域、端口、方法、协议、路径和参数,以及其余可选项)。这是有意义的——二者都是搜索请求,命中相同的后端搜索引擎(好比servlet或cgil - script)。咱们能够将这些信息抽象为单个配置元素,而不是在路径字段中使用相同的信息配置两个HTTP Samplers。当Interleave控制器“传递”来自“Search A”或“Search B”的请求时,它将从HTTP默认请求配置元素的值中填充空白。所以,咱们将这些请求的路径字段留空,并将这些信息放入配置元素中。在这种状况下,这充其量只是一个小的好处,但它展现了这个特性。ui
树中的下一个元素是另外一个HTTP默认请求,这个时间添加到线程组自己。线程组有一个内置的逻辑控制器,所以,它使用这个配置元素,就像上面描述的那样。它填入通过的任何请求的空格。在web测试中,将全部HTTP Sampler元素中的域字段保留为空是很是有用的,相反,将这些信息放入HTTP默认请求元素中,添加到线程组中。经过这样作,您能够经过改变测试计划中的一个字段来测试您在不一样服务器上的应用程序。不然,你必须编辑每个采样器。搜索引擎
最后一个元素是HTTP Cookie管理器。全部web测试都应该添加一个Cookie管理器——不然JMeter将忽略Cookie。经过在线程组级别添加它,咱们确保全部HTTP请求将共享相同的cookie。spa
逻辑控制器可组合实现各类结果。请参阅内置逻辑控制器列表( built-in Logic Controllers.)。
测试片断元素是一种特殊类型的控制器,它存在于与线程组元素相同级别的测试计划树中。它与线程组不一样,由于它没有被执行,除非由 模块控制器 或 包含控制器 引用。