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

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.dtcms.com/a/315268.html

相关文章:

  • 嵌入式学习之51单片机——串口(UART)
  • STM32F103C8-定时器入门(9)
  • slwl2.0
  • Azure DevOps — Kubernetes 上的自托管代理 — 第 5 部分
  • 05-Chapter02-Example02
  • 微软WSUS替代方案
  • Redis与本地缓存的协同使用及多级缓存策略
  • 【定位设置】Mac指定经纬度定位
  • Spring--04--2--AOP自定义注解,数据过滤处理
  • Easysearch 集成阿里云与 Ollama Embedding API,构建端到端的语义搜索系统
  • Shell第二次作业——循环部分
  • 【科研绘图系列】R语言绘制解释度条形图的热图
  • 中标喜讯 | 安畅检测再下一城!斩获重庆供水调度测试项目
  • 松鼠 AI 25 Java 开发 一面
  • 【慕伏白】Android Studio 配置国内镜像源
  • Vue3核心语法进阶(Hook)
  • selenium4+python—实现基本自动化测试
  • PostgreSQL——数据类型和运算符
  • MySQL三大日志详解(binlog、undo log、redo log)
  • C语言的指针
  • 拆解格行随身WiFi技术壁垒:Marvell芯片+智能切网引擎,地铁22Mbps速率如何实现?
  • mysql 数据库系统坏了,物理拷贝出数据怎么读取
  • 深入剖析通用目标跟踪:一项综述
  • 关于如何自定义vscode(wsl连接linux)终端路径文件夹文件名字颜色的步骤:
  • 自学嵌入式 day 42 串口通信
  • 力扣热题100——双指针
  • 应⽤层协议HTTP
  • 个推1.0版本
  • 自动化测试工具Katalon之BDD
  • 鸿蒙开发-端云一体化--云数据库