因果图法
因果图概念:因果图法是一种适合于描述对于多种输入条件组合的测试方法,根据输入条件的组合、约束关系和输出条件的因果关系,分析输入条件的各种组合情况,从而设计测试用例的方法,它适合于检查程序输入条件涉及的各种组合情况。
基本思路:利用图解法分析输入的各种组合情况,从而设计测试用例的方法,它适合于检查程序输入条件的各种组合情况。
因果图概述:
符号:
在因果图中,用Ci表示条件,Ei表示动作,有4种符号分别表示了规格说明中的4种因果关系,如图:
其中各节点表示的状态,可取值“0”或“1”。其中,“0”表示某状态不出现,“1”表示某状态出现。
恒等: | 若条件出现,则动作出现;若条件不出现,则动作也不出现。 |
非(∽): | 若条件出现,则动作不出现;若条件不出现,则动作出现。 |
或(∨): | 若几个原因有一个出现,则结果出现;若几个原因都不出现,则结果不出现。 |
与(∧): | 若几个原因都出现,结果才出现;若其中一个原因不出现,则结果不出现。 |
约束:
由于输入状态相互之间可能存在某些依赖关系,这些依赖关系成为约束。
例如,某些输入条件本身不可能同时出现。输出状态之间也往往存在约束。在因果图中,用特定的符号标明这些约束。
从输入考虑,有4种约束,如图E、I、O、R;从动作考虑有1种约束,如图M。
E(互斥): | 表示a、b,2个条件不会同时成立,最多有1个可能成立。 |
I(包含): | 表示a、b、c,3个条件中至少有1个必须成立。 |
O(唯一): | 表示a、b中必须有1个,且仅有1个成立。 |
R(要求): | 表示当a出现时,b必须也出现。 |
M(强制): | 表示当a是1时,b必须是0。而当a为0时,b的值不确定。 |
因果图生成测试用例的基本步骤:
(1)
(2)
(3)
(4)
适合使用因果图法设计测试的用例:
因果图方法最终生成的就是判定表,它适合于检查程序输入条件的各种组合情况。
例子:某个软件规格说明中包含以下要求:第一列字符必须是A或B,第二列字符必须是一个数字,在此情况下进行文件的修改;但如果第一列字符不正确,则输出信息L;如果第二列字符不是数字,则给出信息M。
解:
采用因果图方法进行分析,根据如下“关系表”,获得“因果图”的各种组合,其中∨表示“或”,∧表示“与”,∽表示“非。”
关系表:
编号 | 条件 | 编号 | 动作 |
C1 | 第一列字符是A | E1 | 修改文件 |
C2 | 第一列字符是B | E2 | 给出信息L |
C3 | 第二列字符是一个数字 | E3 | 给出信息M |
11 | 中间原因 | | |
因果图:
![黑盒测试(五)——因果图法(第零次更新:2012年07月27日) 黑盒测试(五)——因果图法(第零次更新:2012年07月27日)](https://i-blog.csdnimg.cn/blog_migrate/1935c6be4ac79aabbdc2adfbd315a84b.jpeg)
注:11为中间节点;因为原因1和原因2不能同时为1,所以施加约束。
根据“因果图”制定“判定表”,3个因素共有8种组合。由于C1(首字符是A)成立时,C2(首字符是B)就不成立,此时变成6种组合。再合并结果一样的列,变成4种组合。如下表:
注:“判定表”的每一列代表一个测试用例。
判定表
序号 | 1 | 2 | 3 | 4 | 5 | 6 | |
条件 | C1 | 1 | 0 | 0 | 1 | 0 | 0 |
C2 | 0 | 1 | 0 | 0 | 1 | 0 | |
C3 | 1 | 1 | 1 | 0 | 0 | 0 | |
动作 | E1 | 1 | 1 | 0 | 0 | 0 | 0 |
E2 | 0 | 0 | 1 | 0 | 0 | 0 | |
E3 | 0 | 0 | 0 | 1 | 1 | 1 |
优化后的判定表
序号 | 1 | 2 | 3 | 4/5/6 | |
条件 | C1 | 1 | 0 | 0 | — |
C2 | 0 | 1 | 0 | — | |
C3 | 1 | 1 | 1 | 0 | |
动作 | E1 | 1 | 1 | 0 | 0 |
E2 | 0 | 0 | 1 | 0 | |
E3 | 0 | 0 | 0 | 1 | |
用例 | 首字母为A 第2字符为数字 | 首字母为B 第2字符为数字 | 首字母为x 第2字符为数字 | 首字母为A或B或x, 第2字符不是数字 |