黑盒测试——因果图法

来自计算思维百科
跳转至: 导航搜索
黑盒测试——因果图法1.jpg

因果图法是黑盒测试的一种方法,它是用图解的方法表示输入的各种组合关系,写出判定表,从而设计相应的测试用例。

因果图法着重分析输入条件的各种组合,每种组合条件就是“因”,它必然有一个输出的结果,这就是“果”。

因果图法即因果分析图,又叫特性要因图、石川图或鱼翅图,它是由日本东京大学教授石川馨提出的一种通过带箭头的线,将质量问题与原因之间的关系表示出来,是分析影响产品质量的诸因素之间关系的一种工具。从用自然语言书写的程序规格说明的描述中找出因(输入条件)和果(输出或程序状态的改变),可以通过因果图转换为判定表。

判定表(Decision Table)是分析和表达多逻辑条件下执行不同操作的情况下的工具,它可以把复杂的逻辑关系和多种条件组合的情况表达得既具体又明确。

基本概念

等价类划分方法和边界值分析方法,都是着重考虑输入条件,但未考虑输入条件之间的联系,相互组合等。 考虑输入条件之间的相互组合,可能会产生一些新的情况,但要检查输入条件的组合不是一件容易的事情,即使把所有输入条件划分成等价类,他们之间的组合情况也相当多。因此必须考虑采用一种适合于描述对于多种条件的组合,相应产生多个动作的形式来考虑设计测试用例,这就需要利用因果图。

因果图法是一种适合于描述对于多种输入条件组合的测试方法,根据输入条件的组合、约束关系和输出条件的因果关系,分析输入条件的各种组合情况,从而设计测试用例的方法,它适合于检查程序输入条件涉及的各种组合情况。因果图法一般和判定表结合使用,通过映射同时发生相互影响的多个输入来确定判定条件。因果图法最终生成的就是判定表,它适合于检查程序输入条件的各种组合情况。采用因果图法能帮助我们按照一定的步骤选择一组高效的测试用例,同时,还能指出程序规范中存在什么问题,鉴别和制作因果图。

应用范围

对软件界面和软件功能进行测试。

使用方法及步骤

因果图方法最终生成的就是判定表。它适合于检查程序输入条件的各种组合情况。

因果图的画法:

一般来说,因果图为左因右果。

表示当因子A为真时则得出B。

比如,如果得分大于等于60为及格。

 

逻辑非的关系,表示当因子A为假时则得出B。

比如,如果得分大于等于60为假,则是否及格为假。  

 

逻辑或的关系,表示当因子A1、A2、A3其一为真时则得出B。

比如,招聘单位招聘条件为:至少精通DB2、ORACLE、SQLSERVER一种数据库。

 

逻辑与的关系,表示当因子A1、A2、A3全部为真时则得出B。

比如,招聘单位招聘条件为:A1大本以上学历,A2精通JAVA,A3,28岁以下。

 

逻辑异关系,表示A与B最多只能有一个为真,但均可为假。

比如:想吃A鱼还是想吃B熊掌?鱼与熊掌不可兼得,却可都不得。

 

逻辑或关系,表示A与B最多只能有一个为假,但均可为真。

比如:商店收款时,可以A支持刷银联卡支付方式?可以B支持现金支付方式?显然,可以都支持,但却不可以两个都不支持。

 

表示唯一关系,A与B只能有一个为真。

比如:单位领导找你谈话,你是想出国锻炼发展呢,还是想留在国内升职?

 

表示限制关系,当A为真时,则B必须为真。比如:当你在生产线上工作时,你的工作状态必然为真。

 

表示要求关系,当A为真时,则B必须为假。比如:当你在生产线上工作时,你的休假状态必然为假。

 

                                                        

                                             

根据因果图画出判定表:

把所有原因作为输入条件,每一项原因(输入条件)安排为一行,而所有的输入条件的组合一一列出(真值为1,假值为0),对于每一种条件组合安排为一列,并把各个条件的取值情况分别添入判定表中对应的每一个单元格中。

生成'测试用例'

(1) 分析软件规格说明描述中,哪些是原因(即输入条件或输入条件的等价类),哪些是结果(即输出条件),并给每个原因和结果赋予一个标识符。

(2) 分析软件规格说明描述中的语义。找出原因与结果之间,原因与原因之间对应的关系. 根据这些关系,画出因果图。

(3) 由于语法或环境限制,有些原因与原因之间,原因与结果之间的组合情况不可能出现. 为表明这些特殊情况,在因果图上用一些记号标明约束或限制条件。

(4) 把因果图转换为判定表。

(5) 把判定表的每一列拿出来作为依据,设计测试用例。

从因果图生成的测试用例(局部,组合关系下的)包括了所有输入数据的取TRUE与取FALSE的情况,构成的测试用例数目达到最少,且测试用例数目随输入数据数目的增加而线性地增加。

 

应用案例

应用1-

案例:

有一个饮料自动售货机(处理单价为5角钱)的控制处理软件,它的软件规格说明如下:  若投入5角钱的硬币,按下“橙汁”或“啤酒”的按钮,则相应的饮料就送出来。若投入1元钱的硬币,同样也是按“橙汁”或“啤酒”的按钮,则自动售货机在送出相应饮料的同时退回5角钱的硬币。

解决方法:

 

原因:  

·投入1元硬币; 

·投入5角硬币; 

·按下“橙汁”按钮; 

·按下“啤酒”按钮

 

结果 :

·退还5角钱; 

·送出“橙汁”饮料; 

·送出“啤酒”饮料

 

根据原因和结果,可以画出相对应的因果图:


 

根据图所示的因果图,可以画出如表所示的判定表:

从因果导出的判定表

 

1

2

3

4

5

6

7

8

输入

投入1元硬币

1

1

1

1

0

0

0

0

0

投入5角硬币

2

0

0

0

1

1

1

0

0

按下橙汁

3

1

0

0

1

0

0

1

0

按下啤酒

4

0

1

0

0

1

0

0

1

中间节点

已投币

11

1

1

1

1

1

1

0

0

已按钮

12

1

1

0

1

1

0

1

1

输出

退还5角硬币

21

1

1

0

0

0

0

0

0

送出橙汁饮料

22

1

0

0

1

0

0

0

0

送出啤酒饮料

23

0

1

0

0

1

0

0

0

从因果图中导出的判定表中的每一列设计一个测试用例。

可以体现的计算思维

因果图法是黑盒测试的一种方法,体现了计算思维中的仿真特点,通过功能测试涉及的所有条件的组合设计测试样例,对产品功能进行测试。