一、测试计划(Test Plan)
测试计划是 JMeter 脚本的根节点,所有其他元件均在此层级下配置。
核心功能:
- 定义全局参数(如用户变量、分布式测试配置)。
- 管理测试脚本的模块化(通过 测试片段 和 模块控制器)。
二、线程组(Thread Group)
功能:模拟并发用户行为,控制负载模型。
关键参数:
- 线程数(Number of Threads):模拟的并发用户数。
- Ramp-up Period(秒):逐步启动所有线程的时间。
- 循环次数(Loop Count):每个线程执行测试计划的次数(勾选“无限”可持续运行)。
类型扩展(需安装插件):
- Stepping Thread Group:阶梯式增加并发用户。
- Ultimate Thread Group:自定义多阶段复杂负载。
场景示例:
- 模拟 100 用户登录系统,每秒启动 10 个用户,循环执行 5 次。
三、配置元件(Config Elements)
功能:设置全局参数或默认值,减少重复配置。
常用元件:
元件名称 | 功能描述 | 应用场景 |
HTTP 请求默认值 | 定义 HTTP 请求的默认协议、服务器地址、端口等。 | 统一管理多个 API 的公共配置。 |
CSV 数据文件设置 | 从 CSV 文件中读取测试数据(如用户名、密码)。 | 参数化测试数据,实现数据驱动。 |
HTTP Cookie 管理器 | 自动管理 Cookie,模拟用户会话。 | 需要保持登录状态的场景。 |
JDBC 连接配置 | 配置数据库连接池,供 JDBC 请求使用。 | 数据库性能测试或数据验证。 |
示例配置:
CSV 数据文件设置:
- 文件名:users.csv
- 变量名称:username,password
四、取样器(Samplers)
功能:发送具体请求到被测系统,模拟用户操作。
常用元件:
元件名称 | 功能描述 | 应用场景 |
HTTP 请求 | 发送 HTTP/HTTPS 请求(GET/POST/PUT/DELETE)。 | 测试 RESTful API 或 Web 服务。 |
JDBC 请求 | 执行 SQL 查询或更新操作。 | 验证数据库性能或数据一致性。 |
FTP 请求 | 模拟文件上传或下载操作。 | 测试 FTP 服务器的传输性能。 |
JMS 发布/订阅 | 发送或接收 JMS 消息(需插件支持)。 | 测试消息中间件(如 ActiveMQ)。 |
示例配置:
HTTP 请求:
- 协议:https
- 服务器名称:api.example.com
- 路径:/v1/login
- 参数:username=${username}, password=${password}
五、逻辑控制器(Logic Controllers)
功能:控制请求的执行逻辑,实现条件分支、循环等复杂流程。
常用元件:
元件名称 | 功能描述 | 应用场景 |
循环控制器 | 循环执行子元件(如循环 10 次发送请求)。 | 重复执行某个操作集。 |
If 控制器 | 根据条件(如变量值或响应码)决定是否执行子元件。 | 动态跳过或执行特定步骤。 |
事务控制器 | 将多个请求合并为一个事务,统计整体性能指标。 | 分析多步骤操作的总耗时。 |
随机控制器 | 随机选择并执行一个子元件。 | 模拟用户随机操作路径。 |
示例配置:
If 控制器:
- 条件:${JMeterThread.last_sample_ok}(上一个请求成功时执行)
六、前置/后置处理器(Pre/Post-processors)
功能:在发送请求前或处理响应后执行特定操作(如生成数据、提取变量)。
常用元件:
元件名称 | 功能描述 | 应用场景 |
用户参数(Pre) | 为每个线程生成独立变量(如用户 ID)。 | 多用户并发时的数据隔离。 |
正则表达式提取器(Post) | 使用正则表达式从响应中提取数据(如 token)。 | 动态获取会话 ID 或验证码。 |
JSON 提取器(Post) | 从 JSON 响应中提取字段值(如 $.data.userId)。 | 处理 REST API 返回的 JSON 数据。 |
示例配置:
正则表达式提取器:
- 引用名称:token
- 正则表达式:"access_token":"(.+?)"
- 模板:$1$
七、断言(Assertions)
功能:验证响应是否符合预期,标记失败请求。
常用元件:
元件名称 | 功能描述 | 应用场景 |
响应断言 | 检查响应内容、状态码或响应头。 | 验证接口返回结果正确性。 |
JSON 断言 | 验证 JSON 结构或字段值(如 $.success == true)。 | 确保 API 返回的 JSON 数据合法。 |
持续时间断言 | 检查请求响应时间是否超过阈值(如 2000ms)。 | 定位性能不达标的请求。 |
示例配置:
响应断言:
- 测试字段:响应代码
- 模式匹配规则:等于
- 测试模式:200
八、监听器(Listeners)
功能:收集和展示测试结果,生成性能报告。
常用元件:
元件名称 | 功能描述 | 应用场景 |
查看结果树 | 显示每个请求的详细请求/响应数据(调试用)。 | 检查单次请求的具体内容。 |
聚合报告 | 汇总平均响应时间、吞吐量、错误率等关键指标。 | 性能测试结果的整体分析。 |
响应时间图 | 绘制响应时间随时间变化的曲线图。 | 观察响应时间波动趋势。 |
PerfMon 监听器 | 监控服务器资源(CPU、内存、磁盘 IO)使用情况(需插件)。 | 关联系统资源与性能表现。 |
示例配置:
聚合报告关键指标:
- 平均响应时间:150ms
- 吞吐量:200 req/sec
- 错误率:0.5%
九、定时器(Timers)
功能:控制请求之间的等待时间,模拟用户操作间隔。
常用元件:
元件名称 | 功能描述 | 应用场景 |
固定定时器 | 设置固定延迟时间(如 1000ms)。 | 模拟用户固定的操作间隔。 |
高斯随机定时器 | 生成符合高斯分布的随机等待时间。 | 更贴近真实用户的随机行为。 |
同步定时器 | 阻塞线程直到达到指定并发数,再同时释放请求。 | 模拟瞬间高并发(如秒杀场景)。 |
示例配置:
同步定时器:
- 模拟用户组的数量:50
- 超时时间:30000ms
十、元件协作流程图
Test Plan
│
├─ Thread Group(定义并发用户)
│ ├─ Config Elements(全局配置)
│ ├─ Logic Controllers(流程控制)
│ │ ├─ Samplers(发送请求)
│ │ ├─ Pre-processors(预处理)
│ │ └─ Post-processors(后处理)
│ ├─ Timers(控制请求间隔)
│ └─ Listeners(收集结果)
└─ Test Fragments(模块化元件)