一 需求分析
- 项目背景:根据产品需求
- 测试范围:性能测试范围,哪些接口需要性能测试,测试需要明确
- 业务逻辑 & 数据流向:数据怎么流转,缓存在哪,怎么缓存
- 系统架构:单体,分布式,集群,主从数据库,读写分离等等,找开发,运维搞清楚架构
- 配置信息:环境配置,CPU,几核,缓存服务器配置,数据库服务配置
- 测试数据量(量级要一致):具体要测试的数据量,和生产环境保持一致
- 外部依赖:第三方接口,系统,需要考虑是否屏蔽,代码中做Mock(开发)
- 系统使用场景,业务比例:设计测试用例
- 日常业务量:可以推算指标
- 预期指标:
- 上线时间
二 测试计划
- 项目描述
- 业务模型及性能指标
- 测试环境说明
- 测试资源:用了多少服务器
- 测试方法以及场景设计原则:
- 基准测试:用1个并发用户去测试3分钟(10000次),目的是为了拿到一个性能基线数据
- 单交易负载测试(单接口/单业务):用多个并发用户取测试,目的是为了找到性能拐点,或找到最高支持并发
- 混合场景测试:把多个接口、多个业务按照一定的比例同时去执行压测,如30个并发测试登录,70个测查询
- 高可用性测试:针对集群环境下,单个节点出现异常(宕机、进程崩溃),其他节点是否能正常处理业务
- 异常场景测试:在环境、数据出现异常的情况下,对接口、业务进行性能测试,比如网络丢包、延迟
- 稳定性测试:用户多并发,长时间对接口、业务做性能测试,通常时间>12小时
- 其他特殊场景
- 测试进度安排及测试准则
三 环境搭建
注意要点:
- 测试机器硬件配置尽量和线上一致
- 系统版本与线上一致
- 测试环境部署线上最小单元模块:条件局限,不能做集群
- 应用、中间件、数据库配置要与线上一致
- 其他特殊配置
四 数据构造
测试数据分为两部分:基础数据和参数化数据
- 基础数据:数据库表中存在的数据量,最好与生产环境单表数据量保持一致
- 参数化数据:在测试脚本中,真是使用的数据,通常会从基础数据中选用一小部分(日活用户)
通常采用以下三种方法进行构造
- 业务接口
- 适合数据表关系复杂
- 优点:数据完整性比较好
- 存储过程
- 适合表数量少,简单
- 优点:速度最快
- 脚本导入
- 适合数据逻辑复杂
- 自由度比较高
五 脚本编写
- 选择工具(Loadrunner、Jmeter、Locust等)
- 选择协议(Http、TCP、RPC)
- 参数化
- 关联
- 检查点
- 事务判断
六 压测执行
- 分布式执行
- 监控
- Linux
- Jvm
- 数据库
- 收集测试结果
- 数据分析
- 瓶颈定位
七 调优回归
- 性能调优需要整个团队完成
- 反复尝试
- 回归验证
- 监控工具
- 全链路排查
- 日志分析
- 模块隔离
八 测试报告
- 概述
- 测试环境
- 结果与分析
- 调优说明
- 项目时间表
- 结论
- 建议
九 性能测试工具
- Loadrunner(功能强大、重量级、商业软件)
- Jmeter(小巧灵活、轻量级、开源)
- Locust(Python开源框架):所有的东西都需要自己写代码
- Ngrinder( 开源压测平台)
- 阿里云压测平台、metersphere平台
十 现状和趋势
- 性能自动化、平台化
- 测试工具多样性、开源、二次开发
- 线上线下相结合,线上发现问题,线下调优
1.我是文本 红色red
2.我是文本 蓝色
3.我是文本 粉红
4.我是文本 紫色
5.我是文本 黑色
6.我是文本 橙色
7.我是文本 灰色
8.我是文本 绿色
8.我是文本 红色