Module Controller
模块控制器(Module Controller)提供了一种在运行时将测试计划片段替换为当前测试计划的机制。
一个测试计划片段由一个控制器和其中包含的所有测试元件(采样器等)组成。该片段可以位于任何线程组中。如果该片段位于线程组中,则可以禁用其控制器,以防止该片段被模块控制器运行(模块控制器除外)。或者您可以将片段存储在一个虚拟线程组中,并禁用整个线程组。
可以有多个片段,每个片段下面有不同系列的取样器。只需在下拉框中选择适当的控制器,模块控制器就可以很容易地在这些多个测试用例之间切换。这为快速且容易地运行许多替代测试计划提供了便利。
模块控制器使用的任何片段都必须有唯一的名称,因为在重新加载测试计划时,这个名称用于查找目标控制器。出于这个原因,最好确保控制器名称不是默认名称,否则,当向测试计划添加新元件时,可能会意外地创建一个重复名称。
简而言之:可以理解为引用、调用的意思。
Module Controller的目标
Module Controller的目标是向JMeter添加模块化。一般的想法是,web应用程序由小的功能单元(即登录、创建帐户、注销……)组成,这些功能单元由实现功能的请求组成。这些小的功能单元可以作为模块存储在SimpleControllers中,这些模块可以快速链接在一起以形成测试。ModuleController通过充当指向工作台下面任何控制器的指针来促进这一点。控制器及其子元素将在运行时取代ModuleController。配置元素可以附加到ModuleController,以更改模块的功能(哪个用户登录了,创建了哪个帐户,等等)。
参数介绍
属性 | 描述 | 必填 |
---|---|---|
Name | 控制器名称,可以根据实际情况进行设置 | 否 |
Comments | 注释,描述在业务中的作用 | 否 |
Find target element | 快速查找元件并且跳转到该元件界面 | 否 |
Module To Run | 选择需要运行的控制器对象 | 是 |
控制运行测试片段
新建测试片段
新建两个测试片段(测试片段是应用在控制器上的一个特殊线程组,与线程组处于同一层级,必须与Include Controller或模块控制器一起使用才被执行),登录片段和注册片段。
登录片段新增一个Simple Controller控制器,在该控制器下再新增两个登录请求,一个登录失败的请求和一个登录成功的请求;注册片段也新增一个Simple Controller控制器,在该控制器下再新增两个请求,一个注册成功的请求和一个注册失败的请求,如下图所示:
新增Module Controller
在测试计划下添加一个线程组,并在该线程组下新增一个Module Controller和一个监听器,如下图所示:
使用模块控制器调用测试片段
同一个线程组中,有多个测试片段,只需通过模块控制器下拉框中选择适当的控制器,即可在这些多个测试用例之间轻松切换。但注意这些片段名称必须唯一。
- 模块控制器只选择登录操作,则只运行登录操作的测试片段,如下图所示:
运行结果如下所示:
- 模块控制器只选择注册操作,则只运行注册操作的测试片段,如下图所示:
运行结果如下图所示:
引入当前测试计划
在测试计划中添加一个线程组,并且设置循环3次,在线程组下添加一个Once Only Controller和一个Sample Controller,如下图所示:
模块控制器选择Once Only Controller,那么此时该控制器下的请求只会请求2次,那么为什么不是3次呢?因为按照顺序往下执行时,Once Only Controller执行了一次,由于该控制器只会执行一次,然后到模块控制器时又调用了一次,所以只执行了2次。执行结果如下图所示:
如果选择Sample Controller,那么该控制下会执行6次,运行结果如下图所示:
如果把Sample控制器禁用,并且模块控制器下选择的Sample 控制器,那么仍然会执行,如下图所示:
引入另一个线程组的测试片段
添加两个线程组,第一个线程组下的内容,线程组名称为“线程组一”,与章节“引入当前测试计划”一样,另外一个线程组下添加模块控制器,然后把“线程组一”禁用,此时仍然可以调用线程组一下的测试片段,如果模块控制器选择Sample Controller,运行结果如下所示: