一、性能测试概述
性能测试场景
- 电商双11活动/微信春晚抢红包/12306春运订票
- 当前服务器配置是否支持20000人同时使用
在真实项目商用时,需要大量的用户进行使用,因此需要模拟大量用户的使用场景
性能的概念
性能测试和功能测试
二、性能测试策略(分类)
1.基准测试
什么是基准测试?
狭义上讲:也是
广义上讲:是一种测量和评估软件性能指标的活动。你可以在某个时刻通过基准测试建立一个已知的性能水平(称为
基准测试数据的用途:
- 基准测试不会单独存在
- 为多用户并发测试和综合场景测试等性能分析提供参考依据
- 为系统/环境配置变更、系统优化前后的的性能提升/下降提供参考指标
2.负载测试
概念:通过
负载:指向服务器发送的请求数量,请求越多,负载越高
作用:系统最大负载量达到用户要求时,系统才能正式上线使用。
3.稳定性测试
概念:在服务器
作用:系统
性能指标与负载关系图
(1)在(A-B) 范围内,增加系统的在线用户数,系统的处理能力(负载量)会增大(轻压力区)
(2)在(B-C) 范围内,增加系统的在线用户数,系统的处理能力(负载量)不变(重压力区)
(3)在(C-D) 范围内,增加系统的在线用户数,系统的处理能力(负载量)会减小(崩溃区)
4.压力测试
概念:在强负载(大数据量、大量并发用户等)下的测试,查看系统在
场景:
高负载 下的长时间(如24小时以上)的稳定性压力测试 (B-C区间)极限负载 情况下导致系统崩溃的破坏性压力测试 (C-D区间)
5.并发测试
在
6.容量测试
关注软件的极限压力下的
三、性能指标
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.错误率
定义:错误率指系统在
注意:
- 不同系统对错误率要求不同,但一般不超过千分之五;
- 稳定性较好的系统,其错误率应该由超时引起,即为超时率。
6.资源利用率
定义:系统各种资源的使用情况,
通常,没有特殊需求的话
- 建议CPU不高于80%(±5)
- 内存不高于80%
- 磁盘不高于90%
- 网络不高于80%
7. PV和UV
PV(访问量):即Page View, 具体是指网站的是页面浏览量或者点击量;
UV(独立访客):即Unique Visitor,访问您网站的一台电脑客户端为一个访客。
四、性能测试流程
1.需求分析
2.性能测试计划
- 测试的目的和范围
- 测试人员和分工
- 测试时间安排
- 测试的方法
3.性能测试用例
4.性能测试执行
- 搭建性能环境
- 编写性能测试脚本
- 配置性能测试监控指标
- 执行脚本
5.性能测试分析和调优
性能测试分析人员经过对结果的分析以后,有可能提出系统存在性能瓶颈。由开发人员进行问题分析和调优
注意:在性能测试的回归过程中,可能需要进行多轮
6.性能测试报告
- 性能测试的过程
- 性能测试的缺陷分析和调优
- 性能测试的结果
- 经验总结