对于职业我们要有梦想,不抛弃不放弃。人生才会有乐趣。

测试方法简介--因果图法

上一篇 / 下一篇  2010-12-10 09:03:10 / 个人分类:测试基础

1.1.1    概述

等价类划分和边界值分析着重考虑了输入条件,但是他们都没有考虑输入条件的组合与联系。考虑输入条件之间的相互组合,可能会产生一些新的情况,这些新的情况我们也需要考虑。但是,要检查这些输入条件的组合不是一件容易的事情,即使把输入条件划分为等价类,他们之间的组合情况还是非常多的。采用因果图法能够帮助我们按照一定步骤,高效的在大量的组合情况下进行测试用例的选取,解决了在考虑组合时组合情况太多问题,在一定程度上促进了测试用例设计的全面性。

1.1.2    因果图方法应用介绍

因果图方法最终生成的就是判定表,它适合于检查程序输入条件的各种组合情况。利用因果图生成测试用例的基本步骤如下:

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

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

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

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

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

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

 

1.1.1    因果图分析符号逻辑说明

1.  基本符号

因果图中出现的4种基本符号分别表示出了规格说明中的4种因果关系,如下图:

 

图中,ci表示原因,通常置于图的左部,ei表示结果,通常在图的右部。ciei都可以取值0或者10表示某状态不出现,1表示某状态出现。4种符号含义分别是:

恒等:若c11e1也是1否则,E10

非:若c11e10;否则,e10

或:若c1c2c3有一个是1e11;否则,e10

与:若c1c2c3都是1e11;否则,e10

1.  约束符号

因果图中使用简单的符号逻辑,以直线联结左右节点,左节点表示输入状态,右节点表示输出状态。在实际应用中,输入状态可能存在某些相互依赖关系,这种关系就构成了因果图中的约束。比如某些输入条件不可能同时出现。输出状态也可能存在约束关系。在因果图中也用特定的符号标明这些约束。

对于输入条件的约束有以下4类:

E约束(异):ab至多有一个可能为1

I约束(或):ab至少有一个必须是1,即abc不能同时为0

O约束(唯一):ab必须有一个且仅有一个为1

R约束(要求):a1b必须是1

输出条件的约束只有:

M约束(强制):如结果a1,则结果b强制为0

 

1.  问题

因果图设计测试用例的缺点,是输入条件与输出结果的因果关系,有时难以从软件需求规格说明书得到。而且即使得到了这些因果关系,也会因为因果关系复杂导致因果图非常庞大,测试用例数目极其庞大。值得庆幸的是,有一些商用的测试工具可以帮助我们自动化的构造测试用例。比如SoftTest,对于输入的因果图条件,可以自动构造覆盖率达到100的测试用例。

1.1.2    应用实例

有一个这样的例子:城市税征收计算

对于没有定居在此城市中的人城市税是每年总收入的1%;

对于定居在此城市中的人的城市税的征收划分为以下几个档次:

l 如果年总收入不超过30000美元,征收总收入的1%;

l 如果年收入在30000美元到50000美元之间,征收总收入的5%;

l 如果年收入超过50000美元,征收总收入的15%;

第一步:分析规格说明,找出哪些是原因,哪些是结果,对每一个原因与结果进行唯一的标识。

原因:

1)非定居人口

2)定居人口

3$0 <=总收入<= $30K

4$30K <总收入<= $50K

5)总收入> $50K

结果:

111

125

1315

第二步:分析原因、结果之间的关系与约束,画出因果图。将关系与约束用符号在图上表示出来:

第三步:将因果图转换为判定表:


TAG:

引用 删除 张珑曦   /   2012-07-24 15:22:40
IT职业经理人 引用 删除 qiuteng258   /   2010-12-10 09:13:30
补充
第四步:将判定表的每一列拿出来就可作为一个测试用例。
总结:
因果图法的优点是综合考虑了输入、输出条件的组合,使测试设计更加全面,但是这种方法的缺点也是显而易见的,即方法过程比较复杂,方法本身比较难以掌握;输入与输出之间的因果关系比较难以从规格描述中得到,需要一个分析过程;如果被测对象本身比较复杂,那么分析过程以及最后得到的因果图可能会非常复杂,得到的测试用例数量很庞大,需要耗费比较多的工作量。基于以上原因,这种方法实际得到的应用并不多。
 

评分:0

我来说两句

Open Toolbar