性能测试是保证系统稳定性与高并发承载能力的关键环节。而 Apache JMeter 作为一款开源、强大且可扩展的压测工具,已经成为开发与测试团队的首选。
本文将带你快速上手 JMeter,讲清楚最新版(5.6.3)的操作步骤,并进一步介绍高级功能与优化技巧。
🧩 一、JMeter 简介
Apache JMeter 是一个纯 Java 开发的开源性能测试工具,最早用于 Web 应用的性能测试,如今已经支持:
- HTTP/HTTPS Web 请求
- WebSocket、FTP、JDBC、LDAP
- JMS、SMTP、SOAP、RESTful API
- 分布式压测
- 自定义脚本扩展(Groovy)
JMeter 的核心理念是通过"线程组"模拟多个用户并发访问系统,并记录响应时间、吞吐量、错误率等性能指标。
⚙️ 二、环境安装与启动
1. 安装 Java 环境
JMeter 依赖 JDK 环境,推荐使用 JDK 11+。
bash
java -version
若未安装,请前往 https://adoptium.net/ 下载。
2. 下载并解压 JMeter
前往官网下载最新版:
👉 https://jmeter.apache.org/download_jmeter.cgi
解压后目录结构如下:
apache-jmeter-5.6.3/
├── bin/
├── lib/
└── extras/
3. 启动
Windows:
bash
bin/jmeter.bat
macOS / Linux:
bash
bin/jmeter.sh
启动后会看到熟悉的 GUI 界面:
🧱 三、创建你的第一个压测脚本
📌 步骤 1:添加线程组
右键点击"测试计划" →
添加 → Threads(用户) → 线程组
如图所示:

线程组用于定义虚拟用户的数量、启动时间与循环次数。
| 参数 | 说明 | 示例 |
|---|---|---|
| 线程数(用户数) | 并发用户数量 | 50 |
| Ramp-up Period | 启动时间(秒) | 10 |
| 循环次数 | 每个线程执行的次数 | 10 |
📌 步骤 2:添加 HTTP 请求默认值
在测试计划上右键 →
添加 → 配置元件 → HTTP请求默认值
配置示例:
| 字段 | 示例值 |
|---|---|
| 协议 | https |
| 服务器名称或IP | apitest.shuogeshi.com |
| 端口号 | 443 |
此处配置后,所有后续 HTTP 请求都自动继承这些参数。
📌 步骤 3:添加 HTTP 请求取样器
重点来了!
HTTP 请求取样器(HTTP Request) 才是真正发出请求的组件。
右键点击「线程组」 →
添加 → 取样器 → HTTP请求
如图所示:

填写内容:
| 字段 | 示例 |
|---|---|
| 名称 | 健康检查 |
| 协议 | https |
| 服务器名称 | apitest.shuogeshi.com |
| 方法 | GET |
| 路径 | /partner/health |
📌 步骤 4:添加监听器
为了查看压测结果,在「线程组」下添加监听器。
右键 →
添加 → 监听器 → 查看结果树

运行测试后,你将在这里看到每次请求的响应时间、状态码、返回体等详细数据。
▶️ 四、运行测试
点击顶部的绿色 ▶️ 按钮
执行压测后,可在"查看结果树"中查看每个请求的执行情况。
如果看到绿色勾 ✅,说明请求成功;
如果是红色 ❌,说明请求失败(可查看响应日志分析原因)。
📊 五、常用监听器与分析指标
| 监听器类型 | 作用 |
|---|---|
| 查看结果树 | 详细查看每次请求响应 |
| 汇总报告 | 统计平均响应时间、吞吐量 |
| 聚合报告 | 查看性能指标趋势 |
| 图形结果 | 绘制响应时间变化曲线 |
运行后,重点关注以下指标:
- Average:平均响应时间(ms)
- Throughput:吞吐量(请求数/秒)
- Error%:错误比例
- 95% Line:95 分位响应时间(性能瓶颈参考)
💻 六、命令行压测(非GUI模式)
JMeter GUI 仅用于脚本设计,不建议用于高并发测试。
正式压测应使用命令行模式:
bash
jmeter -n -t test.jmx -l result.jtl -e -o report
参数说明:
| 参数 | 含义 |
|---|---|
-n |
非GUI模式 |
-t |
测试计划文件 |
-l |
结果文件 |
-e -o |
生成HTML报告 |
运行后可在 report/index.html 查看图形化分析结果。
⚙️ 七、高级功能与进阶玩法
1️⃣ 参数化测试
使用 CSV Data Set Config :
可以批量导入用户名、密码、ID 等测试数据。
user1,pass1
user2,pass2
在 HTTP 请求中引用:
${username} ${password}
2️⃣ 断言机制(Assertions)
用于验证接口响应是否正确,例如:
- 响应码是否为 200
- 返回内容中是否包含 "success"
右键请求 → 添加 → 断言 → "响应断言"
3️⃣ 关联(Correlation)
通过 正则提取器 提取接口返回的动态数据(如 token、sessionId),
供后续请求使用,实现完整业务链压测。
4️⃣ Groovy / BeanShell 脚本
JMeter 内置 JSR223 取样器,可使用 Groovy 编写逻辑,如:
groovy
log.info("当前线程: " + ctx.getThreadNum())
5️⃣ 分布式压测
当单机性能不够时,可以通过:
- 主控机 + 从机模式(Master + Slave)
- 在多台机器上同时发压,实现百万级请求模拟。
🔍 八、常见问题
| 问题 | 解决方法 |
|---|---|
| 没有"HTTP 请求"选项 | 必须右键点击「线程组」添加取样器,而不是在测试计划上添加 |
| 查看结果树无内容 | 没有添加 HTTP 请求或线程未启动 |
| 请求返回错误 | 检查协议(http/https)、端口和路径是否正确 |
| GUI卡顿 | 建议使用命令行模式运行压测 |
🧠 九、总结
通过以上步骤,你已经完成了:
- ✅ 环境安装与启动
- ✅ 基础压测脚本创建
- ✅ GUI 与命令行运行
- ✅ 监听器结果分析
- ✅ 高级功能扩展(参数化、断言、关联、脚本)
JMeter 不仅仅是压测工具,它也是自动化接口测试的利器。
掌握这些基础与进阶技巧,你就能轻松构建从接口测试到分布式压测的完整体系。