首页/数据/数仓建模速查/上线测试用例:空表/重复/极值/跨月
分层与规范64 条

上线测试用例:空表/重复/极值/跨月

上线前跑四类用例:空表与空分区、重复数据去重、金额极值与负数、跨月与闰年边界;用固定样本集验证结果,避免直接在生产窗口试错。

数仓建模速查数据更新于 2026-10-13

上线前的四类用例

脚本上线前至少跑四类用例:空表与空分区、重复数据去重、金额极值与负数、跨月与闰年等时间边界。方法是用固定样本集产出预期结果做比对,而不是在生产窗口试错。用例脚本纳入代码库,口径改动后自动回归,这是把「靠经验上线」变成「靠证据上线」的最低成本手段。

基本信息

用例类型空、重复、极值、时间边界
样本固定的测试数据集
验证方式与预期结果比对
回归口径改动后重跑全部用例
执行环境测试库,结构与生产一致

典型使用场景

  • 新脚本首次上线:先跑空表与空分区,确认不报错也不产出脏数据
  • 去重逻辑变更:构造重复明细与迟到重复,验证保留哪一条符合预期
  • 金额类指标:准备零值、负数(退款)、超大金额,验证汇总不溢出、精度不漂移
  • 时间边界:月初月末、跨年、闰年 2 月 29 日、夏令时切换日各跑一次
  • 口径变更回归:把用例接进流水线,每次改动自动比对结果

边界与极值用例

边界与极值用例
-- 时间边界:月末与次月首日必须各归其位
SELECT dt, count(1) AS cnt, sum(pay_amt) AS pay_amt
FROM dws_trade_store_day
WHERE dt IN ('2026-10-31', '2026-11-01')
GROUP BY dt;
-- 极值用例:负金额(退款)与超大金额不应被过滤或溢出
SELECT min(pay_amt) AS min_amt, max(pay_amt) AS max_amt
FROM dwd_trade_order_di
WHERE dt = '2026-10-12';

四类用例与检查点

用例构造数据预期结果
空表或空分区无数据分区任务正常结束,产出为空且不报错
重复数据同主键多条按既定规则保留一条
极值0、负数、超大金额不溢出、不被误过滤
时间边界跨月、跨年、闰日各归其日,不重不漏
只测当天常规数据,周期性缺陷会在月末、年末集中爆发;时间边界用例应在开发阶段就跑,而不是等生产事故来发现。
测试库要与生产保持同结构、同分区格式,只测逻辑不测结构会让用例全绿但上线失败。

易错点

  • 只测当天常规数据:跨月、跨年、闰日等周期缺陷在边界日集中爆发
  • 用例没有固定样本与预期值:每次都靠人工看结果,改口径后没人能判定对错
  • 在结构与生产不一致的测试库跑用例:用例通过但上线仍失败
  • 不测空表场景:上游延迟导致空分区时任务直接报错,日常调度被中断

数据来源与参考

  • DAMA-DMBOK 第2版
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌