🎬 场景编排与数据驱动

02-02 | 测试方法论场景编排数据驱动混合场景

📌 一句话概括

场景编排解决"怎么把多个业务场景串起来跑",数据驱动解决"每次跑的数据不一样"——两者共同决定了性能测试的逼真度和可重复性。银行业务中,混合场景和峰值叠加是最容易被低估的复杂设计。

💡 场景编排模式

1. 独立场景模式

每种交易类型独立执行,互不影响。适合单交易性能基准测试——验证某个接口在不同并发下的表现。

2. 混合场景模式

多种交易类型按生产占比同时执行。适合综合性能评估——验证系统在多业务并行下的整体表现。银行典型混合比例可从生产日志提取,例如:查询类40%+转账类25%+缴费类15%+开户类10%+其他10%。

3. 峰谷叠加模式

模拟联机交易与批量处理同时发生的场景,这是银行业最典型的性能风险点。例如:白天联机高峰期,后台同时进行报表生成或批量文件传输。测试时需在联机加压的同时启动批量任务线程。

4. 链路串联模式

将多个关联步骤组合成一个完整业务流程。例如:登录→查询余额→转账→查询转账记录→退出。场景编排时需处理步骤间的参数传递(如转账金额、账户号的动态关联)。

📊 数据驱动策略

参数化方式

方式实现适用场景注意
CSV文件从CSV读取账号、金额等大量唯一数据场景文件IO可能成为压测机瓶颈
随机生成运行时动态生成参数数据不需要唯一性需确保随机范围覆盖真实分布
数据库读取从测试库实时查询数据数据需与生产完全一致数据库连接可能成为瓶颈
函数生成UUID/时间戳/序列号唯一标识类数据确保不产生脏数据

银行系统数据构造要点

🔍 测试实战

1. 峰谷叠加场景验证

操作:选取过去12个月中TPS最高的一天,提取该日的交易时间分布曲线。在压测中复现24小时负载曲线,同时在凌晨窗口叠加批处理任务。观察联机响应时间是否因批量任务而劣化。

2. 数据驱动压测脚本开发

操作:用JMeter CSV Data Set Config实现参数化,准备至少10万条测试数据确保压测期间不重复。设置Recycle on EOF=True和Stop thread on EOF=False实现数据循环使用。

⚠️ 常见坑点

  1. 场景编排过于简单——只测单一交易类型,上线后发现混合场景下性能崩溃
  2. 忽略批量窗口——工作日日终批处理与联机叠加是银行最常见的性能事故场景
  3. 参数化数据不足——数据量不够导致大量重复请求被缓存命中,TPS虚高
  4. 数据构造脱离业务——测试用的交易金额、账户类型与真实业务偏差过大

📖 延伸阅读