在 JMeter 中,测试计划(Test Plan) 是性能测试的核心部分,它定义了测试的整体结构和执行逻辑。一个完整的测试计划通常包含以下主要组件:
1. 线程组(Thread Group)
线程组是测试计划的核心组件,用于模拟用户并发行为。
-
作用:定义虚拟用户的数量、启动时间、循环次数等。
-
配置:
-
线程数(Number of Threads):模拟的用户数量。
-
Ramp-Up 时间(Ramp-Up Period):启动所有线程的时间(秒)。
-
循环次数(Loop Count):每个线程执行的次数。
-
2. 取样器(Samplers)
取样器用于发送请求并接收响应。
-
常见取样器:
-
HTTP 请求:模拟 HTTP/HTTPS 请求。
-
JDBC 请求:执行数据库查询。
-
FTP 请求:模拟 FTP 文件传输。
-
SOAP/XML-RPC 请求:测试 Web 服务。
-
-
配置:
-
设置请求的 URL、方法(GET/POST)、参数等。
-
3. 配置元件(Config Elements)
配置元件用于设置测试的全局配置。
-
常见配置元件:
-
HTTP 请求默认值:为所有 HTTP 请求设置默认值(如服务器地址)。
-
CSV 数据文件设置:从外部文件读取测试数据。
-
用户定义的变量:定义全局变量。
-
HTTP Cookie 管理器:管理 Cookie。
-
HTTP 头管理器:设置请求头。
-
4. 逻辑控制器(Logic Controllers)
逻辑控制器用于控制测试脚本的执行流程。
-
常见逻辑控制器:
-
如果(If)控制器:根据条件执行请求。
-
循环控制器:重复执行子元件。
-
事务控制器:将多个请求组合成一个事务。
-
随机控制器:随机执行子元件。
-
简单控制器:用于组织测试元件。
-
5. 定时器(Timers)
定时器用于控制请求之间的延迟。
-
常见定时器:
-
固定定时器:在每个请求之间添加固定的延迟。
-
高斯随机定时器:在每个请求之间添加随机的延迟。
-
同步定时器:模拟用户同时操作。
-
6. 前置处理器(Pre Processors)
前置处理器在发送请求之前执行。
-
常见前置处理器:
-
用户参数:为每个用户设置不同的参数。
-
BeanShell 预处理器:执行自定义逻辑。
-
7. 后置处理器(Post Processors)
后置处理器在收到响应之后执行。
-
常见后置处理器:
-
正则表达式提取器:从响应中提取数据。
-
JSON 提取器:从 JSON 响应中提取数据。
-
XPath 提取器:从 XML 响应中提取数据。
-
8. 断言(Assertions)
断言用于验证响应是否符合预期。
-
常见断言:
-
响应断言:检查响应内容、响应代码等。
-
JSON 断言:验证 JSON 格式的响应。
-
持续时间断言:检查响应时间是否在预期范围内。
-
9. 监听器(Listeners)
监听器用于查看和分析测试结果。
-
常见监听器:
-
查看结果树:查看每个请求的详细结果。
-
聚合报告:生成测试结果的汇总报告。
-
图形结果:以图表形式展示测试结果。
-
用表格查看结果:以表格形式展示测试结果。
-
10. 测试片段(Test Fragment)
测试片段是可重用的测试组件,通常与模块控制器一起使用。
-
作用:将常用的测试逻辑封装为片段,方便复用。
11. 工作台(Workbench)
工作台是一个临时区域,用于存放未完成的测试元件。
-
作用:在测试计划之外设计和调试元件。
12. 非测试元件(Non-Test Elements)
非测试元件用于支持测试的执行。
-
常见非测试元件:
-
HTTP(S) 测试脚本录制器:录制用户操作生成测试脚本。
-
测试计划注释:添加注释,方便团队协作。
-
13. 测试计划的配置
在测试计划的根节点上,可以配置以下选项:
-
用户定义的变量:定义全局变量。
-
独立运行每个线程组:控制线程组的执行顺序。
-
函数测试模式:记录额外的测试数据(如响应数据)。
14. 测试计划的执行
-
GUI 模式:通过 JMeter 界面运行测试。
-
非 GUI 模式:通过命令行运行测试:
jmeter -n -t testplan.jmx -l result.jtl
15. 测试计划的优化
-
参数化:使用 CSV 数据文件或用户定义的变量。
-
断言:确保测试结果的准确性。
-
定时器:模拟真实的用户行为。
-
分布式测试:在多台机器上运行测试,提高负载能力。