浅谈逻辑控制器之Include控制器
“Include控制器”是一个特别实用的功能,它允许用户将一个或多个测试片段(通常是请求)包含到不同的测试计划或模块中,从而实现代码的复用和测试结构的优化。本文档将详细介绍JMeter中的Include控制器及其使用方法。
什么是Include控制器?
Include控制器允许测试人员从外部文件引用测试片段(.jmx文件),并将这些片段的内容合并到当前测试计划中。这意味着你可以创建通用的请求集合(如登录流程、特定API调用等),然后在不同的测试场景中重复使用,而无需复制粘贴这些请求。这种方式提高了测试脚本的维护性和灵活性。
使用场景
● 代码复用:当你有多个测试计划需要执行相同的请求序列时,可以将这些请求放在一个单独的.jmx文件中,并通过Include控制器引用,避免重复编写相同的测试步骤。
● 模块化测试:将测试计划分解为逻辑模块(如登录模块、搜索模块等),每个模块作为一个独立的.jmx文件,通过Include控制器集成到主测试计划中,便于管理和维护。
● 灵活配置:在不同的测试环境中,可能需要调整某些请求的配置(如服务器地址)。通过将这些配置敏感的部分抽离到外部文件,可以在不修改主测试计划的情况下快速适应环境变化。
如何使用Include控制器
步骤1:准备被包含的测试片段
- 首先,在JMeter中创建一个新的测试计划或打开现有的测试计划。
- 设计并保存你需要复用的测试片段到一个.jmx文件中。这可以是简单的HTTP请求、事务控制器、循环控制器等任何组合。
步骤2:在目标测试计划中添加Include控制器 - 打开你希望包含上述测试片段的JMeter测试计划。
- 右键点击测试计划的相应位置(如测试计划根节点、线程组内),选择“添加” > “逻辑控制器” > “Include Controller”。
- 给Include控制器命名,以便于识别其用途。
步骤3:指定包含的文件 - 在Include控制器的属性中,找到“文件名”字段。
- 输入或浏览你想要包含的.jmx文件的路径。如果要包含多个文件,可以使用逗号分隔文件路径。
步骤4:验证与运行 - 确认所有包含的文件路径正确无误。
- 保存测试计划。
- 运行测试计划,确保Include控制器成功加载并执行了指定的测试片段。
实例说明
所有我们编写两个JMeter脚本,其中脚本1内容如下:
其中BeanShell取样器1内容如下:
log.info("测试片段1");
其中BeanShell取样器2内容如下:
log.info("测试片段2");
其中BeanShell取样器3内容如下:
log.info("测试片段3");
其他参数默认。
该脚本保存路基为D:\test.jmx
脚本2内容如下:
Include控制器:Include Test Plan中文件名配置为D:\test.jmx
其中BeanShell取样器4内容如下:
log.info("测试");
运行脚本,我们可以从JMeter日志中看到如下结果
2024-06-25 14:52:57,075 INFO o.a.j.t.JMeterThread: Thread started: 线程组 1-1
2024-06-25 14:52:57,075 INFO o.a.j.u.BeanShellTestElement: 测试片段1
2024-06-25 14:52:57,075 INFO o.a.j.u.BeanShellTestElement: 测试片段2
2024-06-25 14:52:57,075 INFO o.a.j.u.BeanShellTestElement: 测试
2024-06-25 14:52:57,075 INFO o.a.j.t.JMeterThread: Thread is done: 线程组 1-1
上述打印信息可以了解,被引用的test.jmx脚本只运行测试片段中的内容。
注意事项
● 路径问题:确保指定的文件路径是相对于JMeter启动目录的绝对路径或相对路径,否则可能会导致找不到文件的错误。
● 资源管理:被引用的.jmx文件应当保持简洁、专注于特定功能,便于维护和复用。
● 变量与函数:在被包含的文件中使用变量和函数时,要注意它们的上下文环境,确保变量能够正确解析。
结语
Include控制器是提升JMeter测试脚本可维护性和灵活性的有效工具。通过合理利用此功能,测试工程师可以更加高效地组织和管理复杂的测试场景,同时保证测试代码的整洁和一致性。掌握Include控制器的使用,将使你的性能测试工作事半功倍。