1. 因果图(Cause-Effect Graph)中如何处理'与(AND)'、'或(OR)'、'非(NOT)'等逻辑约束?请以'订单提交'场景为例绘制因果图并转换为判定表。
因果图(Cause-Effect Graph)中如何处理与(AND)、或(OR)、非(NOT)等逻辑约束?请以"订单提交"场景为例绘制因果图并转换为判定表?
- 因果图的基本逻辑符号(AND/OR/NOT)
- 因果图到判定表的转换
- 从需求提取因果的设计能力
因果图中,原因是条件(输入),结果是动作(输出),用逻辑门连接。AND 表示多个原因同时成立结果才成立,OR 表示任一原因成立结果即成立,NOT 表示对原因取反。以"订单提交"为例:原因是"库存充足"、"金额>0"、"用户已登录",结果是"订单创建成功"。若规则为"用户已登录 且 金额>0 且 (库存充足 或 允许缺货下单)",则因果图为:登录与金额相与,再与(库存充足或允许缺货)相与,得到"订单创建成功"。绘制因果图时,先列出所有原因与结果,用逻辑门连接,再标注约束(互斥/包含/唯一),最后把因果图展开为判定表:每一列对应一个原因组合(条件项),结果列标出该组合下的动作。判定表可直接转化为测试用例,每一行条件组合即一个用例。
因果图的价值在于把需求中的"隐蔽逻辑关系"显式化,帮助发现遗漏条件与矛盾规则;判定表则把因果图落地为可执行的用例矩阵。逻辑门(AND/OR/NOT)是最基本的组合工具,理解其语义是掌握因果图的前提。转换时要注意"因果图节点多、判定表列数=2^n"的爆炸,需借助约束与合并控制规模。