Apache JMeter 是一个功能强大的开源性能测试工具,用于对网站、Web 应用程序、数据库以及其他服务器进行性能测试和负载测试。JMeter 提供了许多组件来帮助用户创建和执行测试计划。
1. 测试计划(Test Plan)
测试计划是 JMeter 的顶层元素,它定义了所有其他测试元素的容器。一个测试计划可以包含一个或多个线程组以及各种配置元件、前置处理器、后置处理器、计时器、断言和监听器。
2. 线程组(Thread Group)
线程组是测试计划的基础组件,用于定义并发用户(线程)的数量、启动速度以及测试的持续时间。
- 线程数(Number of Threads):模拟的用户数。
- Ramp-Up Period(in seconds):启动所有线程所需的时间,单位是秒。
- 循环次数(Loop Count):每个线程执行的次数,可以设置为特定次数或永久循环。
3. 取样器(Sampler)
取样器用于发送请求到服务器并获取响应。JMeter 提供了多种取样器:
- HTTP Request:用于发送 HTTP/HTTPS 请求。
- JDBC Request:用于发送 SQL 查询到数据库。
- SOAP/XML-RPC Request:用于发送 SOAP 或 XML-RPC 请求。
- FTP Request:用于执行 FTP 文件传输请求。
- JMS Request:用于发送消息到 JMS(Java Message Service)队列或主题。
4. 逻辑控制器(Logic Controller)
逻辑控制器用于控制取样器的执行顺序和条件:
- If Controller:在特定条件下执行其子元素。
- Loop Controller:重复执行其子元素指定的次数。
- Transaction Controller:将多个取样器的执行视为一个事务。
- Switch Controller:根据给定的条件选择执行其子元素中的一个。
- While Controller:只要条件为真,就会重复执行其子元素。
5. 监听器(Listener)
监听器用于收集和显示测试结果:
- View Results Tree:以树形结构显示每个请求的详细结果。
- View Results in Table:以表格形式显示结果。
- Summary Report:显示摘要报告,包括吞吐量、平均响应时间等。
- Graph Results:以图形方式显示测试结果。
- Aggregate Report:汇总报告,显示每个取样器的统计信息。
6. 计时器(Timer)
计时器用于在请求之间添加延迟:
- Constant Timer:添加固定的延迟时间。
- Uniform Random Timer:添加随机延迟时间,服从均匀分布。
- Gaussian Random Timer:添加随机延迟时间,服从高斯分布。
- Constant Throughput Timer:控制每分钟的请求次数,以实现恒定的吞吐量。
7. 前置处理器(Pre-Processor)
前置处理器在取样器执行之前运行,用于修改请求:
- HTTP URL Re-writing Modifier:用于 URL 重写。
- User Parameters:用于设置用户参数。
- BeanShell PreProcessor:使用 BeanShell 脚本修改请求。
8. 后置处理器(Post-Processor)
后置处理器在取样器执行之后运行,用于处理响应数据:
- Regular Expression Extractor:使用正则表达式提取响应数据。
- JSON Extractor:从 JSON 响应中提取数据。
- BeanShell PostProcessor:使用 BeanShell 脚本处理响应数据。
9. 断言(Assertion)
断言用于验证响应数据是否符合预期:
- Response Assertion:验证响应数据是否包含特定文本。
- Duration Assertion:验证响应时间是否在指定范围内。
- Size Assertion:验证响应数据的大小。
- XML Assertion:验证响应数据是否符合 XML 规范。
10. 配置元件(Config Element)
配置元件用于为取样器提供共享的配置信息:
- HTTP Request Defaults:设置 HTTP 请求的默认值。
- CSV Data Set Config:从 CSV 文件中读取数据。
- User Defined Variables:定义用户变量。
11. 定时器(Timer)
定时器用于在请求之间添加延迟时间,以模拟用户的思考时间:
- Constant Timer:固定的延迟时间。
- Uniform Random Timer:在一定范围内的随机延迟时间。
- Gaussian Random Timer:高斯分布的随机延迟时间。
12. 测试片段(Test Fragment)
测试片段是一个独立的测试单元,可以在其他地方被引用,通常与模块化控制器(Module Controller)一起使用,以便在测试计划中实现重用。