当前位置: 首页 > web >正文

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

  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 报告
-oHTML 报告输出目录(必须是空目录或不存在)
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% pct95%的请求响应时间 ≤ 24ms
99% pct99%的请求响应时间 ≤ 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、磁盘、网络


指标全称说明
QPSQueries Per Second每秒处理的请求数
TPSTransactions Per Second每秒完成的事务数(更关注业务完整性,如数据库或金融系统)
RTResponse Time响应时间处理一个请求所需的时间(单位:ms)
并发数Concurrent Users同一时刻系统正在处理的请求数
指标QPSTPS
含义每秒请求数每秒事务数
关注点请求是否被接收请求是否被处理并完成
应用场景接口访问量、搜索、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
http://www.xdnf.cn/news/17131.html

相关文章:

  • HarmonyOS 多屏适配最佳实践:基于 ArkUI 的响应式 UI 方案
  • 深入理解Java的SPI机制,使用auto-service库优化SPI
  • 北京JAVA基础面试30天打卡01
  • Neo4j 社区版 Mac 安装教程
  • 从HTTP到WebSocket:打造极速实时通讯体验
  • [3D数据存储] Archive (File Container) | 创建/写入/读取 | 存储格式HDF5
  • RocketMQ与Kafka 消费者组的‌重平衡操作消息顺序性对比
  • 低空三维多物理场耦合风洞试验,保证飞行器的性能安全是低空飞行的底线,是低空经济发展的基础
  • Ethereum: 深度解析Web3世界的合规之门, ERC-1400证券型代币标准
  • Apache Camel 中 ProducerTemplate
  • Hadoop HDFS 3.3.4 讲解~
  • C++信息学奥赛一本通-第一部分-基础一-第一章
  • 微信小程序本地存储与Cookie的区别
  • 架构进阶——解读45页企业架构管理方法与需求受理流程【附全文阅读】
  • AI绘图-Stable Diffusion-WebUI的基本用法
  • Node.js(四)之数据库与身份认证
  • 更智能的 RibbonBar Spread.NET 18.2Crack
  • [spring-cloud: @LoadBalanced @LoadBalancerClient]-源码分析
  • 【Linux | 网络】网络层(IP协议、NAT技术和ICMP协议)
  • SpringBoot整合t-io是websocket实时通信
  • LeetCode 分类刷题:16. 最接近的三数之和
  • 《汇编语言:基于X86处理器》第11章 复习题和练习
  • uiautomator2 编写测试流程-登陆后的酷狗01
  • 进程生命周期管理:从创建到终止的完整逻辑
  • 探索医学领域多模态人工智能的发展图景:技术挑战与临床应用的范围综述|文献速递-医学影像算法文献分享
  • iOS 内测上架流程详解:跨平台团队如何快速部署 TestFlight
  • 注解知识学习
  • 凹槽类零部件尺寸的检测方法有哪些 - 激光频率梳 3D 轮廓检测
  • [硬件电路-156]:什么是电信号? 电信号的本质:电信号是随时间变化的电压或电流。本质是电子运动表征信息,兼具能量传输与信息编码传递功能。
  • Mac电脑基本功能快捷键