JMeter的基本使用教程
jmeter的基本使用教程
- 1. JMeter介绍
- 1.1 JMeter 能做什么?
- 1.2 JMeter 架构与组件
- 1.3 运行方式
- 1.4 📊 五、结果查看方式
- 1.5 常见应用场景
- 2. 下载地址
- 3. 使用
- 3.1 设置为简体中文
- 3.2 并发测试
- 3.2.1 新建线程组、设置并发数量
- 4. 执行脚本来跑压测
- 5. 结果
- 5.2 result.jtl
- 6.性能测试指标
- 附录
1. JMeter介绍
JMeter(Apache JMeter)是 Apache 软件基金会开发的一款开源的 性能测试工具,主要用于对 Web 应用、接口、数据库、FTP、邮件服务等各种服务进行负载测试、性能测试、压力测试和功能验证。
属性 | 内容 |
---|---|
名称 | Apache JMeter |
类型 | 开源性能测试工具 |
编程语言 | Java |
官网 | https://jmeter.apache.org |
支持平台 | 跨平台(Windows、Linux、macOS) |
1.1 JMeter 能做什么?
✅ 性能与负载测试
- Web 应用(HTTP、HTTPS)
- REST API、SOAP
- JDBC 数据库服务
- FTP 服务
- JMS(消息中间件)
- 邮件(SMTP、POP3、IMAP)
✅ 功能测试(有限)
尽管它主要用于性能测试,但也可用于简单的功能验证。
1.2 JMeter 架构与组件
🧩 核心组件
- Test Plan(测试计划):测试的最顶层结构,包含所有配置。
- Thread Group(线程组):模拟用户行为,定义并发数、循环次数。
- Sampler(采样器):用于发起请求,例如 HTTP 请求、JDBC 请求等。
- Listener(监听器):用于查看结果,如表格、树形图、图形、汇总报告等。
- Assertion(断言):验证响应是否符合预期(如响应码为200、包含特定文本)。
- Timer(定时器):用于控制请求之间的间隔。
- Config Element(配置元件):如HTTP请求默认值、CSV数据文件设置等。
- Pre/Post Processor(前/后置处理器):处理请求前后的数据。
1.3 运行方式
- 图形界面运行(GUI)
- 命令行模式
jmeter -n -t test.jmx -l result.jtl -e -o report/
jmeter -n -t "D:\HTTP请求.jmx" -l "D:\result.jtl" -e -o "D:\report"
含义说明:
- -n:非GUI模式运行
- -t:指定测试脚本
- -l:结果日志文件(原始数据)
- -e -o:生成HTML格式的报告
1.4 📊 五、结果查看方式
图形化界面中的 Listener
-
聚合报告(Aggregate Report)
-
结果树(View Results Tree)
-
响应时间图
命令行生成 HTML 报告
- 执行后在 -o 指定的目录中查看 index.html
1.5 常见应用场景
场景 | 示例 |
---|---|
接口压测 | 测试 RESTful API 的响应时间与 TPS |
登录系统性能测试 | 多用户同时登录行为模拟 |
数据库负载测试 | 执行大量 SQL 查询 |
文件上传下载性能 | FTP 上传下载操作压力测试 |
多节点并发测试 | 分布式模拟大量用户访问 |
2. 下载地址
这里我是用的的是windows电脑
https://jmeter.apache.org/download_jmeter.cgi
解压后,使用(注意这里需要JAVA8及以上版本的JDK)
注意配置环境变量(系统变量)
3. 使用
3.1 设置为简体中文
3.2 并发测试
3.2.1 新建线程组、设置并发数量
在查看结果树中查看结果,当然不建议在GUI中压测
4. 执行脚本来跑压测
jmeter -n -t "D:\HTTP请求.jmx" -l "D:\result.jtl" -e -o "D:\report"
参数 | 说明 |
---|---|
-n | 使用非 GUI 模式 |
-t | 指定测试计划文件(.jmx) |
-l | 保存测试结果的 .jtl 文件路径 |
-e | 生成 HTML 报告 |
-o | HTML 报告输出目录(必须是空目录或不存在) |
WARN StatusConsoleListener The use of package scanning to locate plugins is deprecated and will be removed in a future release
WARN StatusConsoleListener The use of package scanning to locate plugins is deprecated and will be removed in a future release
WARN StatusConsoleListener The use of package scanning to locate plugins is deprecated and will be removed in a future release
WARN StatusConsoleListener The use of package scanning to locate plugins is deprecated and will be removed in a future release
================================================================================
Don't use GUI mode for load testing !, only for Test creation and Test debugging.
For load testing, use CLI Mode (was NON GUI):jmeter -n -t [jmx file] -l [results file] -e -o [Path to web report folder]
& increase Java Heap to meet your test requirements:Modify current env variable HEAP="-Xms1g -Xmx1g -XX:MaxMetaspaceSize=256m" in the jmeter batch file
Check : https://jmeter.apache.org/usermanual/best-practices.html
================================================================================
翻译
WARN StatusConsoleListener 使用包扫描(package scanning)来定位插件的方式已被弃用,并将在未来的版本中移除。
WARN StatusConsoleListener 使用包扫描来定位插件的方式已被弃用,并将在未来的版本中移除。
WARN StatusConsoleListener 使用包扫描来定位插件的方式已被弃用,并将在未来的版本中移除。
WARN StatusConsoleListener 使用包扫描来定位插件的方式已被弃用,并将在未来的版本中移除。
================================================================================
不要在图形界面(GUI)模式下进行压测!GUI 模式仅用于测试创建和调试。进行负载测试时,请使用 CLI 模式(非 GUI):jmeter -n -t [jmx 文件] -l [结果文件] -e -o [Web 报告目录路径]并根据测试需求增加 Java 堆内存大小:修改 jmeter 启动脚本中的环境变量 HEAP,例如:HEAP="-Xms1g -Xmx1g -XX:MaxMetaspaceSize=256m"参考文档:https://jmeter.apache.org/usermanual/best-practices.html
================================================================================
5. 结果
解释Statistics
📊 Statistics 区块字段说明
字段 | 含义 |
---|---|
Label | 该行统计的请求名称(这里是“HTTP请求”) |
#Samples | 请求总次数(此处为 100 次) |
FAIL | 失败请求数(此处为 0,说明全部成功) |
Error % | 失败率(此处为 0.00%) |
Average | 平均响应时间(单位:毫秒,3.65ms) |
Min | 最短响应时间(1ms) |
Max | 最长响应时间(24ms) |
⏱ Response Times(响应时间分布)
这些百分位是帮助你理解 大多数请求的响应时延分布:
字段 | 含义 |
---|---|
Median(中位数) | 50%的请求响应时间 ≤ 2ms |
90% pct(90百分位) | 90%的请求响应时间 ≤ 3ms |
95% pct | 95%的请求响应时间 ≤ 24ms |
99% pct | 99%的请求响应时间 ≤ 24ms |
✅ 这些数据表明大部分请求非常快(<5ms),只有少量请求耗时稍长。
🚀 Throughput(吞吐量)
字段 | 含义 |
---|---|
Transactions/s | 平均每秒处理的请求数(108.34 次/秒) |
这个值越大,说明系统单位时间内处理能力越强。 |
📶 Network(网络吞吐量)
字段 | 含义 |
---|---|
Received | 每秒接收数据量(29.20 KB/s) |
Sent | 每秒发送数据量(13.65 KB/s) |
✅ 总结
从这份报告可以看出:
所有请求都成功(100% PASS,0% Error)。
响应时间非常短(平均 3.65ms,中位数 2ms)。
吞吐率高(108 req/s)。
没有明显性能瓶颈,适合生产环境初步压力测试验证。
5.2 result.jtl
6.性能测试指标
【虚拟用户数】:线程=用户
【并发数】:指在某一时间,一定数量的虚拟用户同时对系统的某个功能进行交互。一般通过集合点实现。
【事务】:一个接口可以是事务,多个接口也可以是事务,一个流程可以是事务,事务代表一个完整的功能。由测试人员决定的。
【场景】:性能测试的用例
【响应时间】:Response Time
平均响应时间: 所有请求响应时间的总和除以请求总数。容易受到极端值影响(如某些请求特别慢),不一定能真实反映大多数用户的体验。
中位数: 表示50%的请求的响应时间小于等于该值。比平均值更能反映典型用户的体验,因为它不受极端值影响。
90% 响应时间:表示90% 的请求响应时间都比这个值快,只有 10% 的请求慢于它。
95% 响应时间:表示95% 的请求响应时间都比这个值快,只有 5% 的请求慢于它。
99% 响应时间:表示99% 的请求响应时间都比这个值快,只有 1% 的请求慢于它。
✅ 举个例子:
项目 | 数值(ms) |
---|---|
平均响应时间 | 300 |
中位数响应时间 | 250 |
90% 响应时间 | 500 |
95% 响应时间 | 800 |
99% 响应时间 | 1500 |
解释:
- 大多数用户的请求都能在 250ms 内响应(中位数)。
- 90%的用户在 500ms 内收到响应,说明有 10% 的请求比这更慢。
- 少数请求可能非常慢,比如有 1% 的请求达到 1500ms,可能是系统瓶颈或抖动引起的。
【TPS】TPS是系统的重要性能指标,用于衡量系统在一定时间内能够处理的事务数。
计算公式:总的事务数/总的运行时间
“事务”可以是一次数据库提交、一次支付请求、一次下单操作等;
举个例子:
压测期间你执行了 10,000 次下单操作
测试持续了 200 秒
TPS = 10000 ÷ 200 = 50(每秒50个事务)
【QPS】每秒查询率
【吞吐量】衡量网络成功传输的数据量
【资源利用率】CPU、磁盘、网络
指标 | 全称 | 说明 |
---|---|---|
QPS | Queries Per Second | 每秒处理的请求数 |
TPS | Transactions Per Second | 每秒完成的事务数(更关注业务完整性,如数据库或金融系统) |
RT 或 Response Time | 响应时间 | 处理一个请求所需的时间(单位:ms) |
并发数 | Concurrent Users | 同一时刻系统正在处理的请求数 |
指标 | QPS | TPS |
---|---|---|
含义 | 每秒请求数 | 每秒事务数 |
关注点 | 请求是否被接收 | 请求是否被处理并完成 |
应用场景 | 接口访问量、搜索、API 流量等 | 数据库、支付、下单等业务流程 |
示例 | 查询一次商品信息 | 完成一次支付交易 |
👉 通俗理解:
- QPS 是 “你打进了多少电话”;
- TPS 是 “你最终完成了多少通话”。
附录
- 参考文档: https://blog.csdn.net/m0_62665400/article/details/139478525
- 视频 https://www.bilibili.com/video/BV1LyhHzDEpG?spm_id_from=333.788.videopod.episodes&vd_source=240d9002f7c7e3da63cd9a975639409a&p=2