判定表与组合覆盖对比
判定表(Decision Table)把业务规则列成条件桩与动作桩的穷举矩阵,保证每条规则组合都被覆盖;成对组合测试(Pairwise)则认为大多数缺陷由两个因子的交互触发,用少量组合覆盖任意两因子的取值对。前者精确而组合爆炸,后者高效但可能漏掉三因子以上的强交互,两者应按场景取舍或搭配使用。
基本信息
| 判定表要素 | 条件列表、条件取值组合、动作列表、每条规则的动作 |
|---|---|
| pairwise 原理 | 任意两个参数的所有取值组合至少出现一次 |
| 退化手段 | 判定表可通过合并与无关项压缩,保留有效规则 |
| 工具支持 | PICT、AllPairs 等生成成对组合,手工表维护判定规则 |
| 适用信号 | 规则明确、取值离散、组合有限的任务先看判定表 |
| 混合策略 | 高交互规则子集用判定表,其余参数用 pairwise 降维 |
典型使用场景
- 业务规则引擎:优惠叠加、费率计算等规则明确的场景优先判定表。
- 配置参数组合:浏览器、系统、分辨率等参数空间用 pairwise 压缩。
- 测试用例瘦身:全组合上万条的用例集,用 pairwise 收缩到可执行规模。
- 评审依据:判定表让业务方逐条确认规则,减少理解偏差。
- 边界交融场景:条件存在依赖关系时,先判定表梳理再决定是否需要全组合。
两种方法对比
| 维度 | 判定表 | Pairwise |
|---|---|---|
| 覆盖保证 | 规则级全组合或压缩后全覆盖 | 任意两因子组合覆盖 |
| 组合规模 | 随条件数指数增长 | 接近因子数的低次方规模 |
| 漏检风险 | 低(规则内) | 三因子以上交互可能漏掉 |
| 适用对象 | 规则明确的功能逻辑 | 多参数配置与兼容矩阵 |
| 阅读体验 | 业务方可直接评审 | 生成结果对业务方不直观 |
判定表要处理无关项:取值不影响动作的条件组合应合并,否则维护成本爆炸。
pairwise 不是万能挡箭牌:安全关键与已知强交互场景仍需更高阶组合覆盖。
两者可以叠加:主规则用判定表保证正确性,环境维度用 pairwise 控制规模。