目录
一、性能测试的目的
性能测试就是通过性能压测工具,通过特定方式,对系统施加一定的压力、正常、异常负载以及峰值来对系统实施压力,得到各项性能指标,保证系统的性能需求。
1、基本目的:验证是否达到用户的性能指标,发现软件中存在的性能瓶颈和优化
2、评估系统的能力:帮助做出决策,为后续性能优化提供数据
3、识别系统中的弱点,修复系统的瓶颈和薄弱的地方
4、系统调优:重复运行测试,验证调整系统的活动是否得到了预期的结果,改进性能。如:长时间的测试执行导致内存泄漏
5、 验证稳定性:在一定的生产负荷下执行测试一定的时间,评估系统稳定性和可靠性是否满足要求
总结:
- 评估当前系统的性能
- 找出系统存在的性能瓶颈,并调优
- 预估未来的业务,看系统性能是否满足要求
1、作用:多快好省
多:高并发
快:延时、响应时间
好:稳定性(长时间运行)
省:资源的使用率
2、性能测试主要针对哪些方面测试
- 后端代码的性能
- 应用服务器、数据库服务器、系统加否是否存在瓶颈
- 服务器资源的消耗
二、性能测试的五大指标
1、响应时间
用户操作一个请求得到响应的时间
客户端呈现的时间、请求/响应数据网络传输时间、应用服务器处理时间、数据库系统处理时间
即时响应:通常在毫秒级别,小于500毫秒,如:聊天、金融交易
快速响应:通常在几百毫秒(100-500毫秒),适用于大多数web应用,用户可以在短时间内反馈
中等响应:在数百毫秒到1秒之间
较长响应:在1秒到数秒之间
长时间响应:超过数秒,影响用户体验,导致用户不满,或者放弃请求
影响接口响应时间的因素:
请求的复杂性、数据量的大小、网络延迟、服务器负载、缓存、异步处理、合并操作等
2、并发用户数
大量用户在同一时间访问同一个业务
广义并发:不一定是同一个请求,例如:双十一抢购
严格并发:同一个请求
在线用户数,对系统的内存影响最大(用户登录产生session)
3、吞吐量(TPS)
单位时间内系统处理用户的请求数。吞吐量可以反应服务器承受的压力
F = VU*R/T
F:吞吐量
VU:虚拟用户个数
R:是每个虚拟用户发出的请求数
T:性能测试所用的时间
4、思考时间
操作之间的时间间隔,主要是为了更真实的模拟用户操作
5、资源指标
CPU使用率一般不超过80%
内存不高于80%
磁盘不高于90%
网络带宽不超过80%
三、测试方法
1、负载测试(找到最优的负载量)
单接口负载测试场景:通过逐渐对一个接口进行施压,直到出现性能拐点,获得被测接口的最大指标
混合负载压测场景:为了验证整个业务的最大最优性能体现,重点在于模型的设计,模型来自于生产环境的日志,或者产品经理给的指标
2、压力测试(找到极限负载量)
关注软件系统极限负载的性能,着重于软件本身。识别系统的弱点和在极限负载下,查看程序结果如何。规划能力,预估系统的使用情况
期望:面临压力时,能够保证系统稳定,速度可以变慢,但是系统不能崩溃
3、稳定性测试(关注长时间运行稳定性)
测试系统在一定负载下,长时间运行后是否发生问题
系统需要时间积累到一定量的程度
一般是程序占资源却不能及时释放引起的,比如内存泄漏
客户端和服务器连接通路,不能有效地及时释放
4、并发测试(大量用户同一时间访问某个业务的运行情况)
验证系统的并发处理能力
5、验收测试
验收性能测试:模拟用户环境,测试系统是否满足要求
特点:确保用户的环境,用户要求的性能指标、执行、分析结果。验收性质一定要有客观的结果,分析如何开展验收测试
性能测试需求分析:向客户了解用户数,高频/常用的功能,场景,运行情况(考虑并发时间段30分钟、2h、7*24h、防火墙、负载均衡器都要长时间测试)
了解软件、硬件的情况
6、基准测试
相当于迭代版本对之前版本的功能测试,新增一个模块,判断模块对系统性能的影响
一般性能测试是单接口基准性能测试,也就是一个用户测试接口5min,目的是为了没有任何压力的情况下,查看各项性能指标
7、配置测试
对被测系统的软硬件环境测试进行调整,了解对系统性能影响成都,找到系统各项资源最优分配原则
8、恢复测试
系统局部发生问题,是否能继续使用系统,该问题对用户影响的严重程度,能否快速从错误状态恢复到正常状态
四、性能测试流程
性能测试需求分析 ---> 性能测试计划 ---> 性能测试数据设计 ---> 性能测试执行 ---> 性能测试分析和报告
1、性能测试需求分析
做性能测试的条件,项目的熟悉,明确性能测试范围,性能测试指标,初步性能测试策略等
1年或者3年后需要达到什么样的性能
例如:
(1)熟悉被测系统
- 熟悉被测系统的业务功能
- 熟悉被测系统的技术架构
(2)明确性能测试内容
- 从业务角度明确测试内容---确定关键业务
- 从技术角度明确测试内容
- 逻辑复杂度高,CPU密集运算大的地方,考量服务器CPU在预定性能指标下是否达标
- 数量量大的业务很占用系统内存,考量服务器内存预定性能指标是否达标
(3)明确性能测试策略--负载、压力、稳定性、并发
(4)明确性能测试的指标
- 需求无明确指标------通过查找相关资料,和类似的系统对比(竞品分析),跟客户沟通,以及对未来流量的预估
- 有明确需求指标------例如:下订单并发用户2个,拼平均响应时间小于3s,CPU使用率小于85%
有明确的指标根据分析结果和预期指标对比即可
2、性能测试计划
怎么安排时间(测试项目的开始结束时间、各环节的时间安排)、人员、使用工具(并发工具、监控工具、 分析工具、辅助工具)、场景模型(软硬件环境,网络环境)、方法
性能测试计划和方案:
(1)项目背景
(2)测试目标
(3)人员安排
(4)时间进度安排
(5)性能测试环境(系统架构、软硬件配置、测试数据)
(6)性能测试工具、监控工具
(7)测试策略
- 确定性能测试类型(负载、压力、并发)
- 确定性能测试场景(单一业务场景、混合场景)
(8)风险控制
3、性能测试数据设计
测试环境、场景测试、测试用例、脚本开发(录制、自己编写)、测试数据
如:测试环境搭建与脚本编写、录制、执行
环境搭建:
根据测试用例的场景展现出来
提示:
(1)虚拟用户数量及启动虚拟用户方式
(2)场景相关设置,如集合点
(3)脚本是否存在以来关系(登录和注册)
运行脚本
注意:
(1)负载的测试机不能运行设定的虚拟用户数
(2)没有预热过程(本地多次测试可能会有缓存,需要注意)
(3)没有虚拟用户的真实环境
(4)性能用例运行测试过少
4、性能测试执行
执行脚本、记录数据,通过工具执行场景
5、性能测试分析和报告
性能分析:系统框架分析、指标分析、性能问题分析
性能总结报告:测试环境、性能策略人员分配、场景描述、指标对比、问题描述、结果与原因、优化方案等