目录
这几篇博客是想把自己在做性能测试过程当中的一些知识点进行总结、归纳、分享。
性能测试的需求分析与测试设计
1.业务建模的基本概念
1.1什么是业务建模?
通过用户活动的剖析,找到性能测试关键点,需要测试的业务场景,为测试目标打好基础。
数据来源:
- 已上线系统:运维数据分析,系统只分析等
- 未上线系统:用户调查分析,产品相关人员预估
1.2 业务建模考虑因素
- 业务重要性
- 业务消耗资源
- 业务频率
- 未来发展趋势
- 特殊场景:淘宝双11,电商促销等重要,且明显区别于日常业务的模型的场景;
- 行业平台巡检,月末报表统计;贵宾来访;
1.3 业务建模的成果物
- 需要测试的业务场景
- 业务的发生频率、总量
- 业务时间范围
- 用户操作方式
- 系统数据容量
业务名称 | 业务频率 | 时间范围 | 数据总量 | 业务描述 |
操作A | 1000次/天 | xx-xx |
用户:xxx人 站点:xxx个 |
用户登录系统,浏览商品详情 |
操作B | 200次/天 | xx-xx | 用户登录系统,进行下单 | |
操作C | 8000次/天 | xx-xx | 用户登录系统,查看订单详情 |
2.性能指标确认
2.1性能指标的来源
- 产品需求
- 产品经理、研发指定
- 产品实现分析
- 现场数据,行业数据(出差报告、现场问题、日志分析)
- 招标、应标、认证
2.2常用性能指标举例
性能指标 | 举例 |
响应时间(RT) |
1.登录操作的响应时间小于1秒 2.网页跳转后完全显示内容的时间小于1秒 |
吞吐量(TPS、PV) |
1.服务器每秒可以处理xxx个登录事务 2.网站支持日均200万PV |
并发用户数 |
1.支持100个用户同时登录 2.流媒体服务器支持200路流转发 |
成功率 |
1.xx操作的成功率大于99.99% 2.高峰期的下单失败率不大于 十万分之一 |
资源利用率(CPU、内存,IO、网络、连接池、jvm) |
1.客户端CPU的占用率不超过80% 2.服务器的网络利用率不超过70% |
- 并发用户数和吞吐量
- 吞吐量:服务器视角,真实度量系统处理能力的指标
- 并发用户数:用户视角,无法真实度量系统性能,由于思考时间的存在,相同的VU可能会有不同的吞吐率
- VU的使用场景:客户端与服务器建立长连接,占用后台资源
- 性能指标VS用户数
2.3性能指标的计算
TPS公式估算:TPS=VU/RT ( 吞吐量 = 虚拟用户数 / 响应时间)
分布估算:一般使用泊松分布等计算(暂时讲不清楚)
举例说明1:
某需求文档描述的性能描述需求如下:
高峰情况下,系统支持100个用户同时使用xx业务
业务响应时间小于2秒
业务操作失败率小于1%
服务器CPU、内存、网络利用率小于70%,网络利用率小于50%
由上述指标可计算出各个性能指标为:
TPS:50
RT:2
资源利用率:CPU利用率 < 70% 、 内存占用率 < 70% 、网络利用率 < 50%
举例说明2:淘宝网的性能指标
生产环境的数据监控:
得出数据分布趋势:
上图的微积分计算:80% 的面积,占用了50% 的时间。即说明:80% 的业务是在一天的50% 的时间内完成的。
故单个业务的时间占比:0.8/05=1.6
平均吞吐量公式:
平均TPS=(1.6*总业务量)/(24*60*60)
计算出的平均吞吐量与图中的高峰值比例为:1:1.2
平均吞吐量的比值为:1.6*1.2=1.92
高峰吞吐量公式为:
平均TPS=(1.92*业务总量)/(24*60*60)
3.测试场景设计
3.1目的
将业务建模中和测试目标中的得到成果物,近一步转化为更详细的,可以在测试执行中使用的内容
3.2 测试场景包含的内容
- 测试场景名称
- 场景包含的业务(用户比例分配、用户增长模式、运行迭代时间、运行时长等)
- 性能指标
- 添加的性能计数器
3.3 测试场景设计原则
- 尽量模拟真实的用户环境
- 按照实际比例设计混合场景
- 单独设计稳定性场景、特殊场景、异常场景
3.4 测试场景运行时长
- 验收性能测试:10~15min
- 稳定性测试:6~8h,80%~100%的业务量
场景描述举例:
场景名称 | 场景业务及用户分配 | 测试指标 | 性能计数器 |
登录 | 用户数量:在10、50、100、150、200用户数下分别测试 |
平均响应时间:5s 吞吐量:10TPS 事务成功率:99.99% |
CPU:<70% 内存:<70% 网络负载:<50% |
稳定性 |
用户操作:长时间访问网页 运行时长:3小时 |
平均响应时间:5s 吞吐量:20TPS 事务成功率:99.99% |
CPU:<70% 内存:<70% 网络负载:<50% |
3.5 测试场景与其他测试内容
- 系统初期的配置、设置工作、数据导入,生成工作
- 达到性能压力规模时,正常功能验证
- 配置测试
- 容量测试
- 高可用性测试
4.测试环境设计
4.1测试环境的设计原则
- 被测系统的性能瓶颈在资源消耗上,而不是在软约束上
- 测试环境和生产环境的软件参数相同,相差较大需要专家评审才可
- 测试环境和生产环境存在一样的拓扑结构,非性能瓶颈节点可以在低配或者减配的情况
- 操作系统、软件版本相同
- 尽量选用和生产环境相同的机型
4.2网络设计
- 网络类型:
多网段、公网、弱网
无线网路
- 网络规格:
带宽
稳定性
4.3服务端设计
- 部署类型
分布式、集群布置
简化合并
- 模块划分
业务,数据相关性
并行测试
- 冗余设计
备用环境:在每次进行性能测试时,最好是对环境进行一个快照备份操作。
备份和还原
- 压测端设计
CPU < 50%
内存 < 80%
I/O < 50%
磁盘控件 < 90%
网络带宽 < 30%
- 压力机设置
运行模式设置
分布式部署
- 服务器
型号选择
关键参数
软件环境
- PC:客户端、解码
- 其他:网络设备、安防设备、模拟工具、对接平台
5.测试数据准备
5.1设计原则
- 测试数据 = 垫底数据 +参数化数据
- 满足业务约束,分布均匀
- 提前备份数据库,并在每次测试前还原
- 参数化的数据选择VU数的2~3倍,尽量保证多样性
- 参数化数据尽量在测试前生成
5.2 设计方法
- 数据收集渠道
产品经理、解决方案、技术支持等渠道
- 收集数据
已上线系统:系统运维数据、系统运行日志等系统
未上线系统:用户调查分析、产品相关人员预估、同类品数据参考
- 分析
根据业务分析
根据经验分析
5.3 生成方式
- 生产数据:需要进行脱敏处理
- 性能测试工具批量生成
- 导入
- sql语句插入:需要尽量保留各个数据库之间的关系
<完>