
啊胡
2022/09/03阅读:64主题:绿意
黑盒测试之 因果图法
是什么(What)
因果图法
是一种利用图解法分析输入的各种组合情况,从而设计测试用例的方法,它适合于检查程序输入条件的各种组合情况。等价类划分法
和边界值分析法
,都是着重考虑输入条件,但未考虑输入条件之间的联系、相互组合等。考虑输入条件之间的相互组合,可能会产生一些新的情况。但要检查输入条件的组合不是一件容易的事情,即使把所有输入条件划分成等价类,它们之间的组合情况也相当多。因此必须考虑采用一种适合于描述对于多种条件的组合,相应产生多个动作的形式来考虑设计测试用例,这就需要利用因果图
(逻辑模型)。
在因果图中,用Ci表示原因,Ei表示结果,有4种符号分别表示了规格说明中4种因果关系
,其基本符号如图:

其中各结点表示的状态,可取值“0”或“1”。其中,“0”表示某状态不出现,“1”表示某状态出现。
• 恒等:若原因出现,则结果出现;若原因不出现,则结果也不出现。
• 非(~):若原因出现,则结果不出现;若原因不出现,则结果出现。
• 或(∨):若几个原因中有1个出现,则结果出现;若几个原因都不出现,则结果不出现。
• 与(∧):若几个原因都出现,结果才出现。若其中有1个原因不出现,则结果不出现。
由于输入状态相互之间还可能存在某些依赖关系,这些依赖关系称为约束
。例如,某些输入条件本身不可能同时出现。输出状态之间也往往存在约束。在因果图中,用特定的符号标明这些约束。从输入(原因)考虑,有4种约束,如(a)、(b)、(c)、(d)所示,从输出(结果)考虑,还有1种约束,如(e)所示。

-
E(互斥):表示a、b 2个原因不会同时成立,最多有1个可能成立。 -
I(包含):表示a、b、c 3个原因中至少有1个必须成立。 -
O(唯一):表示a和b当中必须有1个,且仅有1个成立。 -
R(要求):表示当a出现是,b必须也出现。也就是说a出现时不可能b不出现。 -
M(强制):表示当a是1时,b必须是0。而当a为0时,b的值不定。
基于因果图法生成测试用例(How)
① 分析软件规格说明的描述中,哪些是原因,哪些是结果。原因是输入条件或输入条件的等价类,结果是输出条件。
② 分析软件规格说明描述中的语义,找出原因与结果之间、原因与原因之间对应的关系,根据这些关系,画出因果图。
③ 标明约束条件。由于语法或环境的限制,有些原因和结果的组合情况是不可能出现的。为表明这些特定的情况,在因果图上使用若干标准的符号标明约束条件。
④ 把因果图转换成判定表。
⑤ 为判定表中的每一列设计测试用例。因果图方法最终生成的就是判定表,它适合于检查程序输入条件的各种组合情况。
实战(Do)
某软件规格说明书包含这样的要求:第1列字符必须是A或B,第2列字符必须是1个数字,在此情况下对文件进行修改,但如果第1列字符不正确,则给出信息L;如果第2列字符不是数字,则给出信息M。
解
:
根据题意,原因和结果如下。
原因:1—第1列字符是A;2—第1列字符是B;3—第2列字符是1个数字。
结果:21—修改文件;22—给出信息L;23—给出信息M。
其对应的因果图如图所示:11为中间节点;考虑到原因1和原因2不可能同时为1,因此在因果图上施加E约束。

根据因果图再建立判定表:

根据判定表,原因1和原因2同时为1,这是不可能出现的,故应排除这2种情况,然后就可以写出剩下对应的6条测试用例:

写在最后
看完不思考的喵不是一只成熟的测试喵~
大家测试工作中编写测试用例时是否使用过因果图法?在什么场景使用的?欢迎评论区留言~
作者介绍
