测试用例设计中的因果分析法(因果图法)
因果图法(Cause-Effect Graphing)是一种黑盒测试用例设计方法,由 J.D. McCall 等人提出。它通过分析输入条件(原因)与输出结果(结果)之间的逻辑关系,用图形化方式处理输入条件的各种组合,从而设计出覆盖全面且数量精简的测试用例。
一、核心内容
因果图法的核心是将需求规格说明中的输入条件视为“原因”,输出动作视为“结果”,然后用逻辑门和约束条件描述它们之间的关系,最终转换为判定表并生成测试用例。
主要内容包括:
识别原因和结果
从需求中找出所有输入条件和对应的输出动作。
分析逻辑关系
确定原因之间、原因与结果之间的与(AND)、或(OR)、非(NOT)关系。
分析约束关系
常见约束:互斥(E)、包含(I)、唯一(O)、要求(R)、强制(M)。
绘制因果图
用节点表示原因和结果,用连线表示逻辑关系和约束。
转换为判定表
根据因果图列出所有可能的条件组合及其对应的动作。
设计测试用例
判定表的每一列(规则)通常对应一条测试用例。
二、特点与特征
| 逻辑组合驱动 | 关注输入条件的组合,而非单个输入。 |
| 图形化表达 | 用因果图直观展示原因与结果之间的逻辑关系。 |
| 系统覆盖 | 能覆盖所有有效的输入组合,避免遗漏。 |
| 冗余精简 | 通过逻辑化简减少不必要的测试用例。 |
| 与判定表结合 | 因果图最终转换为判定表,便于生成用例。 |
| 黑盒测试方法 | 不关心程序内部结构,只关注输入输出关系。 |
主要特征:
-
原因和结果用节点表示。
-
逻辑门:与、或、非。
-
约束符号:E、I、O、R、M。
-
输出判定表,每条规则对应一条测试用例。
三、原理
因果图法基于布尔逻辑和组合测试思想:
布尔逻辑:将每个输入条件看作一个布尔变量(真/假),输出动作也是布尔变量。通过逻辑门描述它们之间的因果关系。
组合覆盖:列出所有可能的输入组合,但通过约束条件排除无效组合,减少用例数量。
等价类划分与边界值补充:因果图处理逻辑组合,具体数值边界仍需结合等价类划分和边界值分析。
判定表:将因果图转换为判定表,每一列代表一条规则,即一组输入条件及其对应的输出动作。
四、使用场景
因果图法适用于以下场景:
-
输入条件多且输出依赖多个输入条件的逻辑组合。
-
需求规格说明中有明确的输入输出逻辑描述。
-
需要系统覆盖输入组合,同时希望减少冗余测试用例。
-
功能测试中,输入之间存在与、或、非等逻辑关系。
-
例如:登录功能(用户名、密码、验证码、是否勾选记住我)、订单折扣计算、权限判断等。
不适用场景:
-
输入条件之间没有逻辑关系。
-
需求过于复杂,因果图庞大到难以维护。
-
需要测试数值边界,此时更适合等价类划分和边界值分析。
五、输入与输出
输入
-
需求规格说明:包含输入条件和输出动作的描述。
-
输入条件(原因):所有影响输出的输入因素。
-
输出动作(结果):系统对不同输入组合产生的响应。
-
逻辑关系与约束:原因之间、原因与结果之间的与、或、非关系,以及互斥、包含等约束。
输出
-
因果图:图形化表示原因、结果、逻辑门和约束。
-
判定表:列出所有有效规则,每条规则包含条件组合和对应动作。
-
测试用例集:判定表的每一列生成一条测试用例,包括输入数据和预期输出。
六、因果图的基本符号
| 圆圈/椭圆 | 原因或结果节点 |
| ∧ | 与门:所有输入为真时输出为真 |
| ∨ | 或门:任一输入为真时输出为真 |
| ~ | 非门:输入为真时输出为假 |
| E | 互斥:两个原因不能同时为真 |
| I | 包含:至少有一个原因必须为真 |
| O | 唯一:有且仅有一个为真 |
| R | 要求:一个为真时另一个必须为真 |
| M | 强制:一个为真时另一个必须为假 |
七、实施步骤详解
识别原因和结果
从需求中提取所有输入条件和输出动作,分别编号。
分析逻辑关系
确定每个结果由哪些原因通过何种逻辑关系产生。
分析约束关系
找出原因之间的约束,如互斥、包含等。
绘制因果图
用节点和连线画出原因、结果、逻辑门和约束。
转换为判定表
-
列出所有原因作为条件桩。
-
列出所有结果作为动作桩。
-
根据因果图填充条件项和动作项,得到规则列。
简化判定表
合并等价规则,减少测试用例数量。
设计测试用例
为每条规则设计输入数据和预期输出,形成测试用例。
八、优缺点
| 系统覆盖输入组合,避免遗漏 | 需求复杂时因果图庞大,难以维护 |
| 通过逻辑化简减少冗余用例 | 转换判定表工作量大 |
| 图形化直观,便于沟通 | 不适合输入条件之间无逻辑关系的场景 |
| 可与等价类、边界值结合使用 | 需要测试人员具备一定逻辑分析能力 |
九、简单示例
需求:某系统根据输入 A、B、C 产生输出 X、Y、Z。
-
若 A 和 B 同时为真,则输出 X。
-
若 A 为真且 B 为假,则输出 Y。
-
否则输出 Z。
因果图:
-
原因:A、B
-
结果:X、Y、Z
-
逻辑:A∧B→X;A∧~B→Y;其他→Z
判定表:
| 真 | 真 | 1 | 0 | 0 |
| 真 | 假 | 0 | 1 | 0 |
| 假 | 真 | 0 | 0 | 1 |
| 假 | 假 | 0 | 0 | 1 |
测试用例:
A=真,B=真 → 预期 X
A=真,B=假 → 预期 Y
A=假,B=真 → 预期 Z
A=假,B=假 → 预期 Z
十、总结
因果图法是一种基于逻辑组合的黑盒测试用例设计方法,通过分析输入条件与输出结果之间的与、或、非关系及约束,绘制因果图并转换为判定表,最终生成覆盖全面的测试用例。它适合输入组合复杂、逻辑关系明确的功能测试,能有效减少冗余用例,提高测试效率。使用时需注意与质量管理中的鱼骨图(因果图)区分,两者同名但领域、目的、方法完全不同。
网硕互联帮助中心


评论前必须登录!
注册