浅谈逻辑控制器之模块控制器
模块控制器(Module Controller)是一种高级逻辑控制器,它提供了一个强大的机制来复用和组织测试计划中的组件。本文档将深入介绍模块控制器的功能、配置方法及其应用场景。
功能概述
模块控制器允许用户在测试计划中引用另一个测试片段(通常是一个简单的控制器或组合控制器下的测试结构),并在运行时动态地插入这些片段到当前执行路径中。这意味着你可以创建通用的测试模块,并根据需要在不同的位置多次重用它们,从而简化维护并提高测试计划的灵活性。
使用场景
● 测试片段复用:当你有一个复杂的请求序列需要在多个地方执行时,可以将其封装为一个模块,然后通过模块控制器引用,避免重复编写相同的测试步骤。
● 条件执行:结合其他逻辑控制器(如If Controller),可以根据条件决定是否执行特定的模块。
● 参数化测试:通过结合用户定义的变量或CSV数据集控制器,模块控制器可以针对不同的数据集执行相同的测试逻辑。
● 测试计划结构优化:模块化设计有助于保持测试计划的清晰和可维护性,特别是在大型复杂的性能测试项目中。
配置步骤
- 创建测试片段:
○ 在测试计划中,选择或创建一个线程组。
○ 右键点击线程组,选择“添加” > “逻辑控制器” > “简单控制器”(或其他控制器作为模块容器)。
○ 在这个新控制器下,添加你需要复用的采样器、前置处理器、后置处理器等测试元素。 - 保存测试片段(可选):
○ 如果希望将此模块独立保存以便在其他测试计划中复用,可以通过“另存为测试片段”功能进行保存。 - 添加模块控制器:
○ 在你想要插入模块的地方,右键点击相应的逻辑控制器或线程组,选择“添加” > “逻辑控制器” > “模块控制器”。 - 配置模块控制器:
○ 在模块控制器属性中,指定要引用的测试片段名称。这应该是之前创建的简单控制器或其他控制器的名称。
应用实例
我们编写如下脚本
线程组:保持默认
BeanShell 取样器1:编写如下代码
log.info("test1");
BeanShell 取样器2:编写如下代码
log.info("test2");
模块控制器:选择简单控制器2
运行脚本后,可以看到JMeter日志内容如下
2024-06-28 17:29:19,798 INFO o.a.j.t.JMeterThread: Thread started: 线程组 1-1
2024-06-28 17:29:19,799 INFO o.a.j.u.BeanShellTestElement: test1
2024-06-28 17:29:19,800 INFO o.a.j.u.BeanShellTestElement: test2
2024-06-28 17:29:19,800 INFO o.a.j.u.BeanShellTestElement: test2
2024-06-28 17:29:19,801 INFO o.a.j.t.JMeterThread: Thread is done: 线程组 1-1
可以看到简单控制器2下面的BeanShell 取样器2执行了两次。
注意事项
● 确保模块控制器引用的测试片段存在于同一测试计划中,或者已经作为测试片段被正确导入。
● 模块控制器不会传递其上级作用域内的变量或配置给被引用的模块,除非这些变量是全局的。
● 模块控制器执行时不改变当前线程的上下文,因此采样器的执行结果如同直接在当前线程组内一样。
总结
模块控制器是JMeter中实现测试计划模块化和复用的关键工具。通过熟练应用模块控制器,测试工程师可以构建更加高效、灵活且易于维护的性能测试方案。掌握其使用方法对于提升测试效率和质量至关重要。
标签:测试计划,控制器,浅谈,模块,片段,线程,测试 From: https://blog.csdn.net/u012151594/article/details/140092791