啊胡

V1

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条测试用例:

写在最后

看完不思考的喵不是一只成熟的测试喵~

大家测试工作中编写测试用例时是否使用过因果图法?在什么场景使用的?欢迎评论区留言~

分类:

后端

标签:

软件测试

作者介绍

啊胡
V1