一、获取测试需求
1、系统结构分析
系统架构图、网络拓扑图等(单体、集群、分布式、微服务、缓存、网关),主要目的是了解系统的数据流。
2、业务模型分析
什么场景下可能存在什么问题。常见的业务有审批、支付、订单、库存、查询、数据更新、文件上传下载等。其中支付业务关注强业务性和强数据一致性,数据更新关注数据库的锁、资源独占等,文件的上传下载需要关注网络带宽、线程休眠、文件转换等。
3、测试需求分析
什么人(用户)在哪个时间段(峰值流量)什么场景(业务场景)下执行了什么操作(接口处理,涉及的服务等),业务建模。
a)测试边界
哪些不测哪些测,梳理清楚涉及到的业务场景和对应接口。
b)测试目的
能力验证、容量规划、发现缺陷、基准比较。详看性能测试应用领域
c)测试指标
一般由业务方提供。如果需求不明确,需要沟通确认测试指标(TPS、RT、系统性能计数器等)。
二、测试计划
类似于功能测试
三、测试方案设计
确定起止时间,测试环境配置,人员等,与测试计划具有重复,可合并。
四、测试环境搭建
搭建一个独立的环境,或者使用SIT/UAT/正式环境。注意被测系统的稳定性、是否有交叉影响、和生产环境的一致性等
五、测试用例设计
类似于功能测试
六、测试数据准备
1、数据类型:基础数据(本来就应该存在的系统内数据)、测试数据
2、准备方法:从生产上拉一份、通过脚本(JDBC)预埋数据
3、注意事项:数据隔离,数据清理,数据污染,可用“挡板”。
七、测试脚本编写
最好做到可复用、简洁、可移植。脚本的编写涉及接口的相关信息(请求方式、方法、报文、通信协议、同步/异步等),还有框架的信息(dubbo、MQ、kafka、Spring Boot等)
八、测试脚本执行
1)执行过程中的数据收集
系统自带的计数器,第三方工具等。
2)监控调试
使用工具监控各方面的资源消耗,例虚拟机可用nmon、docker类可用Prometheus、数据库可用zabbix等。
九、瓶颈分析定位
待续
十、测试结果反馈
十一、测试报告
-----------------------------------------------------------------------分割线----------------------------------------------------------------------------
整个性能测试过程中主要重点在需求分析阶段,根据测试目的确定了使用什么测试方法,业务场景、性能指标都确定了,接下来就是按部就班的走下去就行了,找到瓶颈之后进行调优,然后在进行测试,如此反复,直到达到预期的测试结果从而结束测试。调优这里大概是性能测试最有技术含量的点了,需要大量的业务知识和技术积累。