本文章介绍性能测试方案设计。
Quick Guide
性能需求分析
- 系统信息调研:架构、平台、协议等
- 业务信息调研:基本业务、关键业务,用户行为
- 性能需求评估:明确是否需要做性能测试
- 业务角度:对内或者对外,使用人数多少,需求是否必要
- 系统角度 :
- 系统架构:系统框架是否更换
- 数据库要求
- 系统特殊要求:秒杀或者对延时要求比较高
- 确定测试范围
- 压力测试
- 负载测试
- 性能测试
- 确定性能测试点
- 测试指标
- 关键业务
- 分析用户使用场景,掌握用户需求
- 提炼用户关注度较强的功能
- 分析用户操作频繁的功能
- 分析系统中可能的大数据量操作【文件读写,图片浏览,事务队列,事务机制】
- 分析系统关键功能【后台服务,缓存,调用的功能组件】
- 分析用户组合航警,操作比例以及操作时延
- 日请求量
- 逻辑复杂度
- 营推广活动
- 关键业务
- 确定性能指标和通过标准
- 性能指标:具体结合业务,例如页面就存在页面加载时间
- 通过标准
- 线上数据高峰期间的峰值和平均流量
- 未来的规划和期望
性能测试准备
1.测试环境准备
系统运行环境 :与线上保持一致
- 线上或者uat环境
- 数据请求打标签,区分测试数据与真实数据
- 增加测试挡板
- 优点:不需要搭建环境和监控
- 缺点:只能选择流量空闲期,不能进行过高的压测,测试时候要及时跟开发沟通(线上异常警告)
- 搭建环境
- 组网模型: 需要评估测试组网与生产组网差异,至少满足最低配置要求
- 组网类型:单机/双机/单机集群/双机集群/各种组合类型
- 硬件: cpu/内存/磁盘读写/网卡
- 软件:操作系统类型/服务/数据库/文件库/第三方组件
- 消息交互:同步/异步
- 组网模型: 需要评估测试组网与生产组网差异,至少满足最低配置要求
执行机环境
- 网络与用户保持一致
- 组网:单机(4U8G)一般只能支持2000tps左右),场景超过需要更高的配置
- 调优
- 网络设置
- 测试软件
- 系统对软件的限制
2. 测试场景设计
根据性能需求分析来设计符合用户使用习惯的场景
- 测试范围:根据需求分析确定的范围,确定测试场景范围
- 测试功能点: 具体业务场景
- 请求数据量:受到测试范围影响,如果算性能测试,就需要随着请求数据量变化下(从低到高)系统的性能指标
- 单次场景的请求持续时间
- 测试环境配置
- 单机
- 集群
- 测试指标
- tps
- 请求平均耗时
- 请求最大耗时
- 成功率
- 测试结果
- 实际tps
- 请求平均耗时
- 请求最大耗时
- 请求的成功率
- 资源占用情况
3.性能工具准备 :与开发技术栈一致
负载工具
- ApacheBench: Apache 服务器自带的一个web压力测试工具,简称ab
- Wrk:一款针对 Http 协议的基准测试开源工具,支持lua脚本
- Apache JMeter(常用): Java 编写的应用程序,支持插件和jar包.
- Locust :一个开源负载测试工具。使用 Python 代码定义用户行为,也可以仿真百万个用户。
- LoadRunner(付费专业):HP公司提供的一款性能测试工具,通过模拟成千上万个用户实施并发操作,测试系统的性能,并且提供详细的测试结果分析,协助用户查找问题。
- Spirent(付费专业):自带硬件的大流量网络测试仪
监控工具
4.测试脚本准备
5.测试数据准备
- 系统初始数据:
- 分析系统上线后数据量/历史数据
- 计算出系统每个阶段数据容量,数据类型,数据比例
- 根据不同阶段分别进行数据预制
- 测试新增数据:
- 业务场景确定后根据具体业务场景定义输入和输出数据
- 结合具体的呼叫模型进行数据预制
注意事项
- 模拟与真实场景、真实组网和真实数据之间的差异性
- 测试过程中的执行模型问题(缓存)
- 测试执行过程中的资源监控问题
- 行业或者同行标准
否则结果与现实存在很大差距,测试结果不准确