质量规则的自测

质量规则本身也要测试:用构造数据(全空列、重复主键、越界枚举、边界值)跑一遍,确认该失败的能失败、该通过的不误报;规则上线前用历史分区回放,评估误报率与命中量。

质量规则的自测

质量规则本身也是代码,上线前同样要测试。成本最低的手段是构造数据:全空列、重复主键、越界枚举、恰好等于阈值的边界值各造一条,确认该失败的能失败、该通过的不误报。规则上线前再用历史分区回放一遍,估算真实命中量与误报率,避免阈值写错把全团队的告警刷屏。

基本信息

测试对象not_null、唯一性、枚举、区间、一致性等规则
构造样本全空、重复、越界、边界值、正常值
回放方式取历史分区跑新规则,统计命中量与占比
验收标准异常样本必命中、正常样本不误报
上线方式规则与调度任务同仓,流水线自动跑自测

典型使用场景

  • 新规则上线前:用构造样本验证命中与误报
  • 阈值调整后回归:确认调整没有放过真实问题
  • 历史回放评估:拿上周真实数据估算命中量,避免告警刷屏
  • 规则下线前验证:确认没有其他链路依赖这条规则的告警
  • 变更评审:用样本现场跑给评审人看,而不是口头描述

构造样本验证规则

构造样本验证规则
WITH mock AS (
  SELECT NULL AS order_id, -1 AS amount UNION ALL   -- 全空主键 + 负值金额
  SELECT 1001, 10 UNION ALL                          -- 正常记录
  SELECT 1001, 20                                    -- 主键重复
)
SELECT
  SUM(CASE WHEN order_id IS NULL THEN 1 ELSE 0 END) AS null_hit,
  SUM(CASE WHEN amount < 0 THEN 1 ELSE 0 END)       AS neg_hit,
  COUNT(*) - COUNT(DISTINCT order_id)               AS dup_hit
FROM mock;

历史分区回放

历史分区回放
-- 用上周真实分区跑待上线规则,先看命中占比再定阈值
SELECT COUNT(*) AS hit_cnt,
       COUNT(*) / (SELECT COUNT(*) FROM dwd_orders WHERE dt = '2026-10-04') AS hit_ratio
FROM dwd_orders
WHERE dt = '2026-10-04'
  AND (order_id IS NULL OR amount < 0);   -- 待上线规则的判定条件

样本类型与预期结果

样本构造方式期望结果
全空列主键或关键列为 NULLnot_null 命中
重复主键两行使用同一主键唯一性规则命中
越界值枚举外状态码、负金额枚举或区间规则命中
边界值恰好等于与刚越过阈值按闭区间还是开区间定义判定
正常值符合业务分布通过,不产生告警
历史分区回放是低成本验证:拿上周真实数据跑新规则,先看误报率再决定阈值。
回放要选有代表性的分区:只挑平稳日很难暴露大促或月末的口径差异,至少覆盖一个业务高峰分区。

易错点

  • 规则直接上生产,阈值写错导致全员告警刷屏
  • 只测正常数据不造异常样本,规则从未被真正验证
  • 样本为空时规则静默通过:规则要能区分“无异常”和“没数据可查”两种情况
  • 边界值只测一侧:恰好等于阈值与刚越过阈值的行为可能不同,两侧都要造样本

数据来源与参考

  • 软件测试实践(边界值分析)
  • dbt 官方文档(测试)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌