因果图法
【产生背景】
等价类划分法和边界值分析法都着重考虑输入条件,而没有考虑到输入条件的各种组合情况,也没有考虑到各个输入条件之间的相互制约关系。这样虽然各种输入条件可能出错的情况已经测试到了,但多个输入条件组合起来可能出错的情况却被忽视了。
如果在测试时必须考虑输入条件的各种组合,则可能的组合数目将是天文数字,因此必须考虑采用一种适合于描述多种条件的组合、相应产生多个动作的形式来进行测试用例的设计,这就需要利用因果图(逻辑模型)。
【定义】
利用图解法分析输入的各种组合情况,从而设计测试用例的方法,它适合于检查程序输入条件的各种组合情况。
【优点】
(1)考虑到了输入情况的各种组合以及各个输入情况之间的相互制约关系。
(2)能够帮助测试人员按照一定的步骤,高效率的开发测试用例。
(3)因果图法是将自然语言规格说明转化成形式语言规格说明的一种严格的方法,可以指出规格说明存在的不完整性和二义性。
因果图中4种因果关系
用直线连接左右节点,其中左节点Ci表示输入状态(或称原因),右节点ei表示输出状态(或称结果)。Ci和ei都可取值0或1,0表示某状态不出现,1表示某状态出现。
因果图中的约束
在实际问题中输入状态相互之间、输出状态相互之间可能存在某些依赖关系,称为“约束”。对于输入条件的约束有E、I、O、R四种约束,对于输出条件的约束只有M约束。
E 约束(异) :a和b中最多有一个可能为1,即a和b不能同时为1。
I 约束(或) :a、b、c中至少有一个必须为1,即 a、b、c不能同时为0。
O约束(唯一):a和b必须有一个且仅有一个为1。
R约束(要求):a是1时,b必须是1,即a为1时,b不能为0。
M约束(强制):若结果a为1,则结果b强制为0。
【设计测试用例步骤】
(1)根据程序规格说明书描述,分析并确定因(输入条件)和果(输出结果或程序状态的改变),并给每个原因和结果赋予一个标识符。
(2)分析软件规格说明中的语义,找出原因与结果之间、原因与原因之间对应的关系, 根据这些关系画出因果图。
(3)由于语法或环境的限制,有些原因与原因之间、原因与结果之间的组合情况不可能出现。为表明这些特殊情况,在因果图上用一些记号表明约束或限制条件。
(4)把因果图转换为决策表。
(5)为判定表中每一列所表示的情况设计一个测试用例。
【案例】
1.程序的规格说明要求:输入的第一个字符必须是#或,第二个字符必须是一个数字,此情况下进行文件的修改;如果第一个字符不是#或,则给出信息N,如果第二个字符不是数字,则给出信息M。
分析:
(1)分析程序规格说明中的原因和结果:
(2)画出因果图(中间结点是导出结果的进一步原因):
(3)将因果图转换成如下所示的决策表:
(4)根据决策表中的每一列设计测试用例
2.自动饮料机问题描述:某自动饮料机销售罐装饮料,销售的饮料包括可乐、雪碧、芬达。每罐饮料的单价为1元5角,且仅接受硬币。若投入1元5角的硬币,按下‘可乐’、‘雪碧’或‘芬达’按钮,相应的饮料就送出来。若投入的是两元硬币,在送出饮料的同时退出5角硬币。