性能测试:性能测试分类
文章目录
- 性能测试:性能测试分类
- 1. 基准测试
- 2. 并发测试
- 并发测试的特点
- 3. 负载测试
- 3.1 负载测试的过程
- 3.2 举重的例子
- 3.3 负载测试案例
- 4. 压力测试
- 4.1 压力测试的过程
- 4.2 压力测试和负载测试的区别
- 5. 稳定性测试
- 6. 总结:
这篇博客,是从这篇博客的内容中,分离出来的,用来介绍性能测试的。
上一篇博客: 测试(12) - 性能测试概念篇
如果你没有看过上一篇博客,推荐看到上一篇博客中,这篇博客的链接后,再点击那个链接,进来看这篇博客。
常见的性能测试类型包括:
- 基准测试
- 并发测试
- 负载测试
- 压力测试
- 稳定性测试
下面分别介绍。
1. 基准测试
基准测试:Benchmark Testing,又称:单用户测试
基准测试主要用于:监测被测系统在较低压力下的运行情况,并记录相关数据。
当性能测试环境确定之后,通常会选择业务模型中的重要业务进行基准测试。
给系统施加一定压力,然后获取:系统在单用户运行情况下的各项性能指标。
这些数据可以作为后续:
- 多用户并发测试
- 混合场景测试
的参考依据。
简单来说:先让一个用户或者较低压力运行系统,得到一个“基准值”,然后再进行后续性能测试。
2. 并发测试
并发测试:Concurrency Testing
用于评估:多个用户同时执行某些操作时,系统的性能表现。
例如:多个用户同时登录系统 或者 多个用户同时操作某一个功能。
通过并发测试,可以获取:系统在多用户并发操作情况下的性能指标。
同时,还可以发现并发情况下容易出现的一些问题,例如:
- 内存泄漏
- 线程锁
- 资源争用
- 数据库访问错误
- 数据写入错误
例如:多个用户同时访问某一条件数据,或者多个用户同时更新数据,就有可能发现:
- 数据库访问错误
- 写入错误
等问题
并发测试的特点
几乎所有性能测试都会涉及一些并发测试。
但是,并发测试对于:并发发生的时间要求比较严格。
因此通常需要借助专门的性能测试工具,通过:
- 多线程
- 多进程
等方式模拟多个虚拟用户同时操作系统。
3. 负载测试
负载测试:Load Testing,是性能测试的一种类型。
它主要用于:评估被测系统在预期的不同负载下的行为。
负载测试重点关注:系统处理不同负载的能力。
这些负载可以通过控制:
- 并发用户数量
- 进程数量
等方式实现。
3.1 负载测试的过程
进行负载测试时,可以不断增加系统的并发访问负载,然后持续监控系统性能变化。
直到系统某一项或者多项性能指标:达到安全临界值。
最终确定:在满足安全性能指标的前提下,系统能够承受的最大负载量。
简单来说:负载测试就是不断增加负载,找到系统能够正常工作的最大负载。
结合并发用户、系统吞吐量、系统响应时间之间的关系图来看:
负载测试:就是找系统的临界值,达到最大吞吐量的点
3.2 举重的例子
负载测试可以类比成:举重运动。
一开始给运动员:10kg
然后逐渐增加:20kg → 30kg → 40kg → 50kg……
直到找到:在身体状态保持正常的情况下,运动员能够举起的最大重量。
负载测试也是类似的。
不断增加系统负载:直到找到系统在满足性能要求的情况下能够承受的最大负载。
3.3 负载测试案例
假设:一个软件系统要求响应时间不能超过 2 秒。
现在不断增加用户访问量。
当访问量超过:1 万人之后,系统响应时间超过了 2 秒。
那么就可以确定:在响应时间不超过 2 秒的前提下,该系统能够承受的最大负载量约为 1 万人。
负载测试可以用于:
- 系统性能验证
- 性能诊断
- 性能调优
4. 压力测试
压力测试:Stress Testing
主要用于评估:系统在高于预期负载、高于指定容量,或者资源不足情况下的表现。
压力测试关注的是:系统处理超出预期或者达到特定峰值负载的能力。
同时,也可以用于评估系统在资源不足情况下的处理能力。
例如:
- 计算能力不足
- 带宽不足
- 内存不足
4.1 压力测试的过程
进行压力测试时,通常会:逐步增加系统负载。
让系统中的某些资源:达到饱和,甚至失效。
这样就可以发现一些只有在高负载情况下才会出现的问题,例如:
- 同步问题
- 内存泄漏
- 系统性能急剧下降
- 系统崩溃
压力测试:找到使系统崩溃的最大并发数。
通过压力测试还可以:
- 找到系统性能拐点
- 找到系统能够提供的最大服务级别
- 评估系统峰值负载下的处理能力
- 评估系统超过最大负载后的处理能力
压力测试主要用于:
- 性能诊断
- 性能调优
- 容量规划
4.2 压力测试和负载测试的区别
| 测试类型 | 主要目的 |
|---|---|
| 负载测试 | 找到满足性能指标要求时的最大负载 |
| 压力测试 | 找到系统能够承受的极限 |
所以:负载测试关注“还能不能正常工作”,压力测试关注“什么时候到极限(系统崩溃)”。
可以简单记忆:
- 负载测试:找到“正常工作的最大值”。
- 压力测试:找到“系统的极限(系统崩溃)”。
结合并发用户、系统吞吐量、系统响应时间之间的关系图来看:
我们看横坐标(Server Resource):
[0 ~ Cx):就是负载测试的过程:找系统的临界值,达到最大吞吐量的点
[Cx~ Dx]:就是压力测试的过程:找到使系统崩溃的最大并发数。
5. 稳定性测试
稳定性测试是在:负载测试的基础上进行较长时间的测试。
主要目的是:检查系统长时间运行情况下的稳定性。
例如:系统在正常负载下运行 1 小时,可能没有任何问题。
但是运行:10 小时、20 小时甚至更长时间之后,可能出现:
- 内存不断增长
- 响应时间逐渐增加
- 系统资源不断消耗
- 系统最终崩溃
因此需要通过长时间运行来发现这些问题。
通常来说:较长时间一般指 3 × 24 小时以上。
也就是:72 小时以上。
6. 总结:
常见的性能测试类型包括:
- 基准测试:先让一个用户或者较低压力运行系统,得到一个“基准值”,然后再进行后续性能测试。
- 并发测试:获取系统在多用户并发操作情况下的性能指标。
- 负载测试:负载测试就是不断增加负载,找到系统能够正常工作的最大负载,就是找系统的临界值,达到最大吞吐量的点
- 压力测试:系统处理超出预期或者达到特定峰值负载的能力。,即 找到使系统崩溃的最大并发数。
- 稳定性测试:负载测试的基础上进行较长时间的测试,检查系统长时间运行情况下的稳定性。
最后,如果这篇博客能帮到你的,请你点点赞,有写错了,写的不好的,欢迎评论指出,谢谢!
回到性能测试博客:测试(12) - 性能测试概念篇