测试用例设计方法篇-因果图法

大家好,我是十一。

前情回顾

上面一篇我们讲了边界值分析法,我们先来回顾下:

边界值分析法

边界值分析法是对输入的边界值进行测试。等价类划分法的补充。通常选取正好等于、刚刚大于或刚刚小于边界的值作为测试数据。

今天,我们讲因果图法

因果图法

前面我们介绍的等价类划分法和边界值分析法都没有考虑到输入情况的组合。这样虽然各种输入条件可能出错的情况已经看到了,但是多个输入情况组合起来可能出错的情况却被忽视了。举例来说:

地铁自动充值机充值

​假设自动充值机每次只能投入面值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条,具体如下:

好了今天内容有点多,大家好好消化消化,如有任何问题留言及时与我沟通,我会尽快回复大家!谢谢大家~我们下次再见!

让我们共同相伴,开启软件知识之旅。

你可能感兴趣的:(测试用例设计方法篇-因果图法)