前置说明
前段时间对公司区块链程序进行了一次比较全面性能测试,并从中发现了一些性能问题及修复方式,现在整理一下测试过程和一些基础知识点。
第1讲: 基础知识点
1.1 性能指标
测试指标: | |
---|---|
QPS | 每秒请求数 |
TPS | 请求+处理+返回 (即系统每秒钟能够处理的业务数量),又叫throughput |
RT | 响应时间 (分为最小响应时间、最大响应时间、平均响应时间) |
ERROR | 错误率 |
观察指标: |
---|
CPU |
内存 |
磁盘IO |
计算公式: |
---|
并发数 = RPS * 响应时间 |
最大并发数=(单次响应时间 * 业务量)/总的业务时间 |
第2讲: 测试类型
2.1 基准测试 (Performance Benchmark Test)
2.1.1 概念
- 每次对外发布产品版本前必须要完成的测试类型
- 执行固定的性能测试场景得到系统的性能测试报告
- 与上一版本发布时的基准测试结果进行对比
- 优化 or 恶化 ?
2.1.2 测试目的
- 获取系统性能基准作为参照物
- 识别系统或环境的配置变更对性能带来的影响
- 给系统优化前后的性能提升/下降提供参考标准
- 观察系统的整体性能趋势与性能拐点,识别系统性能风险
2.1.3 基准评估
- 同一事务的响应时间变慢了
如: 上一版本中,用户登录的响应时间是 2s,在最新的被测版本中这个响应时间变成了 4s; - 系统资源的占用率变高了
如: 上一版本中,平均 CPU 占用率是 15%,在最新的被测版本中平均 CPU 占用率变成了 30%; - 等等…
2.2 负载测试
2.2.1 测试目的
- 持续稳定地增加系统的负载,测试系统性能的变化
- 找出指标阈值下的系统瓶颈和性能拐点
- 测试系统所能承受的最大负载量
- 找出内存管理错误,内存泄漏,缓冲区溢出的问题
- 找到处理极限,为调优提供数据
- 找出系统在稳定情况下的最大压力值
2.2.2 测试意义
通过改变负载方式、增加负载,发现系统中所存在的性能问题
2.2.3 实例
- 200 个并发用户访问时的最大响应时间,最大吞吐量
- 21 个小时内要处理 1000 笔业务,找到最大并发数
- 响应时间不超过 10s 的最大负载
- cpu 利用率不高于 60% 下的最大并发数
2.3 压力测试
2.3.1 测试目的
- 测试系统的资源在饱和状态下的应用的处理会话能力
- 持续稳定的增加系统压力,测试系统性能的变化
- 破坏性测试,确保系统失败并能正常恢复
- 发现系统稳定性的隐患和系统在负载峰值的条件下功能隐患
- 关注大业务量情况系统的长时间运行状态(例如反应变慢、内存泄漏 系统崩溃、失效恢复)
- 找出系统在可控错误率下的最大压力值
2.3.2 实例
- 长时间运行(7*24 小时)模拟被测系统的测试负载
- 观察系统在长期运行过程中是否有潜在的问题
- 对系统指标进行监控,发现长期运行时的内存泄漏、资源非法占用等问题
2.4 破坏性压力测试
2.4.1 实例1
- 不断加压,直至系统崩溃
- 测试系统的最大承受能力
- 通过破坏性加压的手段,快速造成系统的崩溃或让问题明显的暴露出来
2.4.2 实例2: 阶梯式压力测试
- 逐渐增加测试负载,如每 5s 钟增加 100 个并发数
- 高负载情况下持续运行一段时间,然后再逐渐降低负载
- 构成一个梯级的测试场景
2.5 Spike 测试
2.5.1 概念
尖峰测试(Spike testing)在性能测试中属于压力测试的一个子集。指的是在某一瞬间或者多个频次下用户数和压力陡然增加的场景。
为了验证我们的网站在访问用户急剧增加的情况下,或者短时间内反复急剧增加工作负载时能否正常工作;以及程序能否从高负荷中恢复并正常工作时常常用到这种测试手法。
Spike 在英文中是钉子的意思,或者我们可以将其称之为冲击测试,反复冲击服务器。
常见的场景有
12306 开始售票时访问用户急剧增加
网站公布高考成绩、录取分数时,访问用户急剧增加
网站投放商业促销广告和促销活动,如双 11 和 618 等活动开始时,访问用户急剧增加
等等。。。。
2.6 数据测试
2.6.1 实例
- 业务数据量不断增大,进行模拟测试
- 复杂业务、核心业务的测试
第3讲: 性能指标详解
3.1 TPS走势图
a 点:性能期望值
b 点:高于期望值,系统资源处于临界点
c 点:高于期望值,拐点
d 点:超过最大负载,系统崩溃
从上述模型,将性能测试分为 3 种类型:
● 基准测试
原点到 a 之间的系统性能,指以系统预期性能指标为前提,对系统不断增加压力,以验证系统能否达到预期性能
● 负载测试
a 到 b 的系统性能,是指对系统不断地增加压力或一定压力下的持续运行,直到系统的某项或多项性能指标达到极限,例如某种资源已经达到饱和状态等
● 压力测试
b 到 d 之间的系统性能,是指超过安全负载的情况下,对系统不断施加压力,直到系统崩溃,找出系统的瓶颈点和崩溃点。