JMeter的基本使用教程

发布于:2025-08-05 ⋅ 阅读:(15) ⋅ 点赞:(0)

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 运行方式

  1. 图形界面运行(GUI)
  2. 命令行模式 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 每秒完成的事务数(更关注业务完整性,如数据库或金融系统)
RTResponse Time 响应时间 处理一个请求所需的时间(单位:ms)
并发数 Concurrent Users 同一时刻系统正在处理的请求数
指标 QPS TPS
含义 每秒请求数 每秒事务数
关注点 请求是否被接收 请求是否被处理并完成
应用场景 接口访问量、搜索、API 流量等 数据库、支付、下单等业务流程
示例 查询一次商品信息 完成一次支付交易

👉 通俗理解:

  • QPS 是 “你打进了多少电话”;
  • TPS 是 “你最终完成了多少通话”。

附录

  1. 参考文档: https://blog.csdn.net/m0_62665400/article/details/139478525
  2. 视频 https://www.bilibili.com/video/BV1LyhHzDEpG?spm_id_from=333.788.videopod.episodes&vd_source=240d9002f7c7e3da63cd9a975639409a&p=2

网站公告

今日签到

点亮在社区的每一天
去签到