测试用例方法---因果图法(黑盒)
一 、因果图法是一种利用图解法分析输入的各种组合情况,从而设计测试用例的方法,她适用于检查程序输入条件的各种组合情况,适合于描述多种输入条件的组合、相应产生多个动作的方法。
因果图的四个好处:
(1)考虑多个输入之间的相互组合、相互制约关系。
(2)指导测试用例的选择。能够指出需求规格说明书描述中存在的问题。
(3)能够帮助测试人员按照一定的步骤,高效率地开发测试用例。
(4)因果图法是将自然语言规格说明转化成形式语言规格说明的一种严格的方法,可以指出规格说明书存在的不完整性和二义性。
1、因果图的基本关系------因果符号(恒等、非、或、与)---------因果关系
(1)
恒等:条件c1满足要求时,一定会输出结果e
若c1为1,则e1也为1,否则e1为0。
(2)
非(-):条件c1满足要求时,一定不会输出结果e
若c1为1,则e1也为0,否则e1为1。
(3)
或(^):条件c1、c2、c3任何一项满足要求时,就会输出结果e
若c1或c2或c3为1,则e1也为1,否则e1为0。
(4)
与:条件c1、c2、c3同时满足要求时,才会输出结果e
若c1和c2和c3都是1,则e1也为1,否则e1为0。
2、因果图的基本关系------原因符号( 异、或、唯一、要求)--------原因与原因之间的关系
(1)
异(E约束,Exclusive):原因a、b中只能有一个为真(只有2个条件)
a和b中至多有一个可能为1,即a和b不能同时为1。(不可能同时为1,但可以同时为0)
(2)
或(I约束,Inclusive):原因a、b中至少有一个为真(a为真,b也可以为真)
a和b中至少有一个必须是1,即a和b不能同时为0。(可以同时为1)
(3)
唯一(O约束,One and Only):在多组判定条件中,有且只有一个为真(多个条件)
a和b中必须有一个是1,且有且仅有1个为0。(有a无b,有b无a)
(4)
要求(R约束,Request):原因a满足条件时,原因b一定满足条件
a是1时,b必须是1,即不可能a是1时b是0。
3、因果图的基本关系------结果符号(强制)--------结果与结果之间的关系
强制(M约束,Masks):结果a出现时,结果b一定不出现
若结果a是1,则结果b强制是0。
二、因果图法设计测试用例步骤
因果图生成测试用例的步骤示意图如下:
(1)分析软件规格说明,哪些是原因(即输入条件或输出条件的等价类),哪些是结果(即输出条件),给每个原因和结果赋予标识符。分析原因与结果之间,原因与原因之间对应逻辑关系,用因果图的方式表示出来。
(2)确定因果图中的各个因素,根据组合间的关联、约束,形成因果图。由于语法或环境的限制,有些原因与原因之间、原因与结果之间的组合情况不可能出现。为表明这些特殊情况,在因果图上用一些记号表明约束或限制条件。
(3)将因果图转换成判定表。
(4)根据判定表的每一列设计输出测试用例。
注意:对于逻辑结构复杂的软件,先用因果图进行图形分析,再用判定表进行统计,最后设计测试用例。对应简单的测试对象,可以忽略因果图,直接使用决策表(判定表)。
三、案例
某软件规格说明书包含这样的要求: 第一列字符必须是A或B,第二列字符必须是一个数字, 在此情况下进行文件的修改, 但如果第一列字符不正确,则给出信息L; 如果第二列字符不是数字,则给出信息M。
1、根据题意,原因和结果如下:
原因: c1——第一列字符是A;
c2——第一列字符是B;
c3——第二列字符是一数字。
结果: e21——修改文件;
e22 ——给出信息L;
e23——给出信息M。
2、程序规格说明因果图
3、根据因果图建立判定表
下表中有8种情况,左面两列原因c1和c2同时为1时,这是不可能出现的,所以应该排除这两种情况。这是由于原因c1是第一列字符是A,原因c2是第一列字符B,所以不可能出现第一列字母是A,同时出现第一列字母是B。
4、把判定表的每一列拿出来作为依据,设计测试用例如下表所示: