文章目录
- 1.了解性能测试
- 2.性能测试流程
- 3.性能测试常用方法
- [4. 性能测试计划](#4. 性能测试计划)
- [5. 性能测试场景](#5. 性能测试场景)
- [6. 性能测试名称解释](#6. 性能测试名称解释)
- 经典技术架构图
- 总结
✨✨✨学习的道路很枯燥,希望我们能并肩走下来!
编程真是一件很奇妙的东西。你只是浅尝辄止,那么只会觉得枯燥乏味,像对待任务似的应付它。但你如果深入探索,就会发现其中的奇妙,了解许多所不知道的原理。知识的力量让你沉醉,甘愿深陷其中并发现宝藏。

本文开始
1.了解性能测试
什么是性能测试?
性能测试:性能测试关注软件、应用服务性能指标的测试;用来评估应用的速度、稳定性、资源消耗和容量;确保软件能够在预期的负载和压力下正常运行;验证产品上线后的性能水平;定位性能瓶颈与潜在性能问题
【小结】性能测试主要关注软件应用程序的速度、稳定性、资源消耗和容量;
性能测试是测试业务产品较稳定版本进行的
性能测试常用策略:
1.负载测试:确定系统在预期负载下的性能状态
2.压力测试:评估系统在极端条件下的稳定性和性能表现
3.容量测试:确定系统的最大承载能力
4.稳定性测试:评估系统在长时间运行下的稳定性
5.可伸缩性测试:评估系统在增加资源或用户数量时的性能表现
性能测试关注的性能指标
1.响应时间:系统对请求的响应速度
2.吞吐量:系统在单位时间内处理的事务数量
如:系统处理流量的多少
3.资源利用率:CPU、内存、磁盘和网络的使用情况
4.并发用户数:系统能够同时处理的用户数量
性能测试常用工具
- JMeter (Java开发): 功能最全面的通用型性能测试工具
支持协议:HTTP/HTTPS、REST/SOAP、JDBC、FTP、JMS、TCP、LDAP、WebSocket(插件) - Locust : Python 开发者友好的代码化压测工具
特点:用 纯 Python 编写用户行为(高度灵活)
适用场景:微服务 API 压测、敏捷团队快速验证 - LoadRunner: 企业性能测试-需付费
适用:银行、电信、航空等对合规性和复杂性要求高的场景 - Gatling:高性能、面向开发者的压测工具(Scala DSL)
适用场景:高并发场景、金融/电商核心链路压测 - Prometheus + Grafana: 时序数据库 + 可视化仪表盘-性能监控工具
适用场景:Kubernetes 集群监控(通过 kube-state-metrics、node-exporter);
微服务性能指标(QPS、延迟、错误率);
自定义应用埋点(如 Spring Boot Actuator / Micrometer); - SkyWalking:开源应用性能监控工具
使用场景: 微服务架构下的全链路追踪,云原生环境监控, Java 应用性能深度分析;
【注】1-4性能压测工具
2.性能测试流程
-
分析现状:分析产品需求
线上接口可能出现的状况:未来接收大量流量,需要扩容等操作;分析当前系统稳定性情况;
-
获取当前性能指标:当前有性能指标,作为基础值指标使用;没有性能指标:需探索行业内类似产品性能指标;
-
定义用户场景:使用什么方式执行压测计划 或 性能测试中参与的核心接口比例,核心链路场景比例;
-
定义性能验收标准:根据核心接口比例和核心场景比例,定义验收标准,何时压测,何时收集数据等
-
测试计划/脚本:定义测试计划,联合开发协调具体细节;
-
准备压力环境
-
执行压测:执行1到多轮压测,直到达到定义性能测试标准条件;
-
监控:压测过程中监控应用服务性能指标;
-
搜集分析:根据验收标准,收集性能验收点,系统性能行为具体的信息;
-
测试报告:根据性能测试结果输出性能测试报告
-
改进建议:根据报告协调运维或开发进行性能改进建议;
-
持续测试:改进完后,重复上述逻辑;
3.性能测试常用方法
并发模式
并发模式(虚拟用户模式):并发是指虚拟并发用户数,从业务角度,也可以理解为同时在线的用户数。
如果需要从客户端的角度出发,摸底业务系统各节点能同时承载的在线用户数,可以使用该模式设置目标并发。
RPS模式-吞吐量模式
RPS模式(吞吐量模式): RPS(Reguests Per Second)是指每秒请求数。
RPS模式即"吞吐量模式",通过设置每秒发出的请求数,从服务端的角度出发,直接衡量系统的吞吐能力,免去并发到RPS的繁琐转化,一步到位。
编写自动化脚本:使用性能测试工具创建和运行测试脚本
性能监控:在测试期间监控系统性能和资源使用情况
瓶颈分析:测试后分析结果,识别性能问题
4. 性能测试计划
性能测试计划:是在进行软件或系统的性能测试之前制定的详细计划和指导文件。它描述了所需性能测试的目标、范围、测试环境、资源需求、测试策略、测试用例、时间表等重要信息
1. 需求分析与测试设计
需求分析:
- 将业务行为拆解为技术可以了理解的指标(TPS/QPS),或者可量化的东西;
- 场景1:业务已经在线上运行,如何分析需求?
- a: 收集行为日志,获取业务运行时的行为日志,包括用户的访问请求、操作行为、响应时间等信息。这些日志可以帮助了解用户行为模式和业务负载情况。
- b: 分析当前业务数据:通过分析当前业务数据,例如每日活跃用户数(DAU)、每日页面浏览量(PV)、每天的订单量等,可以获得业务的基本性能指标,如每秒钟的请求量(QPS)或每秒钟的事务处理量(TPS)等;
【注】日志怎么获取,取一整体算平均值? 不会取平均值,会取几天高峰流量的业务行为作为参考 - c: 建立业务模型: 基于当前业务数据和行为日志的分析结果,建立业务模型,包括各个关键业务场景、用户行为流程、系统组件之间的交互等
- d: 预估接口 TPS/QPS:根据业务模型和当前业务数据,预估出每个关键接口或服务的每秒钟的事务处理量(TPS)或每秒钟的请求量(QPS)。这可以帮助确定性能测试的目标和负载程度
基于当前业务数据 → 拆解业务模型→预估接口TPS/QPS
- 场景2:新业务/新活动,从未接触如何做?
- a: 友商经验:如果有类似的业务已经在线上运行,可以参考其性能测试经验和结果,了解其业务模型、性能指标和测试场景,从而为新业务制定性能测试计划提供参考依据
- b: 产品和运营团队可以针对新业务梳理出核心场景路径、入口及对应的转化率、问题收敛页面等。然后,将这些信息转化为业务模型,进而确定相应的测试场景、数据量级和接口比例。
1.梳理业务核心场景路径
2.梳理核心业务入口及对应转化率
3.将上述问题收敛入口页面=>业务模型=>对应测试场景,数据量级,接口比例。
2. 环境设计与搭建:
1.设计:根据需求,结合线上机器部署情况,搭建线下测试环 境,要求具有⼀定的
参考价值,⼀般同⽐1/2,1/4
2.环境搭建:
(1)起压环境:压测⼯具的安装与调试、机器参数记录;
(2)被压环境:基础服务的搭建、web机代码部署及代码改造、机器参数记录;
3.环境调试:查看接⼝是否正常
3. 测试数据准备和构造
a.接口请求参数:自己构造/日志获取/上下关联;
b.数据表的数据填充: 部分业务数据信息可以直接从数据库或缓存数据库获取
c.如果是多接口,则需结合业务场景设计请求比例
4. 性能指标预期设定
【注】主要看公司实际业务决定
不同性能测试⽅式下指标预期会有差异
- 每秒请求数(QPS):基于业务进行拆分,比如业务会提出需要再双十一的时候支持每分钟两万的订单。根据这个需求,再去拆分具体有哪一些接口的请求
- 请求响应时间(最⼩、最⼤、平均):需要考虑到用户体验,即使后面能够正常响应,但是请求响应时间不能太长。(通常 C 端不超过 1s,尽量在 200 毫秒内)
- 错误率:基于在性能测试过程中,每个请求不可能百分百成功,但是也要有一个上限的阈值,那么这个阈值是多少。
- 机器性能:cpu idle 45%、memory⽆剧烈抖动或者飙升
- 压测过程接⼜功能是否正常: 压测过程接口功能是否正常:不要只关注响应状态码 200,还需要从业务角度来看响应信息是否符合业务需求
5. 发压工具配置及脚本编写
- 选择发压工具:根据需求和系统特点选择适合的发压工具。常用的性能测试工具包括 JMeter、LoadRunner、Gatling 等。考虑到测试目标、可支持的协议和工具的易用性。
- 安装和配置发压工具:根据工具的官方文档,下载和安装所选发压工具。然后,根据具体情况进行配置。配置项可能包括服务器地址、并发用户数、请求协议和频率等。确保工具和测试环境的通信设置正确。
- 编写性能测试脚本:根据需要和测试场景,编写性能测试脚本。性能测试脚本用于定义测试场景,包括模拟并发用户行为、设定请求参数和验证响应等。脚本可以使用工具提供的图形界面或编程语言来编写。
6. 性能测试执行和监控
发压时间线:
- 测试前环境检查:记录机器参数
- 起压:根据被压情况,调节并发量到适合的情况
- 查看记录各项性能指标
(1)nginx⽇志查看每秒请求数
(2)查看nginx错误请求
(3)查看机器参数:cpu idle、mem等
(4)查看db、cache等数据是否写⼊正常
(5)访问接口,查看功能是否正常
性能测试常用命令:
- 查看 nginx 每秒请求数
tail -f access.log | awk '{print $4}' | uniq -c - 查看某个接口每秒请求数
tail -f access.log | grep p_getorderstatus |awk '{print $4}' | uniq -c - 查看 cpu idle
命令: vmstat 1 - 查看内存
命令:free -m - 查看 nginx 日志是否有错误请求
tail -f access.log |cut -d ' ' -f 10 |grep -v 200 - 查看进程
命令: - top - ps aux|grep xxx
7. 测试报告
性能测试报告:
1.根据测试过程中记录的各项参数,结合压测⼯具产
⽣的⽇志,对测试结果进⾏分析,并产出测试报告
2.测试完成后,及时与相关⼈员沟通,确认是否满⾜需求
3.发送测试报告邮件
5. 性能测试场景
1、负载测试(Load Test):负载测试是⼀种性能测试,指数据在超负荷环境中运行,程序是否能够承担。 关注点: how much
2、压⼒测试(Stress Test): 压⼒测试(又叫强度测试)也是⼀种性能测试,它在系统资源特别低的情况下查看软件系统运⾏情况,目的是找到系统在哪⾥失效以及如何失效的地⽅。
如:从最低到阙值不断加压,查看过程中软件系统运行情况;
3、极限测试 Extreme testing:在过量⽤户下的负载测试;
4、容量测试(Volume Test): 确定系统可处理同时在线的最⼤⽤户数
关注点:how much(⽽不是how fast)
容量测试,通常和数据库有关,容量和负载的区别在于:容量关注的是⼤容量,⽽不需要关注使⽤中的实际表现
6. 性能测试名称解释
并发:并发是指虚拟并发⽤户数,从业务⾓度,也可以理解为同时在线的⽤户数
| 简写 | 英文全称 | 含义 |
|---|---|---|
| RT | Response Time | 响应时间。通常我们说的响应时间,都是包括了RequestTime和Response Time。从客户端发出请求到接收到完整响应所经历的时间。 |
| HPS | Hits Per Second | 每秒向服务器发送的 HTTP 请求次数(包括页面、图片、CSS、JS 等所有资源) |
| TPS | Transactions Per Second | 系统每秒处理事务数 |
| QPS | Queries Per Second | 每秒向 数据库或查询服务 发起的 查询请求数量。。 |
| RPS | Requests Per Second | 每秒向 目标服务(通常是 API) 发送的 独立请求次数 |
| Throughput | 吞吐量 | 系统在单位时间内处理的请求数量 |
经典技术架构图
Nginx-springcloud-[注册中心]-应用服务集群-数据库集群、缓存集群
总结
✨✨✨各位读友,本篇分享到内容是否更好的帮助你理解,如果对你有帮助给个👍赞鼓励一下吧!!
🎉🎉🎉世上没有绝望的处境,只有对处境绝望的人。
🎉🎉🎉一遇挫折就灰心丧气的人,永远是个失败者。而一向努力奋斗,坚韧不拔的人会走向成功。
感谢每一位一起走到这的伙伴,我们可以一起交流进步!!!一起加油吧!!!


