性能测试是软件开发过程中非常重要的一环,它可以帮助开发人员和质量保障人员评估软件在不同负载下的表现,找出瓶颈并优化性能,从而提高用户的满意度。
而一份专业的性能测试报告,则是评估软件性能的重要成果之一。因此今天我们将分享一份完整的性能测试报告应该包含哪些内容,看完你也会编写一份专业的性能测试报告啦~
一、报告大纲
一份完整的性能测试报告需要包含以下模块:
- 文档介绍
- 测试范围
- 测试时间
- 测试环境
- 测试场景
- 测试过程及分析记录
- 测试结论和建议
二、具体内容解析
1、文档介绍
主要说明测试的目的,让读者能够快速了解报告的背景和内容,比如:为了保证系统在高并发场景下能稳定提供服务,对系统核心接口进行性能测试,获取接口在高负载压力下的相关性能指标,优化接口性能以满足需要。
2、测试范围
主要说明要测试哪些接口,是否需要混合压测,全链路压测等,以及制定性能测试的目标值。
压测通常为两类场景服务,一类是为大促考虑,另一类是为日常业务需求性能考虑。
系统有非常多的接口,那么哪些接口需要做压测呢?有没有什么通用的选择标准呢?答案是:当然有!
618/双11大促接口选择标准:
- 核心链路上涉及的系统接口必须压测;
- 接口近期改动较大,接口原有性能可能受影响;
- 接口业务量增长较快致流量增长迅猛;
- 接口调用方明确有更高的性能要求;
- 接口业务逻辑会频繁操作数据库或者redis多次
- Redis可能产生大key或hot key的接口
日常需求涉及到以下场景的接口:
- 大流量场景:大用户量场景 ,大数据量场景
- 核心链路场景
- 未来业务量预估有压测需要的场景
选好了要压测的接口,下一步就是为具体的每个接口设定性能目标值,怎么设定呢?是否有一些通用的参考标准?
答案是:当然有!
对于系统已有的老接口:
- 历史大促峰值3-5倍
- 上游调用方给出的明确的性能指标
对于系统新增的新接口:
- 参考相同业务场景的其他接口目标制定
- 根据新接口上线后的业务流量预估
示例:
3、测试时间
主要说明测试计划的时间,主要包括以下阶段的时间:
- 环境准备(比如:2-3天)
- 测试数据准备(比如:1-2天)
- 测试脚本准备(比如:2-3天)
- 执行测试(比如:一周)
- 性能优化(比如:一周)
- 编写测试报告(比如:2-3天)
示例:
基于以上的阶段,通常时间规划为:
- 大促压测:大促前1-2个月开始,各系统注意错开时间,避免时间重叠互相影响压测结果;
- 日常需求压测:日常需求上线的排期里面,要考虑接口压测的时间;
示例:
4、测试环境
主要说明服务器配置信息、接口调用流程图、压测数据准备情况。
- 服务器配置信息:包括云服务器实例个数、配置、数据库、缓存配置
- 接口调用流程图:说明接口调用过程中涉及的系统,明确影响范围
- 压测数据准备情况:说明本次压测的数据情况,判断数据准备是否充分合理
5、测试场景
主要说明将如何执行压测,相当于性能测试的case。示例:
6、测试过程及分析记录
主要记录测试过程中的服务器资源指标、数据库资源指标、接口调用量、接口响应时间、调用链性能分解情况等。示例:
7、测试结论和建议
主要描述测试的结论,性能测试是否通过,失败的接口性能问题描述、风险以及优化建议等。示例:
性能测试结束后,注意以下事项:
- 确认接口压测是否停止,性能曲线是否回归正常
- 压测产生的数据是否需要清除
- 压测过程中修改过的配置是否已全部还原
- 回归业务功能是否正常,确保压测没有影响到业务功能的正常使用。