对于职业我们要有梦想,不抛弃不放弃。人生才会有乐趣。
测试方法简介--因果图法
上一篇 /
下一篇 2010-12-10 09:03:10
/ 个人分类:测试基础
等价类划分和边界值分析着重考虑了输入条件,但是他们都没有考虑输入条件的组合与联系。考虑输入条件之间的相互组合,可能会产生一些新的情况,这些新的情况我们也需要考虑。但是,要检查这些输入条件的组合不是一件容易的事情,即使把输入条件划分为等价类,他们之间的组合情况还是非常多的。采用因果图法能够帮助我们按照一定步骤,高效的在大量的组合情况下进行测试用例的选取,解决了在考虑组合时组合情况太多问题,在一定程度上促进了测试用例设计的全面性。
因果图方法最终生成的就是判定表,它适合于检查程序输入条件的各种组合情况。利用因果图生成测试用例的基本步骤如下:
(1)分析软件规格说明描述中,哪些是原因(即输入条件或输入条件的等价类),哪些是结果(即输出条件),并给每个原因和结果赋予一个标识符。
(2)分析软件规格说明描述中的语义,找出原因与结果之间,原因与原因之间的相互关系。根据这些关系,画出因果图。
(3)由于语法或环境限制,有些原因与原因之间,原因与结果之间的组合情况不不可能出现。为表明这些特殊情况,在因果图上用一些记号表明约束或限制条件。
(4)把因果图转换为判定表。
(5)把判定表的每一列拿出来作为依据,设计测试用例。
从因果图生成的测试用例局部,组合关系下的包括了所有输入数据的取TRUE与取FALSE的情况,构成的测试用例数目达到最少,且测试用例数目随输入数据数目的增加而线性地增加。
1. 基本符号
因果图中出现的4种基本符号分别表示出了规格说明中的4种因果关系,如下图:
图中,ci表示原因,通常置于图的左部,ei表示结果,通常在图的右部。ci和ei都可以取值0或者1,0表示某状态不出现,1表示某状态出现。4种符号含义分别是:
恒等:若c1是1则e1也是1;否则,E1为0;
非:若c1是1则e1是0;否则,e1为0;
或:若c1,c2,c3有一个是1则e1是1;否则,e1为0;
与:若c1,c2,c3都是1则e1是1;否则,e1为0;
1. 约束符号
因果图中使用简单的符号逻辑,以直线联结左右节点,左节点表示输入状态,右节点表示输出状态。在实际应用中,输入状态可能存在某些相互依赖关系,这种关系就构成了因果图中的约束。比如某些输入条件不可能同时出现。输出状态也可能存在约束关系。在因果图中也用特定的符号标明这些约束。
对于输入条件的约束有以下4类:
E约束(异):a和b至多有一个可能为1;
I约束(或):a和b至少有一个必须是1,即a、b、c不能同时为0;
O约束(唯一):a,b必须有一个且仅有一个为1;
R约束(要求):a是1,b必须是1;
输出条件的约束只有:
M约束(强制):如结果a是1,则结果b强制为0;
1. 问题
因果图设计测试用例的缺点,是输入条件与输出结果的因果关系,有时难以从软件需求规格说明书得到。而且即使得到了这些因果关系,也会因为因果关系复杂导致因果图非常庞大,测试用例数目极其庞大。值得庆幸的是,有一些商用的测试工具可以帮助我们自动化的构造测试用例。比如SoftTest,对于输入的因果图条件,可以自动构造覆盖率达到100%的测试用例。
有一个这样的例子:城市税征收计算
对于没有定居在此城市中的人城市税是每年总收入的1%;
对于定居在此城市中的人的城市税的征收划分为以下几个档次:
l 如果年总收入不超过30000美元,征收总收入的1%;
l 如果年收入在30000美元到50000美元之间,征收总收入的5%;
l 如果年收入超过50000美元,征收总收入的15%;
第一步:分析规格说明,找出哪些是原因,哪些是结果,对每一个原因与结果进行唯一的标识。
原因:
(1)非定居人口
(2)定居人口
(3)$0 <=总收入<= $30K
(4)$30K <总收入<= $50K
(5)总收入> $50K
结果:
(11)1%
(12)5%
(13)15%
第二步:分析原因、结果之间的关系与约束,画出因果图。将关系与约束用符号在图上表示出来:
第三步:将因果图转换为判定表:
收藏
举报
TAG: