因果图与决策表法
等价类划分与边界值分析法主要侧重于输入条件,却没有考虑这些输入之间的关系,如组合、约束等。如果程序输入之间有作用关系,等价类划分法与边界值分析法很难描述这些输入之间的作用关系,无法保证测试效果。因此,需要学习一种新的方法来描述多个输入之间的制约关系,这就是因果图法。
因果图法是一种利用图解法分析输入的各种组合情况的测试方法,它考虑了输入条件的各种组合及输入条件之间的相互制约关系,并考虑输出情况。
例如,某一软件要求输入地址,具体到市区,如【北京-昌平区】【天津-南开区】,其中第2个输入受到第1个输入的约束,输入的地区只能再输入的城市中选择,否则地址就是无效的。像这样多个输入之间有相互制约关系,就无法使用等价类划分法和边界值法设计测试用例。因果图法就是为了解决多个输入之间的作用关系而产生的测试用例设计方法。
下面介绍如何使用因果图站式多个输入和输出之间的关系,并且学习如何通过因果图法设计测试用例。

1.因果图
因果图需要处理输入之间的作用关系,还要考虑输出情况,因此它包含了复杂的逻辑关系,这些复杂的逻辑关系通常用图示来展现,这些图示就是因果图。
因果图使用一些简单的逻辑符号和直线将程序的因(输入)与果(输出)连接起来,一般原因用c表示,结果用e表示,c与e可以取值【0】或【1】,其中【0】表示状态不出现,【1】表示状态出现。

c与e之间有恒等,非、或、与4种关系,如图2-1所示。

因果图与决策表法-风君雪科技博客

图2-1展示了因果图的4种关系,每种关系的具体含义如下所示。
(1)恒等:在恒等关系种,要求程序有1个输入和1个输出,输出与输入保持一致。若C为1,则e也为1;若C为0,则e也为0。
(2)非:非使用符号【~】表示,在这种关系中,要求程序有1个输入和1个输出,输出是输入的取反。
若C为1,则e为0;若c为0,则e为1
(3)或:或使用符号【v】表示,或关系可以有任意个输入,只要这些输入中有一个为1,则输出为1,否则输出为0.
(4)与:与使用符号【】表示,与关系耶尔可以有任意个输入,但只有这些输入全部为1,输出才能为1,否则输出为0.
在软件测试中,如果程序有多个输入,那么除了输入与输出之间的作用关系之外,这些输入之间往往也会存在某些依赖关系,某些输入条件本身不能同时出现,某一种输入可能会影响其它输入。
例如,某一个软件用于统计体检信息,在输入个人信息时,性别只能输入男或女,这两种输入不能同时存在,而且如果输入性别为女,那么体检项就会收到限制。这些依赖关系在软件测试中称为【约束】,约束的类别可分为4种:E、I、O、R在因果图种,用特定的符号表明这些约束关系,如图所示

因果图与决策表法-风君雪科技博客

在输出条件的强制约束关系种,如果a为1,则b强制为0;如果a为0,则b强制为1

因果图与决策表法-风君雪科技博客

2、因果图法设计测试用例的步骤

使用因果图法设计测试用例需要经过以下几个步骤
(1)分析程序规格说明书描述内容,确定程序的输入与输出,即确定原因和结果。
(2)分析得出输入与输入之间,输入与输出之间的对应关系,将这些输入与输出之间的关系使因果图表示出来。
(3)由于语法与环境的限制,有些输入与输入之间,输入与输出之间的组合情况是不可能出现的,对于这种情况,使用符号标记它们之间的限制或约束关系。
(4)将因果图转换为决策表,
(5)根据决策表设计测试用例。
因果图法考虑了输入情况的各种组合以及各种输入情况之间的相互制约关系,可以帮助测试人员按照一定的步骤高效率地开发测试用例。此外,因果图是由自然语言规格说明转化为形式语言规格说明地一种严格方法,它能够发现规格说明种存在地不完整性和二义性,帮助开发人员完善产品地规格说明。