【无标题】

因果图法

举例来说:

地铁自动充值机充值
​假设自动充值机每次只能投入面值50或者面值100的人民币,投入钱后会有充值50和充值100两个选项

等价类划分法和边界值分析法可能不会测试到投入面值50的人民币,然后点击充值100这种异常情况;因此,当程序的输入条件有多个的话,就需要用到因果图法来设计测试用例了。

因果图法就是一种利用图解法分析输入的各种组合情况,从而设计测试用例的方法,它适用于程序有多个输入条件的情况。因果图法最终生成的是判定表。

生成测试用例的过程

那因果图法怎样生成测试用例的呢?我们直接拿《软件测试方法和技术》一书中的图来说明:

在这里插入图片描述

如图所示,我们总共需要4步:

1.分析软件规格说明书中的因和果以及因果关系。

“因”是指一个明确的输入条件或者输入条件的等价类;“果”是指一个输出条件或者结果(输入对程序或者系统状态产生的结果),比如:我们编辑文档时同时按键ctrl+s对文档进行保存,那么保存成功或者失败就是产生的结果,保存结果就是一个输出条件。

  a.逐字逐句的阅读软件规格说明书,同时提取出“因”和“果”,且每个“因”和“果”都赋予一个唯一的编号。

  b.分析软件规格说明书的语义内容,找出因果的关系(“因”与“因”、“因”与“果”)。
2.行成因果图。

将对应的因果关系关联起来,并将其中不可能的组合情况标注成约束或者限制条件,从而形成因果图。

3.将因果图转化成判定表。
4.将判定表转化成测试用例:判定表的每一列就是一个测试用例。

因果图中的基本符号(4种关系)
在这里插入图片描述

通常,我们用Ci(即C1、C2、C3、Cx)表示因,用Ei(即E1)表示果;Ci与Ei统称为节点,节点表示状态,可取值为0或者1,0代表否(状态不存在),1代表是(状态存在);因果图中有4种因果关系图(如上图),分别为:

**identity**:恒等关系;如果C1是1,那么E1也是1,否则E1为0;

**NOT(~)**:非的关系;如果C1是1,那么E1为0,否则E1为1;

**OR(∨):**或的关系;如果C1或C2或C3是1,那么E1是1,否则E1是0;

**AND(∧):**与的关系;如果C1和C2是1,那么E1也是1,否则E1是0;

因果图中的约束符号(5种约束)
在实际工作中,因与因(输入状态)相互之间、果与果(输出状态)相互之间存在某些关系,我们将这些关系称之为“约束”。对于因与因(输入条件)之间的约束有E、I、O、R四种,而果与果(输出条件)之间的约束只有M一种,具体约束见下图:

在这里插入图片描述

输入条件的约束
**E约束(互斥关系,E-exclude):**a和b中最多有一个可能为1,即a和b不能同时为1。说明:如果选只能选其中一个,但是可以俩都不选;

**I约束(包含,I-include):**a、b、c中至少有一个是1,即a、b、c不能同时为0;说明:至少有一个是被选中,支持多选;

**O约束(唯一:O-only):**a和b有且仅有一个是1;说明:必须要选则,且只能选一个

**R约束(要求:R-required):**a是1,那么b必须是1;反之,如果a是0,那么b无所谓;说明:结合QQ自动登录的例子来,a是自动登录选项,b是记住密码选项;那么如果a选中(即自动登录选中),那么b(记住密码)必须选中,见图1;如果a不选中,b无所谓(选中不选中都无所谓),见图2和图3;PS:大家可以自己动手试试哦,动动手才记得住!

图1在这里插入图片描述

图2
在这里插入图片描述

图3
在这里插入图片描述

输出条件的约束
**M约束(屏蔽:M-masked)**:a为1,则b强制为0;反之,如果a为0,则b无所谓

因果图法/判定表法实例讲解

我们用一个例子来演示因果图法的运用。

某软件规格说明书包含这样的要求:

第一列字符必须是A或B,第二列字符必须是数字,这种情况下进行文件的修改;如果第一列字符不正确,则给出信息E;如果第二列字符不是数字,则给出信息M。

我们根据开篇所讲的因果图法的4步骤来把上面的说明转换成测试用例:

1.分析软件规格说明书中的因和果以及因果关系

在这里插入图片描述

注意:图表中的输入(因)和输出(果)不存在对应关系。

根据上图可以看出输入条件有3个,分别是C1、C2、C3;输出条件有3个,分别是E1、E2、E3;我们再来分析下上述因果之间的关系和约束。

因果关系是:

C1+C3=E1

C2+C3=E1

C1和C2都不为真时,得到输出结果E2

C3不为真时,得到输出结果E3

约束是:

C1和C2不可能同时存在,只可能出现一种
2.行成因果图

根据1中的分析,我们画出因果图如下(编号为11的节点,是导出结果的进一步原因,是一个中间状态。比如下图表示:C1或者C2有一个是真,那么第一列输入为真,即11节点状态为真,也就是1;反之,C1和C2都不为真,那么第一列输入为否,也就是0):

在这里插入图片描述

3.将因果图转化成判定表

在这里插入图片描述
灰色区域表示不可能

4.将判定表转化成测试用例

根据3中的图得到测试用例,每一列(除了灰色区域)就是一条测试用例,据上图可以看出总共时6条,具体如下:
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值