文章目录
1.性能测试理论
1.1 相关概念
性能
就是软件质量属性中的“效率”特性
效率特性
- 时间特性
系统处理用户请求的响应时间- 资源特性
CPU
内存
磁盘IO
性能测试
使用自动化工具,模拟不同的场景,对软件各项性能指标进行测试和评估的过程就是性能测试。
- 后台处理程序的性能(代码性能)
- 中间件、数据库、架构设计等是否存在瓶颈
中间件:是提供系统软件和应用软件之间连接的软件。如:Tomcat、Apache…- 服务器资源消耗(CPU、内存、磁盘、网络)
性能测试的目的
- 评估当前系统能力
验收第三方提供的软件。
获取关键性能指标,与其他类似产品做比较。- 寻找性能瓶颈,优化性能
- 评估软件是否能满足未来的需要
性能测试与功能测试的区别
功能测试:验证软件系统操作功能是否符合产品功能需求规格,主要焦点在功能(正向、逆向);
性能测试:验证软件系统是否满足业务需求场景,主要焦点是业务场景的满足(时间、资源);
- 联系:
功能测试和性能测试是相辅相成的,对于一款优秀的软件产品来讲,它们是不可减少的2个重要测试环节;
注意:一般新项目中,先功能测试通过后,再进行性能测试。
1.2 性能测试指标
指标
在性能测试的过程中,记录的一系列的数据值。用这些实际记录的数据值与需求中的性能要求做对比,达成需求要求则无问题;未达到需求要求则说明是性能bug
常见的性能指标
响应时间、并发数、吞吐量、错误率、点击数、资源利用率
- 响应时间
客户端发送请求,到客户端收到服务器返回的响应,过程中所经历的全部时间;
响应时间 = 应用程序处理时间(A1+A2+A3) + 网络传输时间(N1+N2+N3+N4)- 并发数
并发测试的用户数- 吞吐量
单位时间内,系统处理客户端请求的数量。衡量服务器性能好坏的直接指标。
QPS:服务器每秒钟处理的接口请求数量。
TPS:服务器每秒钟处理的事务请求数量,一个事务通常指的是界面上的一个操作。一个事务可以包含一个或者多个接口请求。- 点击数
点击数不是指在页面上的一次点击
指的是页面(html代码、图片、js。。。)加载时,向服务器发送的请求数量。
可以用每秒点击数来衡量web服务器的处理能力- 错误率
错误率不是功能有错误或者bug
指的是在系统高负载的情况下,业务失败的次数/业务的总次数 * 100%- 资源利用率
系统对各资源的使用情况;
包括:内存、网络、磁盘、cpu
2.性能测试策略
性能测试的概念:
使用自动化工具,模拟不同的应用场景,对软件各项性能指标进行测试和评估的过程就是性能测试。
- 应用场景就对应的是性能测试策略。
常见的性能测试策略
- 基准测试
- 负载测试
- 稳定性测试
- 其他:并发测试、压力测试、容量测试
2.1 基准测试
概念
- 狭义上讲:单个用户 进行业务场景的测试,并统计性能的各项指标,将单用户场景下的性能作为基准(为后续多用户性能测试做参考对比)
- 广义上讲:在某一个时刻进行性能测试建立一个已知的性能水平,当软硬件发生变化时再测试,观察变化对于性能产生的影响
作用
- 为多用户并发测试和综合场景测试等性能分析提供参考依据
- 识别系统或环境的配置变更对性能响应带来的影响
- 为系统优化前后的性能提升/下降提供参考指标
2.2 负载测试
概念
通过逐步增加系统负载,测试系统性能的变化,并最终确定在满足系统的性能指标情况下,系统所能够承受的最大负载量的测试。
- 负载:指向服务器发送的请求数量,请求越多,负载越高
- 注意:负载测试关注的重点是逐步增加压力
作用
通过负载测试,一般能找到系统的最优负载和最大负载。
- 最大负载一般项目组内部知晓,不会对外公布。
- 普通用户看到的系统的最大能力,一般都是测试得到的最优负载。
2.3 稳定性测试
概念
稳定性测试是指,在服务器稳定运行(用户正常的业务负载下)的情况下进行长时间测试,并最终保证服务器能满足线上业务需求。时长一般为1天、一周等。
2.4 其他测试策略
并发测试
并发测试是指在极短的时间内,发送多个请求,来验证服务器对并发的处理能力。如:抢红包、抢购、秒杀活动等。
压力测试
压力测试是在强负载(大数据量、大量并发用户等)下的测试,查看应用系统在峰值使用情况下操作行为,从而有效地发现系统的某项功能隐患、系统是否具有良好的容错能力和可恢复能力。
- 压力测试分为高负载下的长时间(如24小时以上)的稳定性压力测试和极限负载情况下导致系统崩溃的破坏性压力测试。
容量测试
关注软件的极限压力下的各个极限参数值,例如:最大TPS,最大连接数,最大并发数,最多数据条数等。
3.性能测试的流程
性能测试的流程
- 需求分析和评审
- 性能测试计划及方案
- 性能测试用例
- 测试脚本编写/录制
- 建立测试环境
- 执行测试脚本
- 形成测试监控
- 性能分析和调优
- 性能测试报告
性能测试与功能测试
3.1 需求分析
性能测试需求分析部分
- 熟悉被测系统
熟悉系统的业务功能
熟悉系统的技术架构- 明确性能测试内容
从业务角度,挑选核心业务进行测试
从技术角度,挑选逻辑复杂度高、数据量大的业务进行测试- 确定测试策略
负载测试、稳定性等- 确定性能测试指标
有需求:按照需求来测试
没有需求:同类型软件对比,对未来数据进行预估
3.2 编写性能测试计划和方案
性能测试计划
从模板内容来说,与功能测试基本一致,主要就是写清楚谁来做、怎么做。
性能测试计划组成部分
- 项目背景-简介
- 测试目的
- 测试范围-对应需求分析中的性能测试部分
- 测算策略
- 风险控制-技术风险、人力风险
- 交付清单-每个阶段的产出物
- 进度和分工-谁在什么时候做了什么事情
3.3 编写性能测试用例
性能测试用例的要素
用例标题、用例编号、预置条件、用例步骤、预期结果、实际结果
3.4 性能测试执行
性能测试不能用手点,所以需要编写脚本帮助执行测试用例。
执行部分包括
- 测试脚本的编写和录制
性能测试用例编写完成后,需要结合用例的需要,进行脚本的编写工作。- 建立测试环境
尽可能和用户使用场景一样- 执行测试脚本
先保证脚本调试通过,才能进入正式压测阶段- 性能测试监控
监控指标:CPU、内存、网络、TPS、磁盘IO。- 性能测试分析和调优
3.5 性能测试报告
组成部分
- 性能测试的过程记录,性能测试发现的问题、分析
- 性能测试过程中的风险,当前是否存在风险
- 性能测试给出的测试结论(通过/不通过),教训和经验。
4.性能测试工具
性能测试工具
- Jmeter
- Loadrunner
4.1 Loadrunner
介绍
工业级性能测试工具,可以模拟大量用户,并监控性能指标提供报表
优势
- 支持用户量打
- 详细发分析报表
- 支持IP欺骗
缺点
- 收费
- 体积打
- 无法定制功能
4.2 Jmeter
介绍
性能测试工具,Jmeter软件的功能与Loadrunner基本一致
优势
- 免费开源
- 体积小
- 可扩展组件
缺点
- 不支持IP欺骗
- 分析报表能力比lr弱