因果图是什么
因果图(Cause-Effect Graphing)用图示方式把输入条件(因)与输出结果(果)之间的逻辑关系画出来,包括与、或、非等基本约束,再把图转换成判定表生成用例。它适合输入条件多且组合有明确逻辑关系的功能:先梳理约束、剔除不可能组合,再设计高覆盖且无冗余的用例集。
基本信息
| 基本元素 | 因节点(输入条件)、果节点(输出动作或结果)、逻辑连线 |
|---|---|
| 逻辑关系 | 与(全部成立)、或(任一成立)、非(取反) |
| 附加约束 | 互斥(至多一个)、包含(必须同时)、唯一、要求(依赖) |
| 推导步骤 | 识别因与果、画约束关系、转判定表、生成用例 |
| 适用信号 | 输入条件多、约束明确、输出由组合决定的功能 |
| 工具 | 关系复杂时用图形工具或表格化整理,避免纸面草图丢失 |
典型使用场景
- 表单校验规则:多个字段的联动校验逻辑用因果图梳理组合。
- 状态联动功能:开关、权限、配置多因素共同决定行为时梳理逻辑。
- 规则评审:把模糊的口头规则画成图,业务方当场就能指出偏差。
- 用例精简:剔除逻辑上不可能出现的组合,减少无效用例。
- 回归设计:功能改单规则时,从图中定位受影响的果节点圈定回归范围。
转换示意
转换示意
因:A 已登录;B 有权限;C 处于维护窗口
果:允许提交;给出提示
逻辑:# 允许提交 = A 与 B 与非 C
约束:B 仅在 A 成立时才有意义(要求约束)
转换:把有效组合列进判定表 # 每个有效规则至少一条用例
# 不可能组合直接剔除,不进用例集先剔约束再列组合:不加约束的穷举会带来大量无意义用例,评审都过不完。
图只是中间产物:最终交付的是用例与需求追溯关系,画完不转换等于没做。
变量极多时换武器:条件超过十多个时,pairwise 或按规则分组更现实。