一、性能测试概述
1、为什么要进行性能测试
业务需求
大量用户下,系统能否稳定运行
用于硬件服务器的选型
用于软件技术的选型
2、性能指什么
性能(即效率)
时间特性:服务器处理用户请求的响应时间(卡/不卡)
资源特性:软件在运行时,对于服务器资源的消耗情况
CPU、内存、磁盘等等
3、什么是性能测试
概念:使用自动化工具、模拟不同的场景,对软件各项性能指标进行测试和评估的过程就是性能测试
1、后台处理程序的性能(代码性能)
2、中间件、数据库、架构设计等是否
3、服务器资源
4、性能测试目的
1、评估当前系统能力
2、发现性能问题后,寻找性能瓶颈,优化性能(例如:12306春运时服务器故障)
3、评估软件是否满足未来的需要(例如淘宝双11在2022年销售额)
5、性能测试和功能测试
焦点
功能:关注系统对用户需求规则的满足程度。关注点(正向、逆向)
性能:关注系统对业务场景的满足程度。关注点(时间、资源)
关系
在一个项目中,功能测试和性能测试一般都有
功能测试通过后,才进行性能测试
二、性能测试分类
1、基准测试
狭义上讲:单个用户进行业务场景的测试,并统计性能的各项指标(为后续多用户性能测试做参考)
广义上讲:在某个时刻进行性能测试建立已知的性能水平,当软硬件发生变化时再测试,观察变化对于性能产生的影响。
建立基准,系统环境变化后对比确定对性能的影响。不会单独存在,为综合场景测试提供参考依据。
2、负载测试
通过逐步增加系统负载,测试系统性能的变化,在满足性能指标的前提下,系统所能够承受的最大负载量的测试。
![](https://img-blog.csdnimg.cn/img_convert/d53693273fe2d1899ea303231c68bdf6.png)
通过负载测试,一般能找到系统的最优负载和最大负载
最大负载一般项目组内部知晓,不会对外公布
而普通用户看到的系统最大能力一般都是测试得到的最优负载
负载测试曲线图
![](https://img-blog.csdnimg.cn/img_convert/1a483e27359f8a90e860a9c17f2231c1.png)
3、稳定性测试
在服务器稳定运行(业务正常的负载量)的情况下,进行长时间的测试,保证服务器能够正常运行。
长时间:一天、一周
(1)系统资源
(2)处理请求的能力
(3)系统的响应时间
4、其他测试策略
并发测试:并发测试是指在极短的时间内,发送多个请求,来验证服务器对并发的处理能力。如:抢红包、抢购、秒杀活动等
压力测试:压力测试是在强负载(大数据量、大量并发用户等)下的测试,查看应用系统在峰值使用情况下操作行为,从而有效地发现系统的某项隐患、系统是否具有良好的容错能力和可恢复能力。压力测试分为高负载下的长时间(如24小时以上)的稳定性压力测试和极限负载情况下导致系统崩溃的破坏性压力测试
测试系统在峰值情况下的操作,是否具有良好的容错能力及错误恢复能力。
稳定性压力测试在系统高负载的条件(接近C点)下长时间运行(24小时),查看系统的处理能力
破坏性压力测试:在系统极限负载的情况下,对系统进行压力测试(C-D之间),查看系统的容错能力和错误恢复能力
容量测试:关注软件的极限压力的各个极限参数值,例如:最大TPS,最大连接数,最大并发数,最多数据条数等;
三、性能测试指标
1、什么是性能测试指标
说明:在性能测试的过程中,记录的一系列的数据值,用这些实际记录的数据值与需求中的性能要求做对比,达成需求要求则无问题,未达到性能需求要求则说明是性能bug
2、性能指标
响应时间,吞吐数,错误率,点击数,资源利用率
1、响应时间
用户从客户端发起一个请求开始,到客户端接收到从服务器端返回的结果,整个过程所耗费的时间
组成:响应时间 = 网络时间 + 应用程序处理时间
2、并发数
说明:并发测试的用户数
扩展:
系统用户数:系统注册的总用户数据
在线用户数:某段时间内访问系统的用户数,这些用户并不一定同时像系统提交请求
并发用户数:某一物理时刻同时向系统提交请求的用户数
3、吞吐量
说明:吞吐量(Throughput)指的是单位时间内处理的客户端请求数量,直接体现软件系统的性能承载能力
注意:
从业务角度来看:吞吐量也可以用“业务数/小时”、“业务数/天”,“页面访问量/天”来衡量
从网络角度来看:可以用“字节数/小时”,“字节数/天”等来衡量网络的流量
从技术指标来看:还可以用每秒事务数(TPS)和每秒查询数(QPS)来衡量服务器具体性能处理能力
QPS
Queries Per Second,每秒查询数,即是每秒能够响应的查询次数,注意这里的查询是指用户发出请求到服务器做出响应成功的次数,简单理解可以认为查询=请求request。
qps=每秒钟request数量
TPS
Transactions Per Second 的缩写,每秒处理的事务数。一个事务是指一个客户机向服务器发送请求然后服务器做出反应的过程。客户机在发送请求时开始计时,收到服务器响应后结束计时,以此来计算使用的时间和完成的事务个数。
针对单接口而言,TPS可以认为是等价于QPS的,比如访问一个页面/index.html,是一个TPS,而访问/index.html页面可能请求了3次服务器比如css、js、index接口,产生了3个QPS。
tps=每秒钟事务数量
计算:TPS = 并发数/平均响应时间
事务:就是业务请求,对应一个或者多个操作。如支付请求,包括服务器查询用户余额,支付安全校验等多个请求发送到服务器后,最终会定位到服务器对应的业务请求的代码,既有可能是一段代码也有可能是多段代码
4、 点击数
点击数不是通常一般人认为的访问一个页面就是一次点击数,点击数是改页面包含的元素(图片、链接、按钮)服务器发出的请求数量
通常我们也用每秒点击次数(Hits per Second)指标来衡量Web服务器的处理能力
5、错误率
错误率不是功能有错误或者bug
说明:错误率指系统在负载情况下,失败业务的概率。错误率=(失败业务数/业务总数)* 100%
6、资源利用率
说明:是指系统各种资源的使用情况,一般用“资源的使用量/总的资源可用量”*100%形成资源利用率
提示:通常,没有特殊需求的话
1).建设CPU不高于80%(+-5) 在电脑里的所有处理请求(操作系统运行、软件程序、磁盘拷贝等)
2)内存不高于80% 所有程序在运行时要消耗的空间(存储程序运行的数据)
3)磁盘不高于90% 存储本地数据文件
4)网络不高于80% 影响数据在网络中的传输速度
四、性能测试流程
1、性能测试需求分析
熟悉需求、获取性能需求指标
(1).明确被测系统
熟悉被测系统的业务功能
熟悉被测系统的技术架构
(2)明确测试内容
业务角度
用户使用频率较高的关键(冒烟用例)
技术角度
逻辑复杂度高的业务
数据量大的业务
(3)明确测试策略
基于目的选择策略、比如负载测试、稳定性测试和并发测试、、
(4)明确测试标准
有明确需求指标
执行结果与预期指标进行对比,、行业规范或者客户制定的指标,
无明确需求指标(分析指标)
查找资料、类似系统对比,对未来流量的预估
2、性能测试计划及方案
测试目的和范围
测试人员安排
测试时间安排
测试的方法
3、性能测试用例设计
![](https://img-blog.csdnimg.cn/img_convert/e026299087e14eeb62d40141fffaefe9.png)
4、性能测试执行
1、建立测试环境 --搭建性能测试环境,包括硬件环境、软件环境、网络环境 --一般情况下可以要求运维和开发工程师协助完成
2、编写 性能测试脚本
3、配置性能测试监控指标
4、执行脚本
5、性能分析和调优
说明:性能测试分析人员经过对结果分析以后,如果不符合性能需求,则会提出性能bug,然后油开发人员进行后续的调优
提示:
调优 -开发人员为主导,数据库管理员,系统管理员,网络管理员,性能测试分析人员配合进行
在性能测试的回归过程中,可能要进行多轮。验证 -性能测试人员继续进行第二轮、第三轮....的测试,与以前的测试结果进行对比,从而确定经过调整以后系统的性能是否有提升
6、性能测试总结报告
测试报告是对性能测试工作的总结,为软件后续验收和交付打下基础
测试报告的主要内容:
测试工作的经过回顾
缺陷分析和调优
风险评估
性能测试结果
测试工作总结与改进
用来验证系统是否符合需求
性能测试执行
建立测试环境、编写测试脚本、性能测试监控、执行测试脚本
性能分析和调优
分析性能结果,针对性能bug调优
性能测试报告总结
测试结果总结