首页 > 编程知识 正文

由因果图转换出来的什么是确定测试用例的基础,因果图法可以用来系统地设计测试用例

时间:2023-05-04 18:51:04 阅读:178830 作者:2524

因果图法

1 .引言

等价类的划分方法和边界值的分析方法都侧重于输入条件,但没有考虑输入条件之间的联系、相互的组合等。 如果考虑输入条件之间的组合,可能会出现一些新的情况。 但是,检查输入条件的组合并不是一件容易的事情,即使将所有的输入条件归类为等价类,他们之间的组合也很多。 因此,对于多个条件组合,需要以适合于相应地产生多个动作的方式进行描述的形式,考虑设计测试用例。 这需要利用因果关系图(逻辑模型)。

因果图提供一种将规格转换成判定表的系统化方法,并且可从该图产生测试数据。 其原因表示输入条件,结果是对输入进行一系列计算后得到的输出。

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

2 .因果图简介

2.1图例说明

1、4种符号分别表示规格说明中的4种因果关系。 如图2-1所示。

图2-1因果关系

2、因果图使用单纯的逻辑符号,用直线连接左右节点。 左节点表示输入状态(或原因),右节点表示输出状态(或结果)。

3、ci表示原因,通常置于图的左部; ei显示结果,通常位于图的右部。 ci和ei都可以取值0或1,0指示不出现某些状态,1指示出现某些状态。

2.2因果图概念

1、关系(图2-1因果关系) )。

如果(恒等) ci是1,则ei也是1; 否则ei为0。

)当ci为1时,ei为0; 否则ei为1。

)或)当c1或c2或c3为1时,ei为1; 否则ei为0。 “或”可以是任意输入。

) and )如果c1和c2都是1,则ei为1; 否则ei为0。 “与”可以是任意的输入。

2、约束

输入状态之间还可能存在称为约束的依赖关系。 例如,几个输入条件本身不会同时显示。 输出状态之间也经常有制约。 因果图用特定的符号表示这些约束。 如图2-2所示。

图2-2因果图约束

a .输入条件的限制有以下4种。

E约束(异) a和b中至多有一个可能为1,即a和b不能同时为1。

(I约束)或) ),a、b和c中的至少一个必须为1。 也就是说,a、b和c不能同时为0。

约束(唯一); a和b必须是一个,只有一个是1。

如果r约束(要求) a为1,则b必须为1。 也就是说,在a是1的情况下,b不是0。

b .输出条件约束类型

输出条件的限制只有m限制(强制)如果结果a为1,则结果b强制为0。

2.3因果图法设计测试用例步骤

1、分析待测系统规格,找出原因和结果

分析软件规格记述,它们是原因=输入条件或者输入条件的等价类,它们是结果=输出条件,对各自的原因和结果赋予标识符。

2、绘制因果关系

分析软件规格说明中的含义。 找出原因与结果之间、原因与原因之间的对应关系。 根据这些关系,画因果关系图。

3、标记约束或约束

由于语法和环境的限制,它不能出现在一些原因和原因之间,原因和结果之间的组合中。 为了说明这些特殊情况,在因果图上用一些符号表示约束或限制。

4、将因果图转换为判定表。

5、通过判定表各项生成测试用例。

3.因果图实例

3.1实例1

在某个软件规格书中,包含第1列的字符必须是a或b、第2列的字符必须是数字的要求,在该情况下进行文件的修正,但如果第1列的字符不正确则提供信息l; 在第2列的文字不是数字的情况下,给出信息m。

1、分析说明,得出原因和结果:

理由:

1 )第一列字符为a;

2 )第一列文字为b;

3 )第二列文字是数字。

结果:

21 )修改文件

2 )给予信息的l;

23 )提供信息的m。

2、其对应因果图如下: 11是中间节点; 认为原因1和原因2不会同时成为1,如图3-1所示对因果关系图施加e制约。

图3-1实施例1因果关系图

3、根据因果图编制判定表。

表中8种情况中,左2列情况下原因和原因同时为1,这是不可能发生的,应该排除这2种情况。

4、以判定表各列为依据,设计测试用例

表的底部一栏给出了六种情况的测试用例。 这是我们需要的数据。

3.2实例二



有一个处理单价为5角钱的饮料的自动售货机 软件测试用例的设计。
其规格说明如下:
若投入5角钱或1元钱的硬币,押下〖橙汁〗或〖啤酒〗的按钮,则相应的饮料就送出来。
若售货机没有零钱找,则一个显示〖零钱找完〗的红灯亮,这时在投入1元硬币并押下按钮后,饮料不送出来而且1元硬币也退出来;
若有零钱找,则显示〖零钱找完〗的红灯灭,在送出饮料的同时退还5角硬币。

1、分析这一段说明,列出原因和结果:
这本身只是一个实例,只是用来 学习,其实其设计说明还是存在好多漏洞的,例如:如果售货机里没有饮料了怎么办?

原因:
1、售货机有零钱找
2、投入1元硬币
3、投入5角硬币
4、押下橙汁按钮
5、押下啤酒按钮

结果:
21、售货机〖零钱找完〗灯亮
22、退还1元硬币
23、退还5角硬币
24、送出橙汁饮料
25、送出啤酒饮料

2、画出因果图,如图3-2所示。
所有原因结点列在左边,所有结果结点列在右边。建立中间结点,表示处理的中间状态。中间结点:
11、投入1元硬币且押下饮料按钮
12、押下〖橙汁〗或〖啤酒〗的按钮
13、应当找5角零钱并且售货机有零钱找
14、钱已付清



图3-2 售货机因果图

3、转换成判定表:


4、在判定表中,阴影部分表示因违反约束条件的不可能出现的情况,删去。第16列与第32列因什么动作也没做,也删去。最后可根据剩下的16列作为确定测试用例的依据。

3.3实例三

NextData函数的精简决策表
M1={月份: 每月有30天}
M2={月份: 每月有31天, 12月除外}
M3={月份: 2月}
M4={月份:12月}
D1={日期:1<=日期<=27}
D2={日期:28}
D3={日期:29}
D4={日期:30}
D5={日期:31}
Y1 ={年:年是闰年}
Y2 ={年:年不是闰年}
输入变量间存在大量逻辑关系的NextData决策表。

分析这一段说明,列出原因(条件)和结果:

原因(条件):
M1={月份: 每月有30天}
M2={月份: 每月有31天, 12月除外}
M3={月份: 2月}
M4={月份:12月}
D1={日期:1<=日期<=27}
D2={日期:28}
D3={日期:29}
D4={日期:30}
D5={日期:31}
Y1 ={年:年是闰年}
Y2 ={年:年不是闰年}

结果:
输入的日期无效,例如:2008-4-30;2007-2-29;2008-2-30;2008-2-31;
日前为1;
月份为1;
日期+1;
月份+1;
年份+1;



该图没有考虑无效日期的情况。

输入条件过于庞大,个人觉得将其分成4部分利于编写判定表,每个Mi对应一张表。这里就不过多描述了。
这里大家可以尝试用正交试验法解决。

3.4实例四


以中国象棋中马的走法为例子,具体说明:
1、如果落点在棋盘外,则不移动棋子;
2、如果落点与起点不构成日字型,则不移动棋子;
3、如果落点处有自己单纯的鸡翅,则不移动棋子;
4、如果在落点方向的邻近交叉点有棋子(绊马腿),则不移动棋子;
5、如果不属于1-4条,且落点处无棋子,则移动棋子;
6、如果不属于1-4条,且落点处为对单纯的鸡翅 (非老将) ,则移动棋子并除去对单纯的鸡翅;
7、如果不属于1-4条,且落点处为对方老将,则移动棋子,并提示战胜对方,游戏结束。

1、对说明进行分析,得到原因和结果:

原因:
1、落点在棋盘外;
2、不构成日字;
3、落点有自单纯的鸡翅;
4、绊马腿;
5、落点无棋子;
6、落点为对单纯的鸡翅;
7、落点为对方老将。

结果:
21、不移动;
22、移动;
23、移动己单纯的鸡翅消除对单纯的鸡翅;
24、移动并战胜对方。

2、根据分析出来的原因和结果,我们可以画出因果图,如下:



11这个结点称做中间结点,是为了让因果图的结构更加明了,简化因果图导出的判定表。
组合过于庞大(2的7次方)通过中间结点11,将判定表分成两部分,简化判定表如下:


将无用的组合去掉。

将上面两张表根据潜在的约束条件,再次修整,得到如下图:

4.因果图法优缺点

4.1优点
1、因果图法能够帮助我们按照一定步骤,高效的选择测试用例,设计多个输入条件组合用例
2、因果图分析还能为我们指出,软件规格说明描述中存在的问题

4.2缺点

1、输入条件与输出结果的因果关系,有时难以从软件需求规格说明书得到。
2、即时得到了这些因果关系,也会因为因果关系复杂导致因果图非常庞大,测试用例数目及其庞大。


版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。