微信号:TesterTalk

介绍:专注软件测试技术分享,包括不限于Web 测试,Mobile测试,API测试,自动化测试,性能测试知识/方法, 以及软件测试职位推荐.

因果图法

2016-06-03 18:03 摘自网络


点击标题下「蓝色微信名」可快速关注
点击标题下「蓝色微信名」可快速关
简介

简介

从用自然语言书写的程序规格说明的描述中找出因(输入条件)和果(输出或程序状态的改变),可以通过因果图转换为判定表。

因果图法即因果分析图,又叫特性要因图、石川图或鱼翅图,它是由日本东京大学教授石川馨提出的一种通过带箭头的线,将质量问题与原因之间的关系表示出来,是分析影响产品质量的诸因素之间关系的一种工具。


作用

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

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


基本步骤

利用因果图导出测试用例一般要经过以下几个步骤:

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

2)因果图上用一些记号表明约束条件或限制条件。

3)对需求加以分析并把它们表示为因果图之间的关系图。

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

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


首先我们来了解一下因果图的基本符号:

应用的范围

更复杂的条件组合,2^n,n比较多的时候

3. 步骤

1)         根据程序规格说明书描述的语义内容,分析并确定“因”和“果”;

2)         将“因”和“果”表示成 “因果图”;

3)         在因果图上使用若干个约束符号来标明约束条件;

4)         将得到的因果图转换成判定表;

5)         为判定表中每一列所表示的情况设计一个测试用例。

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)    将“因”和“果”表示成 “因果图”,并标明约束条件;

 

3)       将得到的因果图转换成判定表;

11这个结点称做中间结点,是为了让因果图的结构更加明了,简化因果图导出的判定表。分析得出以下两个结论:

只有1、2、3、4都不成立时,产生11,跟5、6、7结合分别得出22、23、24三个结果;

不管5、6、7哪个成立,只要1、2、3、4有一个成立,就产生结果21;再加上落点有自方棋子的状况。

可以得到判定表如下:

  进一步分析,将各种不可能产生的组合情况,取消掉,图中用灰色表示。这些都是之前没有写的一些约束条件导致的。比如落点在棋盘外,那么落点就不可能在对方棋子上了。

4)  为判定表中每一列所表示的情况设计一个测试用例。

5. 总结

  因果图常和判定表结合起来使用,先用因果图后用判定表.


关于iTesting

欢迎关注 iTesting. 
iTesting致力于软件测试技术分享,包括不限于Web测试, Mobile测试, API测试, 性能测试以及测试职位推荐.


长按下图二维码,在弹出菜单中选择“识别图中二维码”关注本公众号.

更多内容,敬请期待



 
iTesting 更多文章 测试的原则 等价类划分 边界值分析 iOS app兼容ipv6,测试需要做的事情 接口测试自动化框架实践指南(一)
猜您喜欢 在Java中如何避免“!=null”式的判空语句? Android中如何修改编译的资源ID值(默认值是0x7F...可以随意改成0x02~0x7E) 面对习大大演讲前 马云的手稿修改了26处 浅谈算法和数据结构(12):无向图相关算法基础 CSS黑科技补充篇