上一篇中介绍了性能测试主要包含下面的流程:需求调研、测试计划、环境搭建、数据准备、脚本编写、压测执行、调优回归、测试报告。
1.需求调研
调研对象:产品、开发、项目经理等。
调研内容:
项目背景:项目的开发背景,可以查阅产品文档或者需求文档或者找项目相关人员进行询问。
测试范围:整个系统功能较多,不可能针对所有功能进行性能测试,只会对重点功能进行性能测试,所以需要明确测试范围,最好是发邮件进行确认,避免后期扯皮。
业务逻辑 & 数据流向:了解业务的逻辑,业务数据是怎么流转和存储,凡是数据流转的地方都可能出现系统瓶颈。
系统架构:整体的框架以及部署方式。
配置信息:了解生产环境的硬件配置信息,在搭建测试环境的时候最好是保持一致。
测试数据量(量级要一致):目前生产环境业务的数据量,让测试更真实。
外部依赖:对第三方有没有依赖,比如支付,可以进行mock做挡板。
系统使用场景,业务比例:模拟用户行为,针对多业务关联业务需要设置比例关系。
日常业务量:业务的日常PV。
预期指标:测试接口要达到的tps。
上线时间
2.测试计划
项目描述
业务模型及性能指标:列举本次测试所有接口的预期性能指标,如果包含混合场景,需要列举各接口的业务比例。
测试环境说明:列出压测时的网络环境拓扑图,如果与生产环境有差异需特殊说明。
测试资源:列出测试执行时系统资源配置、软件配置,描述基础数据和测试数据的需求数量,以及数据准备方案,测试以及监控工具介绍。
测试方法以及场景设计原则:描述具体测试场景,如场景类型、加压方式、场景执行时间等。
单交易负载测试:单个接口业务的测试,需要先保证单个接口没有性能瓶颈;
混合场景测试:多个业务同时测试;
高可用性测试【可选】:针对集群进行压测,保证部分集群节点异常业务也能正常运行;
异常场景测试【可选】:当网络延迟、丢包、超时时业务是否正常。
稳定性测试:长时间的测试,比如12h、24h或者更长时间,主要验证在持续高压情况业务能否一直正常;
其他特殊场景:针对其它场景进行检查测试;
测试进度安排及测试准则:测试周期把控和执行的标准。
3.环境搭建
注意要点:
测试机器硬件配置尽量和线上一致
系统版本与线上一致
测试环境部署线上最小单元模块
应用、中间件、数据库配置要与线上一致
其他特殊配置
4.数据准备
测试数据分为两部分:基础数据和参数化数据
通常采用以下三种方法进行构造
业务接口
-- 适合数据表关系复杂
-- 优点:数据完整性比较好
存储过程
-- 适合表数量少,简单
-- 优点:速度最快
脚本导入
-- 适合数据逻辑复杂
-- 自由度比较高
5.脚本编写
选择工具:Loadrunner、Jmeter、Locust等
选择协议(Http、TCP、RPC)
参数化
关联
检查点
事务判断
6.压测执行
分布式执行
监控
-- Linux
-- Jvm
-- 数据库
收集测试结果
数据分析
瓶颈定位
7.调优回归
性能调优需要整个团队完成
反复尝试
回归验证
监控工具
全链路排查
日志分析
模块隔离
8.测试报告
概述
测试环境
结果与分析
调优说明
项目时间表
结论
建议