一、性能测试概述
性能测试场景
- 电商双11活动/微信春晚抢红包/12306春运订票
- 当前服务器配置是否支持20000人同时使用
在真实项目商用时,需要大量的用户进行使用,因此需要模拟大量用户的使用场景
性能的概念
性能测试和功能测试
二、性能测试策略(分类)
1.基准测试
什么是基准测试?
狭义上讲:也是单用户测试(单用户循环多次得到的数据),测试环境确定以后,对业务模型中的重要业务做单独的测试,获取单用户运行时的各项性能指标。(进行基础的数据采集)
广义上讲:是一种测量和评估软件性能指标的活动。你可以在某个时刻通过基准测试建立一个已知的性能水平(称为基准线),当系统的软硬件环境发生变化之后再进行一次基准测试以确定那些变化对性能的影响。
基准测试数据的用途:
- 基准测试不会单独存在
- 为多用户并发测试和综合场景测试等性能分析提供参考依据
- 为系统/环境配置变更、系统优化前后的的性能提升/下降提供参考指标
2.负载测试
概念:通过逐步增加系统负载,确定在满足系统的性能指标(如响应时间等)情况下,找出系统所能承受的最大负载量的测试。
负载:指向服务器发送的请求数量,请求越多,负载越高
作用:系统最大负载量达到用户要求时,系统才能正式上线使用。
3.稳定性测试
概念:在服务器稳定运行(用户正常的业务负载下)的情况下进行长时间测试(1天-1周等),并最终保证服务器能满足线上业务需求。
作用:系统在用户要求的业务负载下运行达到规定的时间时,系统才能正式上线使用
注:性能测试中,测试策略其实有很多种,但是掌握基础的用法后,其他不同名称的测试策略只是基础用法的一个变形用法。
性能指标与负载关系图
(1)在(A-B) 范围内,增加系统的在线用户数,系统的处理能力(负载量)会增大(轻压力区)
(2)在(B-C) 范围内,增加系统的在线用户数,系统的处理能力(负载量)不变(重压力区)
(3)在(C-D) 范围内,增加系统的在线用户数,系统的处理能力(负载量)会减小(崩溃区)
4.压力测试
概念:在强负载(大数据量、大量并发用户等)下的测试,查看系统在峰值情况下是否功能隐患、系统是否具有良好的容错能力和可恢复能力。
场景:
- 高负载下的长时间(如24小时以上)的稳定性压力测试(B-C区间)
- 极限负载情况下导致系统崩溃的破坏性压力测试(C-D区间)
5.并发测试
在极短的时间内,发送多个请求,来验证服务器对并发的处理能力。如:抢红包、抢购、秒杀活动等。
6.容量测试
关注软件的极限压力下的各个极限参数值,例如:最大TPS,最大连接数,最大并发数,最多数据条数等。
三、性能指标
1. 响应时间
定义:从客户端发送请求,到客户端收到服务器响应的总时间
组成:网络传输时间 + 服务器处理时间
2.并发数
定义:同一时间向服务发送请求(并发测试)的用户数
3.吞吐量
定义:单位时间内处理的客户端请求数量,直接体现软件系统的性能承载能力
吞吐量的单位:
- 从业务角度来看:业务数/小时、业务数/天、访问人数/天、页面访问量/天
- 从网络角度来看:字节数/小时、字节数/天
- 从技术指标来看:每秒事务数(TPS)、每秒查询数(QPS)
TPS:Transactions Per Second,每秒事务数 (单位时间内系统处理的客户端请求的事务次数)
计算:TPS = 并发数/平均响应时间
事务:就是业务请求,对应一个或者多个操作。如支付请求,包括服务器查询用户余额,支付安全校验等多个操作。 一个业务请求发送给服务器后,最终会定位到服务器对应的业务请求的代码,既有可能是一段代码也有可能是多段代码。
QPS:Query Per Second,每秒查询数
应用:控制服务器每秒处理指定请求数(如:控制服务器达到60QPS,服务器的性能各项性能指标是否正常)。
4.点击数
点击量是衡量网站流量的一个指标,也就是点击数clicks,是对网站点击数据的统计。
点击率(Clicks Ratio)也可以叫做点进率(“Click-through Rate),它是网站上某一内容被点击的次数与整个网站内容被显示次数之比,即clicks/views。反应了网站上某一页面或内容的受关注程度,经常用来衡量广告的吸引程度。比如公众号的一篇文章被浏览了10w次,文章中的广告链接被点击了2000次,那么这条广告的点击率是2%(2000/100000*100%)。
在性能测试领域,点击率(hit rate)常指单位时间内(每秒钟)页面的点击数,即每秒钟发送的http请求数量,点击率越大对服务器造成的压力也越大,对服务器的性能要求也越高。
有些人容易混淆点击率和点击量的概念,比如我们经常会听到有人说某网站的点击率是多多万,实际上这里的点击率指的是点击量,曝光率或者说页面浏览量。
5.错误率
定义:错误率指系统在高负载情况下,失败业务的概率。错误率=(失败业务数/业务总数)*100%。
注意:
- 不同系统对错误率要求不同,但一般不超过千分之五;
- 稳定性较好的系统,其错误率应该由超时引起,即为超时率。
6.资源利用率
定义:系统各种资源的使用情况,“资源的使用量/总的资源可用量×100%”。
通常,没有特殊需求的话
- 建议CPU不高于80%(±5)
- 内存不高于80%
- 磁盘不高于90%
- 网络不高于80%
7. PV和UV
PV(访问量):即Page View, 具体是指网站的是页面浏览量或者点击量;
UV(独立访客):即Unique Visitor,访问您网站的一台电脑客户端为一个访客。
四、性能测试流程
1.需求分析
2.性能测试计划
- 测试的目的和范围
- 测试人员和分工
- 测试时间安排
- 测试的方法
3.性能测试用例
4.性能测试执行
- 搭建性能环境
- 编写性能测试脚本
- 配置性能测试监控指标
- 执行脚本
5.性能测试分析和调优
性能测试分析人员经过对结果的分析以后,有可能提出系统存在性能瓶颈。由开发人员进行问题分析和调优
注意:在性能测试的回归过程中,可能需要进行多轮
6.性能测试报告
- 性能测试的过程
- 性能测试的缺陷分析和调优
- 性能测试的结果
- 经验总结