4. 测试执行策略:负载模型、并发模型与数据采集

好,咱们进入第四章。这一章讲的是测试执行策略,说白了就是——你打算怎么压?

很多人拿到工具就开跑,结果跑出来的数据自己都解释不了。我见过太多这样的案例了。其实,测试执行不是瞎跑,它有一套成熟的策略体系。今天我就把这套体系拆开,跟你聊聊。

4.1 负载模型:阶梯、突发与恒定

负载模型,就是你的压力施加方式。三种主流模型,各有各的用处。

4.1.1 恒定负载模型

最简单,也最常用。保持固定并发数,跑一段时间。

  • 适用场景:稳定性测试、资源泄漏检测
  • 优点:结果稳定,容易对比
  • 缺点:找不到拐点

我个人习惯,做长时间稳定性测试时,先用恒定负载跑个基线。比如 100 并发跑 2 小时,看看内存和 CPU 是不是一条直线。如果曲线往上走,那大概率有泄漏。

4.1.2 阶梯负载模型

这是我最喜欢的模型。每过一段时间增加一批用户,像爬楼梯一样。

核心价值:找到系统的性能拐点。

当吞吐量不再随并发数增长而增长,甚至开始下降时,那个点就是系统的极限。

我曾经帮一个电商平台做压测,用阶梯模型从 50 并发起步,每 2 分钟加 50。跑到 350 并发时,TPS 突然从 1200 掉到 800。嗯,这就是典型的拐点——数据库连接池满了。

4.1.3 突发负载模型

模拟瞬间大量用户涌入。比如秒杀、抢票、热点新闻。

  • 特点:并发数在几秒内从 0 飙升到峰值
  • 关注点:系统能否扛住冲击,会不会雪崩

你想想看,双十一零点那一刻,用户不是慢慢进来的,是瞬间涌进来的。这时候用恒定模型测,根本测不出问题。

模型 压力曲线 主要用途 典型时长
恒定 水平直线 稳定性、资源泄漏 30min ~ 24h
阶梯 逐级上升 找拐点、容量规划 10min ~ 1h
突发 陡峭尖峰 抗冲击、弹性伸缩 1min ~ 5min

4.2 并发用户数与线程模型

这里有个常见的误区。很多人以为并发用户数 = 线程数。其实不是。

并发用户数,是业务层面的概念。指的是同时在使用系统的用户数量。而线程数,是工具层面的概念。指的是施压机开了多少个线程去发请求。

注意:不要盲目增加线程数。

线程多了,上下文切换的开销会吃掉 CPU。我见过有人开了 2000 个线程,结果施压机自己先挂了,被测系统反而没事。

我的经验是,一个线程能模拟 10~50 个并发用户,取决于你的思考时间和等待时间。举个例子:

  • 用户操作间隔 3 秒(思考时间)
  • 服务端响应 200ms
  • 一个线程每秒能发约 0.3 个请求
  • 要模拟 1000 并发用户,大约需要 30~50 个线程

具体怎么算?我一般用这个公式:

线程数 = 目标并发用户数 / (1 + 思考时间 / 响应时间)

当然,这只是估算。实际跑的时候,我会先跑个小规模测试,看看单线程的吞吐量,再反推需要的线程数。

4.3 预热与冷却期

这两个概念,很多人会忽略。但我觉得,它们跟正式测试一样重要。

4.3.1 预热期(Warm-up)

系统刚启动时,很多组件还没准备好。比如:

  • JIT 还没编译热点代码
  • 数据库连接池还没填满
  • 缓存还没命中

这时候测出来的数据,是偏低的。我习惯在正式测试前,先跑 3~5 分钟的预热负载。让系统进入稳定状态,再开始记录数据。

小技巧:预热期的负载量,可以跟正式测试一样,也可以略低。关键是让系统「热起来」。

4.3.2 冷却期(Cool-down)

测试结束后,不要马上停。留 1~2 分钟观察系统的恢复情况。

  • 连接数是否回落
  • 内存是否释放
  • 队列是否清空

我曾经遇到过一个问题:测试时一切正常,但测试结束后,数据库连接数一直居高不下。后来发现是连接池的回收策略有问题。如果没有冷却期的观察,这个问题根本发现不了。

4.4 数据采集点设置

数据采在哪,决定了你能看到什么。

我一般分三层来采集:

  1. 施压机层:响应时间、TPS、错误率
  2. 服务端层:CPU、内存、磁盘 IO、网络
  3. 中间件层:数据库连接数、队列长度、缓存命中率

这三层的数据要能对应起来。比如施压机看到 TPS 下降,服务端 CPU 却不高,那问题可能出在数据库或网络。

采集频率建议:

  • 施压机:每秒采集一次
  • 服务端:5~10 秒采集一次
  • 数据库:10~30 秒采集一次

频率太高会干扰系统,太低又抓不到瞬时波动。这个平衡点,需要根据测试场景调整。

另外,我习惯在关键路径上埋点。比如登录、下单、支付这些核心接口,单独记录它们的耗时分布。这样定位问题时,能快速缩小范围。

4.5 知识体系总览

下面这张图,把本章的核心逻辑串起来了。你可以把它当作一个检查清单,每次做测试前,对照着过一遍。

测试执行策略知识体系 测试执行策略 负载模型 恒定 · 阶梯 · 突发 并发用户与线程 线程数 ≠ 并发用户数 预热与冷却 预热3~5min · 冷却1~2min 数据采集点 三层采集 · 关键路径埋点 执行策略 = 负载模型 + 并发模型 + 预热冷却 + 数据采集 四者缺一不可,共同决定测试结果的可信度 💡 执行策略选择建议 • 容量规划 → 阶梯负载 + 多线程模型 + 充分预热 • 稳定性验证 → 恒定负载 + 长时间运行 + 冷却期观察 • 抗冲击测试 → 突发负载 + 高并发线程 + 秒级数据采集 • 日常回归 → 恒定负载 + 短周期 + 关键接口埋点

这张图把四个核心要素串在了一起。你每次设计测试方案时,都可以拿它当模板,逐一确认每个环节有没有遗漏。