压测场景分类:六种核心模式

做压测这么多年,我经常被问到同一个问题:

「到底该做哪种压测?」

说实话,很多人把负载测试、压力测试、稳定性测试混为一谈。其实它们各有各的用处。你想想看,一辆车要上市,既要测它能不能拉满货跑高速(负载),也要测它超载后会不会爆胎(压力),还得测它连续开三天三夜会不会自燃(稳定性)。

下面这六种场景,是我在实际项目中反复验证过的分类方式。

核心观点: 压测场景不是单选题,而是组合拳。一个完整的压测方案,至少需要覆盖3种以上场景。

1. 负载测试(Load Testing)

负载测试,说白了就是「正常情况下的极限在哪」。

我习惯把负载测试比作体检。测的是系统在预期流量下的各项指标——响应时间、吞吐量、错误率。目标不是压垮系统,而是验证它能不能扛住设计指标。

关键参数:

  • 目标并发数:比如设计指标是1000并发
  • 目标TPS:比如预期每秒处理500笔交易
  • 响应时间阈值:比如99%的请求在200ms内返回
我的经验: 负载测试最容易踩的坑是「只测峰值,不测均值」。我曾经遇到一个电商项目,双11峰值扛住了,但日常流量反而频繁超时。后来发现是连接池配置问题——峰值时连接池全开,日常反而频繁创建销毁。所以负载测试一定要覆盖典型流量和峰值流量两种场景。

2. 压力测试(Stress Testing)

压力测试就有点「暴力」了。它的目标是找到系统的崩溃点。

我经常跟团队说:压力测试不是要证明系统有多强,而是要找到它什么时候会跪。

怎么做:

  1. 逐步增加并发数,直到系统出现明显退化
  2. 记录崩溃时的各项指标
  3. 观察崩溃后的恢复行为——是优雅降级还是直接挂掉
注意: 压力测试一定要在隔离环境做。我曾经有一次在生产环境的预发布机器上做压力测试,结果把共享数据库压垮了,影响了线上业务。从那以后,我坚持压力测试必须用独立资源。

3. 稳定性测试(Stability Testing)

稳定性测试,也叫「耐力测试」或「长时间测试」。

嗯,这里要注意:很多系统能扛住短时高峰,但跑个一两天就开始出问题。内存泄漏、连接池耗尽、日志文件撑爆磁盘——这些都是稳定性测试才能发现的。

我的建议:

  • 至少跑24小时,最好72小时
  • 监控内存、CPU、磁盘、网络的全生命周期变化
  • 重点关注:GC频率、线程数、连接数是否持续增长
避坑指南: 我曾经做过一个金融项目,稳定性测试跑了48小时一切正常。结果上线第三天,系统突然OOM。查了半天发现是某个缓存组件在第三天触发了全量刷新,导致内存暴涨。从那以后,我坚持稳定性测试至少要覆盖业务周期的1.5倍。

4. 容量测试(Capacity Testing)

容量测试,说白了就是「系统到底能吃下多少」。

它和负载测试的区别在于:负载测试验证设计指标,容量测试探索系统上限。

典型场景:

  • 数据库能存多少条记录而不明显降速
  • 缓存能支撑多少key而不触发淘汰策略
  • 带宽能支撑多少并发连接而不丢包
测试类型 目标 典型指标
负载测试 验证设计指标 响应时间、TPS
容量测试 探索系统上限 最大连接数、最大数据量

5. 尖峰测试(Spike Testing)

尖峰测试模拟的是流量突然暴涨的场景。

比如秒杀、抢票、突发新闻——流量可能在几秒内飙升10倍甚至100倍。

我的做法:

  1. 先让系统在低负载下稳定运行
  2. 突然将并发数提升到目标值的5-10倍
  3. 观察系统是否触发限流、降级、熔断
  4. 观察流量回落后系统能否自动恢复
个人经验: 尖峰测试最容易暴露的是「冷启动」问题。我记得有个直播项目,平时只有几百人,突然来了10万观众。结果服务端因为连接池初始化太慢,前5秒的请求全部超时。解决方案是预置连接池+懒加载优化。

6. 并发测试(Concurrency Testing)

并发测试,很多人以为就是「多线程压测」。其实它更关注的是资源竞争问题。

说白了,就是多个请求同时访问同一份资源时,系统会不会出乱子。

典型场景:

  • 多个用户同时修改同一条数据
  • 多个线程同时获取同一个锁
  • 多个请求同时写入同一个文件
注意: 并发测试一定要结合业务逻辑。我曾经遇到一个案例:100个并发用户同时下单,库存扣减逻辑用了乐观锁,结果因为重试机制设计不当,导致库存扣了但订单没生成。这种问题只有并发测试才能发现。

知识体系总览

下面这张图,是我自己总结的压测场景分类体系。你可以把它当作一个检查清单,每次做压测前对照一下,看看覆盖了哪些场景。

压测场景分类 负载测试 验证设计指标 压力测试 找到崩溃点 稳定性测试 长时间运行 容量测试 探索上限 尖峰测试 流量突增 并发测试 资源竞争 六种场景相互补充,建议根据业务特点组合使用 推荐组合:负载 + 压力 + 稳定性 + 尖峰 容量测试和并发测试根据业务特点选择性加入

如何选择压测场景

说了这么多,你可能想问:那我到底该做哪些?

我的建议是分三步走:

  1. 先做负载测试——确认系统能达到设计指标
  2. 再做压力测试——找到系统的极限在哪里
  3. 最后做稳定性测试——确保系统能长时间稳定运行

尖峰测试和并发测试,根据业务特点选择性加入。比如秒杀系统必须做尖峰测试,金融系统必须做并发测试。

总结一下: 六种场景不是互相替代的关系,而是互补的关系。一个成熟的压测方案,应该像体检套餐一样,既有常规检查(负载测试),也有专项检查(压力、稳定性、尖峰、并发、容量)。

好了,这一章就到这里。下一章我们会深入讲解每种场景的具体实施方法,包括工具选择、参数配置、结果分析。到时候我会拿几个真实项目案例出来,跟大家聊聊那些年我们踩过的坑。