最近做了一次性能测试,虽然已经顺利结束了,但是事先没有做好各个步骤的规划,感觉中间过程稍微有点乱。趁周末时间稍微总结下步骤,提醒下自己~
一、需求分析
首先,为什么要做性能测试?我们要测试系统相关性能是否满足业务需求?我们有没有具体的指标?
比如某接口在200TPS下99.99%的接口响应时间小于50ms?
比如某系统上线后每天进来2000万的数据,当前机器配置下是否能保证系统正常运行?
1、初步判断这些需求是否有业务数据支撑,是否合理?
2、业务指标合理的情况下,资源指标是什么?
二、业务分析和系统分析
初步判断性能测试需求后,下面我们要对被测系统的业务功能和系统架构进行分析。
首先我们要了解整体业务功能,了解业务功能各个环节占比和重要程度,关注重点功能。
其次,分析系统架构,搞清楚实现某个功能时接口的调用关系、数据流向;系统是否使用集群、是否使用负载均衡等;了解测试环境和生产环境部署差异。
这些方便我们进一步判断需求是否合理,同时帮助我们设计性能测试的测试用例和测试方法。
三、编写性能测试方案
为什么要编写测试方案?我以前也认为文档写起来麻烦,直接测试好了。其实不然,编写性能测试方案实际是对测试思路、测试方法的整理。
一是有了方案指导之后,测试过程当中相当于有了一份checklist,不慌不忙的执行每一步,减少遗漏和返工,提高效率。
二是对复杂的性能测试,我们编写完性能测试方案之后邀请开发、架构师等一起对方案进行评审,减少口头沟通理解上的误差,方便各方查阅沟通,方便项目留档。
性能测试方案上除了需要第一、第二步的分析过程和结论,还需要明确一下几点:
- 第一步的明确测试需求
- 第二步的分析结果,写清楚业务和架构关系,用于支撑后面的测试方法
- 测试环境,测试机器的CPU/GPU/内存/磁盘大小/磁盘类型/网络等
- 软件版本,应用版本、各中间件版本号
- 测试工具
- 测试数据准备,测试数据大小、格式是否合理?测试数据重复是否会对测试结果有影响,是否需要进行参数化处理以及如何参数化等
- 测试用例,通常是基于场景测试测试用例(单业务场景测试、多业务混合场景测试);明确各场景监控对象(比如tps,耗时,CPU,内存,I/O等);核实业务最后产生的业务数据是否准确(比如写库接口,压测产生的数据与请求数是否一致,写库时间是否延时等等)
- 测试策略(测试方法),是否逐步加压等
- 测试进度安排
四、性能测试环境搭建
很多公司都是可以提个需求,从运维那里要到合适的环境。目前我测试的大部分项目都是要自己搭建测试环境的,需要从安装操作系统开始准备。自己安装环境的话还是要注意下各应用、中间件的机器分配,机器的host和DNS设置等问题。
测试环境搭建之前我一般都会自己先确认下机器分配情况,然后找相关开发确认核对一遍,确保IO和网络占用相对均衡些。
五、性能测试执行
环境安装好之后,就可以按性能测试方案的中的测试用例执行起来了。注意在测试过程中一定要记录相关测试数据,不仅仅客户端请求数、响应时间、TPS等关键数据,还有机器cup占用、内存占用、网络流量,应用程序JVM,数据库等等。
测试执行的过程中可能遇到瓶颈,这时候一边自己分析,一边找开发排查调优,记录下发现的问题和解决方案。
六、输出性能测试报告
这就不用多说了,测试结束给出是否满足需求的结论。其中测试执行的过程数据,包括机器资源监控等截图全部都要写进文档中来支持我们的结论。
上面就是对性能测试步骤做了一个简单的总结,具体每一步怎么做还是有很多注意点的,后续再总结~