首页/开发/软件测试速查/因果图(Cause-Effect Graphing)
用例设计方法62 条

因果图(Cause-Effect Graphing)

用因果图梳理输入条件(因)与输出结果(果)的逻辑关系(与、或、非),再据此生成判定表与用例;适合逻辑复杂的规格分析。

软件测试速查开发更新于 2026-10-13

因果图是什么

因果图(Cause-Effect Graphing)用图示方式把输入条件(因)与输出结果(果)之间的逻辑关系画出来,包括与、或、非等基本约束,再把图转换成判定表生成用例。它适合输入条件多且组合有明确逻辑关系的功能:先梳理约束、剔除不可能组合,再设计高覆盖且无冗余的用例集。

基本信息

基本元素因节点(输入条件)、果节点(输出动作或结果)、逻辑连线
逻辑关系与(全部成立)、或(任一成立)、非(取反)
附加约束互斥(至多一个)、包含(必须同时)、唯一、要求(依赖)
推导步骤识别因与果、画约束关系、转判定表、生成用例
适用信号输入条件多、约束明确、输出由组合决定的功能
工具关系复杂时用图形工具或表格化整理,避免纸面草图丢失

典型使用场景

  • 表单校验规则:多个字段的联动校验逻辑用因果图梳理组合。
  • 状态联动功能:开关、权限、配置多因素共同决定行为时梳理逻辑。
  • 规则评审:把模糊的口头规则画成图,业务方当场就能指出偏差。
  • 用例精简:剔除逻辑上不可能出现的组合,减少无效用例。
  • 回归设计:功能改单规则时,从图中定位受影响的果节点圈定回归范围。

转换示意

转换示意
因:A 已登录;B 有权限;C 处于维护窗口
果:允许提交;给出提示
逻辑:# 允许提交 = A 与 B 与非 C
约束:B 仅在 A 成立时才有意义(要求约束)
转换:把有效组合列进判定表  # 每个有效规则至少一条用例
# 不可能组合直接剔除,不进用例集
先剔约束再列组合:不加约束的穷举会带来大量无意义用例,评审都过不完。
图只是中间产物:最终交付的是用例与需求追溯关系,画完不转换等于没做。
变量极多时换武器:条件超过十多个时,pairwise 或按规则分组更现实。

易错点

  • 输入条件多还硬画全图:图形复杂度失控,没人愿意读,形同废弃。
  • 只画图不转用例:梳理成果停留在纸张上,测试覆盖没有实际提升。
  • 约束遗漏:互斥与依赖没画全,生成出非法组合,执行时全部报错。
  • 与业务方不确认:图上的逻辑是测试的理解,不是业务的事实。
  • 维护断层:规则变更后图不更新,后续复用基于错误模型。

数据来源与参考

  • ISTQB CTFL 4.0 大纲(因果图技术)
  • Myers《The Art of Software Testing》
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌