我的测试学习站TEST LEARNING HUB
开始学习
首页/精华文章/5. 性能测试场景模型怎么设计

5. 性能测试场景模型怎么设计

性能测试不是随便开一批线程压接口,而是要根据业务流量和用户行为设计场景模型。场景模型决定压测是否真实,也决定测试结果是否有参考价值。很多性能测试结果不可信,不是工具问题,而是场景不合理:所有接口平均分配压力、没有思考时间、测试数据不真实、压测时长太短、没有预热、没有稳定运行阶段。

面试中问性能测试场景设计,重点是看你是否能从业务出发,把真实用户行为转成压测模型。

一、先明确测试目标

不同目标对应不同场景:

  • 验证系统是否满足预期 TPS;
  • 找系统最大承载能力;
  • 验证高峰期稳定性;
  • 验证长时间运行是否稳定;
  • 验证扩容效果;
  • 验证某个接口优化效果。

目标不同,压测策略也不同。

二、选择业务场景

不是所有接口都要压。

优先选择:

  • 高频访问接口;
  • 核心交易链路;
  • 资源消耗高接口;
  • 历史故障接口;
  • 新改造接口;
  • 依赖复杂接口。

例如电商系统中,商品查询、搜索、下单、支付回调通常比个人资料编辑更重要。

三、确定业务比例

真实场景中,不同操作比例不同。

例如:

浏览商品 60%
搜索商品 20%
加入购物车 10%
提交订单 8%
支付回调 2%

如果所有接口都按 20% 平均分配,场景就不真实。

业务比例可以来自线上日志、埋点数据、网关统计或业务预估。

四、确定负载模型

常见负载模型:

  • 基准测试:低压力下获取基准数据;
  • 负载测试:按预期压力运行;
  • 压力测试:持续加压找瓶颈;
  • 稳定性测试:长时间运行;
  • 峰值测试:模拟短时间突增流量;
  • 容量测试:找最大承载能力。

面试中要说明你做的是哪种测试。

五、并发和 TPS 目标

目标可以来自:

  • 当前线上峰值;
  • 未来业务增长预估;
  • 大促活动预估;
  • SLA 要求;
  • 历史访问数据。

例如:当前峰值 QPS 300,预计活动增长 3 倍,则压测目标可以设计到 900 QPS,并留一定冗余。

六、压测节奏设计

一个完整压测场景通常包含:

  1. 预热阶段;
  2. 加压阶段;
  3. 稳定运行阶段;
  4. 降压阶段。

预热可以让 JVM、缓存、连接池进入正常状态。稳定运行阶段用于观察指标是否持续稳定。

七、思考时间

真实用户操作之间有停顿。完全没有思考时间的脚本可能不真实。

例如用户浏览商品后不会立刻无限下单。

JMeter 可以用定时器模拟思考时间,例如随机等待 1-3 秒。

八、测试数据设计

场景模型必须考虑数据:

  • 不同用户;
  • 不同商品;
  • 不同订单;
  • 足够库存;
  • 避免缓存过度命中;
  • 避免重复使用优惠券;
  • 压测数据可清理。

如果所有线程查询同一个商品,可能测的是缓存热点,不是真实业务。

九、混合场景示例

电商下单压测:

场景目标:验证高峰期核心链路承载能力
压测时长:30 分钟
预热:5 分钟
稳定运行:20 分钟
降压:5 分钟
业务比例:浏览商品 60%,搜索 20%,加购 10%,下单 8%,支付回调 2%
指标目标:95 线 < 1s,错误率 < 0.1%,TPS 达到预估峰值
监控:应用 CPU、内存、数据库、Redis、MQ、网关

十、常见错误

  • 不基于业务流量设计;
  • 所有接口平均分配压力;
  • 没有预热;
  • 压测时间太短;
  • 没有思考时间;
  • 数据重复导致缓存失真;
  • 没有业务断言;
  • 只压单接口不看链路;
  • 不监控服务器指标。

十一、面试回答模板

如果面试官问“性能测试场景模型怎么设计”,可以这样回答:

我会先明确性能测试目标,是验证预期容量、找瓶颈还是做稳定性测试。然后选择核心业务场景,比如登录、查询、下单、支付,并根据线上日志或业务预估确定各场景比例,而不是平均分配压力。接着设计并发数、TPS 目标、压测时长、预热时间、稳定运行时间和降压阶段。脚本中会加入参数化、接口关联、业务断言和思考时间,保证压力更接近真实用户行为。执行时同步监控应用、数据库、缓存、MQ、网络等指标,最后根据响应时间、TPS、错误率和资源指标判断是否达标。

十二、练习清单

  1. 设计登录压测场景;
  2. 设计商品查询场景;
  3. 设计下单混合场景;
  4. 估算业务比例;
  5. 设计预热阶段;
  6. 设计稳定运行阶段;
  7. 设置思考时间;
  8. 准备压测数据;
  9. 设置业务断言;
  10. 准备场景设计回答。

性能场景设计的核心是真实性。压测模型越接近业务流量,测试结果越有价值。

配套刷题: