文章目录
总目录
概述
什么是性能测试
概念:使用自动化工具,模拟不同的场景,对软件各项性能指标进行测试和评估的过程就是性能测试。
> 1. 后台处理程序的性能(代码性能)
> 2. 中间件、数据库、架构设计等是否存在瓶颈
> 3. 服务器资源消耗(CPU、内存、磁盘、网络)
> 中间件:是提供系统软件和应用软件之间连接的软件。如:Tomcat、Apache...
目的
- 评估当前系统能力
- 例如:验收第三方提供的软件
- 例如:获取关键的性能指标,与其他类似产品进行比较
- 寻找性能瓶颈,优化性能
- 评估软件是否能够满足未来的需要
性能测试与功能测试
- 焦点不一样
- 功能测试:验证软件系统操作功能是否符合产品功能需求规格,主要焦点在功能(正向、逆向);
- 性能测试:验证软件系统是否满足业务需求场景,主要焦点是业务场景的满足(时间、资源);
- 关系
- 功能测试和性能测试是相辅相成的,对于一款优秀的软件产品来讲,它们是不可减少的2个重要测试环节;
- 注意:一般新项目中,先功能测试通过后,再进行性能测试。
策略
性能测试策略⭐
1. 基准测试
-
基准测试:
- 狭义上讲:也是单用户测试,测试环境确定以后,对业务模型中的重要业务做单独的测试,获取单用户运行时的各项性能指标。(进行基础的数据采集)
- 广义上讲:是一种测量和评估软件性能指标的活动。你可以在某个时刻通过基准测试建立一个已知的性能水平(称为基准线),当系统的软硬件环境发生变化之后再进行一次基准测试以确定那些变化对性能的影响。
-
基准测试数据的用途:
- 为多用户并发测试和综合场景测试等性能分析提供参考依据
- 识别系统或环境的配置变更对性能响应带来的影响
- 为系统优化前后的性能提升/下降提供参考指标
2. 负载测试
- 说明:通过逐步增加系统负载,测试系统性能的变化,并最终确定在满足系统的性能指标情况下,系统所能够承受的最大负载量的测试。
- 负载:指向服务器发送的请求数量,请求越多,负载越高
- 注意:负载测试关注的重点是逐步增加压力
3. 稳定性测试
- 说明:稳定性测试是指,在服务器稳定运行(用户正常的业务负载下)的情况下进行长时间测试,并最终保证服务器能满足线上业务需求。时长一般为1天、一周等。
4. 其他:并发测试、压力测试、容量测试等
- 并发测试:并发测试是指在极短的时间内,发送多个请求,来验证服务器对并发的处理能力。如:抢红包、抢购、秒杀活动等。
- 压力测试:压力测试是在强负载(大数据量、大量并发用户等)下的测试,查看应用系统在峰值使用情况下操作行为,从而有效地发现系统的某项功能隐患、系统是否具有良好的容错能力和可恢复能力。压力测试分为高负载下的长时间(如24小时以上)的稳定性压力测试和极限负载情况下导致系统崩溃的破坏性压力测试。
- 容量测试:关注软件的极限压力下的各个极限参数值,例如:最大TPS,最大连接数,最大并发数,最多数据条数等。
指标
性能指标有哪些
- 响应时间
- 并发数
- 吞吐量
- 点击数
- 错误率
- 资源利用率
- PV和UV
1 响应时间
- 说明:响应时间指用户从客户端发起一个请求开始,到客户端接收到从服务器端返回的结果,整个过程所耗费的时间。
- 组成:响应时间 = 网络时间 + 应用程序处理时间
2 并发数
说明:并发测试的用户数
扩展:
- 系统用户数:系统注册的总用户数据
- 在线用户数:某段时间内访问系统的用户数,这些用户并不一定同时向系统提交请求
- 并发用户数:某一物理时刻同时向系统提交请求的用户数
3 吞吐量
说明:吞吐量(Throughput)指的是单位时间内处理的客户端请求数量,直接体现软件系统的性能承载能力
注意:
- 从业务角度来看,吞吐量也可以用“业务数/小时”、“业务数/天”、“访问人数/天”、“页面访问量/天”来衡量
- 从网络角度来看,还可以用“字节数/小时”、“字节数/天”等来衡量网络的流量
- 从技术指标来看,可以用**每秒事务数(TPS)和每秒查询数(QPS)**来衡量服务器具体性能处理能力
TPS
-
说明:
Transactions Per Second
,每秒事务数 (单位时间内系统处理的客户端请求的事务次数) -
计算:TPS = 并发数/平均响应时间
-
事务:就是业务请求,对应一个或者多个操作。如支付请求,包括服务器查询用户余额,支付安全校验等多个操作。 一个业务请求发送给服务器后,最终会定位到服务器对应的业务请求的代码,既有可能是一段代码也有可能是多段代码。
TPS归属吞吐量
QPS
- 说明:QPS(Query Per Second)每秒查询数
- 应用:控制服务器每秒处理指定请求数(如:控制服务器达到每秒60QPS,服务器的性能各项性能指标是否正常)。 (衡量web服务器处理能力一个重要指标)
4 点击数
说明:点击数是衡量Web服务器处理能力的一个重要指标。
提示:
- 点击数不是通常一般人认为的访问一个页面就是1次点击数,点击数是该页面包含的元素(图片、链接、框架等)向Web服务器发出的请求数量。
- 通常我们也用每秒点击次数(Hits per Second)指标来衡量Web服务器的处理能力。
注意:只有web项目才有此指标
。
5 错误率
说明:错误率指系统在负载情况下,失败业务的概率。错误率=(失败业务数/业务总数)*100%。
提示:
- 不同系统对错误率要求不同,但一般不超过千分之五;
- 稳定性较好的系统,其错误率应该由超时引起,即为超时率。
6 资源利用率
说明:是指系统各种资源的使用情况,一般用“资源的使用量/总的资源可用量×100%”形成资源利用率的数据。
提示:通常,没有特殊需求的话
1). 建议CPU不高于80%(±5)
2). 内存不高于80%
3). 磁盘不高于90%
4). 网络不高于80%
流程
性能测试流程
1. 性能测试需求分析
2. 性能测试计划及方案
3. 性能测试用例
4. 测试脚本编写/录制
5. 建立测试环境
6. 执行测试脚本
7. 性能测试监控
8. 性能分析和调优
9. 性能测试报告总结
提示:使用不同的性能测试工具时,主要流程是不变的。
工具
主流性能测试工具
LoadRunner
- HP LoadRunner是一种工业级标准性能测试负载工具,可以模拟上万用户实施测试,并在测试时可实时检测应用服务器及服务器硬件各种数据,来确认和查找存在的瓶颈
- 支持多协议:Web(HTTP/HTML)、Windows Sockets、FTP、ODBC、MS SQL Server等协议
- 最初是Mercury公司采用C语言编写,现被HP公司收购
优点:
1. 多用户(支持数量单位万)
2. 详细分析报表
3. 支持ip欺骗
缺点:
1. 收费
2. 体积庞大(单位GB)
3. 无法定制功能
JMeter
- JMeter是Apache组织开发的基于Java的开源软件,用于对系统做功能测试和性能测试。
- 它最初被设计用于Web应用测试,但后来扩展到其他测试领域,例如静态文件、Java 程序、shell 脚本、数据库、FTP、Mail等。
优点:
1. 免费
2. 开源
3. 小巧(最新版-50MB左右)
4. 丰富学习资料及扩展组件
5. 应用广泛
6. 易上手
缺点:
1. 不支持ip欺骗
2. 分析和报表能力相对于lr欠缺精度