因果图设计测试用例的步骤

上一篇文章(http://www.bcbxhome.com/bcbx/forum.php?mod=viewthread&tid=26#lastpost)我们解决了“What is it”的问题,下面让我们来讨论“How to do”的问题。使用因果图设计测试用例一般包括下面几个步骤:

1.1.1.     分析需求

阅读需求文档,如果User Case很复杂,尽量将它分解成若干个简单的部分。这样做的好处是,不必在一次处理过程中考虑所有的原因。没有固定的流程说明究竟分解到何种程度才算简单,需要测试人员根据自己的经验和业务复杂度具体分析。

1.1.2.    确定原因和结果

在每个已经分解好的块中,找出哪些是原因,哪些是结果。并且把原因和结果分别画出来。原因放在一列,结果放在一列 。如下图所示。

<ignore_js_op>

1.1.3.     确定逻辑关系

继续分析需求文档,找出原因和结果之间的关系,用逻辑运算符标出。

1.1.4.     确定约束关系

继续分析需求,找出原因和原因、结果与结果之间的约束限制,用上面说的约束关系标出。

1.1.5.     把因果图转换为决策表

给每个原因分别取真和假二种状态,用0和1表示。画一个有限项决策表,列出所有状态的状态组合。包含3个原因、2个结果的有限项决策表如下。

1

2

3

4

5

6

7

8

原因

1

0

0

0

0

1

1

1

1

2

0

0

1

1

0

0

1

1

3

0

1

0

1

0

1

0

1

结果

1

               

2

               

图中淡黄色区域表示各种原因状态组合的个数,淡蓝色区域表示原因之间的状态组合。嫩绿色区域则表示不同原因组合所对应的结果。

1.1.1.     根据原因给出结果

上面的决策表中,不一定每个原因的状态组合都是有效的。要根据因果图中的约束条件,去掉不可能出现的组合,从决策表中标记出来。并给出每个可能的原因组合对应的结果。

1.1.2.     设计测试用例

上一步完成之后,决策表的每一个有效列都对应一个测试用例。

1.2.   举例说明

下面用几个例子来说明因果图的用法。

1.2.1.     例子1

某软件需求说明书:

某段文本中,第一列字符必须是A或B,第二列字符必须是一个数字,在此情况下进行文件的修改。但如果第一列字符不正确,则给出信息L;如果第二列字符不是数字,则给出信息M。

由于此需求已经非常清晰,所以标准步骤中的第一步省略,从第二步开始分析。

n  确定原因和结果:从大的方面看,第一列和第二列不同的字符会引起不同的结果,所以初步分析原因结果图如下


原因
c1 第一列字符正确
c2 第二列字符是数字

结果
e1 修改文件
e2 给出信息L
e3 给出信息M

n  确定因果逻辑关系:如果第一列和第二列都正确,则修改文件;如果第一列不正确,给出信息L;如果第二列不正确,给出M。可以得出下面的因果图。

<ignore_js_op>

而根据需求描述,原因c1还可以细分为2个原因:第一列字符是A(c11),第一列字符是B(c12)。因此原因c1其实也可以看作成结果。把它用因果图表示出来如下:

<ignore_js_op>

根据上面的分析,其实总共有3个原因,3个结果。

n  确定约束关系:从需求描述中可知,原因c11和c12不可能同时为真,但可以同时为假,因此满足排他性约束。这三个结果之间没有掩码标记的约束。完整的因果图如下:

<ignore_js_op>

n  根据因果图画决策表:

列出3个原因所有的状态组合。

1

2

3

4

5

6

7

8

原因

c11

0

0

0

0

1

1

1

1

c12

0

0

1

1

0

0

1

1

c2

0

1

0

1

0

1

0

1

结果

e1

               

e2

               

e3

               

n  根据原因分析结果:分析每一种状态对应的结果,并根据约束关系,去掉不可能出现的状态。本例的c11和c12满足排他性约束,所以同时都为1的状态不会出现。

1

2

3

4

5

6

7

8

原因

c11

0

0

0

0

1

1

1

1

c12

0

0

1

1

0

0

1

1

c2

0

1

0

1

0

1

0

1

结果

e1

0

0

0

1

0

1

无此可能

无此可能

e2

1

1

0

0

0

0

e3

0

0

1

0

1

0

n  设计测试用例:根据决策表,列出有效的状态组合和结果,给出对应的测试用例,可以单独画一个表,也可以直接加到决策表中。如下图:

1

2

3

4

5

6

7

8

原因

c11

0

0

0

0

1

1

1

1

c12

0

0

1

1

0

0

1

1

c2

0

1

0

1

0

1

0

1

结果

e1

0

0

0

1

0

1

无此可能

无此可能

e2

1

1

0

0

0

0

e3

0

0

1

0

1

0

测试用例(字符串)

aa

cc

a3

c3

Be

B3

Aq

A4

   

到现在为止,使用因果图设计测试用例的一个简单的例子就完成了。

1.2.2.    例子2

再以支付宝认证总流程为例,说明因果图的实际应用。

支付宝个人认证中,分为两部分:个人身份认证和银行卡认证。这两者都通过后,认为个人认证成功。

个人身份认证需要提交个人基本信息及身份证复印件。

银行卡认证分为两种:提现认证和充值认证。

提现认证的流程是:用户提交正确的银行帐号——>支付宝给用户的银行卡中随机打款——>用户确认金额,认证成功。

充值认证的流程是:用户提交正确的银行帐号——>充值——>充值完成——>网银反馈,认证成功。

n  从上面的描述中,我们可以总结出2大原因和一个结果。

原因一:身份认证成功

身份认证成功也是一个中间结果,它也有2个原因,提交基本信息成功和提交身份证成功。

原因二:银行卡认证成功,包含2个原因:充值认证成功和提现认证成功。这2种原因也可以看做是中间结果,产生结果的原因在需求中可以也能明显看出来,不再赘述。

一个结果:个人认证成功。

注意:为了简便起见,我们假设个人信息提交和身份证件提交成功后,身份认证则成功,忽略人工审核过程。

原因和结果表如下:

原因 c11 个人基本信息提交成功
c12 个人身份证件提交成功
原因 c221 充值认证的银行帐号提交成功
c222 充值成功
c223 网银反馈成功
原因 c211 提现认证的银行帐号提交成功
c212 支付宝打款成功
c213 用户确认成功
中间结果 c21 银行卡提现认证成功
c22 银行卡充值认证成功
中间结果 c1 身份认证成功
c2 银行卡认证成功

结果
e1 个人认证成功

n  确定因果逻辑关系

对于因果关系较为的复杂的逻辑,通过结果向前推原因是一个不错的方法。

认证成功:身份认证成功和银行卡认证同时为真,认证成功才为真。

身份认证成功:基本信息和身份证件同时为真,身份认证成功才为真。

银行卡认证:提现认证和充值认证有一个成功,银行卡认证则成功。

提现认证、充值认证都是所有的原因都为真时,自己才为真。

n  确定约束关系

从业务流程可知:提现认证和充值认证是二择一的,满足唯一性约束条件。而充值认证的三个原因,有流程上的先后顺序,满足必要性约束条件。同样,提现认证的三个原因也满足必要性约束条件。

根据约束关系,我们画出因果图如下:

<ignore_js_op>

n  画决策表及设计测试用例的过程略。

使用因果图的好处

总上所述,我认为因果图最大的好处有2点:

n  考虑了多个输入之间的相互组合、相互制约关系。

n  帮助我们按一定步骤,高效率地选择测试用例。

http://www.bcbxhome.com/bcbx/forum.php?mod=viewthread&tid=27&fromuid=27
(出处: 编测编学软件测试)

原文地址:https://www.cnblogs.com/zihkj/p/12432049.html

时间: 2024-10-09 20:53:31

因果图设计测试用例的步骤的相关文章

设计测试用例的步骤

一.因果图法设计测试用例的步骤:1.分析软件规格说明描述中哪些是原因(即输入条件或输入条件的等价类),哪些是结果(即输出条件), 并给每个原因和结果赋予一个标识符.2.分析软件规格说明描述中的语义,找出原因与结果之间, 原因与原因之间对应的关系,根据这些关系画出因果图.3.标明约束条件:由于语法或环境限制, 有些原因与原因之间,原因与结果之间的组合情况不可能出现,为表明这些特殊情况, 在因果图上用一些记号表明约束或限制条件.4.把因果图转换为判定表.5.把判定表的每一列拿出来作为依据设计测试用例

【转】黑盒设计测试用例方法

1. 等价类法 定义: 是把所有可能的输入数据,即程序的输入域划分成若干部分(子集),然后从每一个子集中选取少数具有代表性的数据作为测试用例.该方法是一种重要的,常用的黑盒测试用例设计方法. 划分等价类:  等价类是指某个输入域的子集合.在该子集合中,各个输入数据对于揭露程序中的错误都是等效的,并合理地假定:测试某等价类的代表值就等于对这一类其它值的测试,因此,可以把全部输入数据合理划分为若干等价类,在每一个等价类中取一个数据作为测试的输入条件就可以用少量代表性的测试数据取得较好的测试结果.等价

使用正交表法设计测试用例

1.案例:字符属性设置程序需求:窗体中有多个控件(字体.字符样式.颜色.字号),每个控件有多个取值 字体:仿宋.楷体.华文彩云字符样式:粗体.斜体.下划线颜色:红色.绿色.蓝色字号:20号.30号.40号 使用步骤:1.根据需求形成因子状态表----->因子:控件名称 状态:每个控件对应的取值2.确定所采用的正交表3.将正交表中的字母用文字代替4.一行就是一条测试用例 2.案例:对某人进行查询假设查询某个人时有三个查询条件(查询条件仅考虑填写和不填写两种情况): 根据" 姓名"

基本路径法设计测试用例

基本路径法是白盒测试中使用最为广泛的方法.以下将介绍一下基本路径法如何使用. 基本路径法设计测试用例的步骤基本如下 1.由程序的源代码作为基础导出控制流图 2.计算控制流图的环路复杂度 3.确定基本路径 4.根据基本路径设计测试用例 接下来我举个例子 1 Int IsLeap(int year) 2 { 3 if (year % 4 == 0) 4 { 5 if (year % 100 == 0) 6 { 7 if ( year % 400 == 0) 8 leap = 1; 9 else 10

因果图法设计测试用例

一.使用因果图的好处 1 考虑了多个输入之间的相互组合.相互制约关系 2 能够帮助我们按一定步骤,高效率地选择测试用例,同时还能为我们指出,程序规格说明描述中存在着什么问题 二.利用因果图导出测试用例需要经过的一般步骤 1.分析程序规格说明的描述中,哪些是原因,哪些是结果. 2.分析程序规格说明的描述中语义的内容,并将其表示成连接各个原因与各个结果的因果图 3.在因果图上使用若干个特殊的符号标明特定的约束条件 4.把因果图转换成判定表 5.把判定表中每一列表示的情况写成测试用例三.因果图基本符号

测试设计学习-关于使用PICT设计测试用例步骤说明

PICT介绍: PICT全称Pairwise Independent Combinatorial Testing(成对独立组合测试) PICT产生测试用例和测试配置.你可以通过使用PICT产生的测试,比手工设计的测试更加有效,并且只需要手工设计测试用例的一小部分时间. PICT可以有效地按照两两测试的原理,进行测试用例设计.在使用PICT时,需要输入与测试用例相关的所有参数,以达到全面覆盖的效果 Eg: Type: Single, Span, Stripe, Mirror, RAID-5 Siz

分层设计测试用例

设计好测试用例对测试执行和测试管理都大有裨益.对测试执行的好处不言而喻,拿着一个好的测试用例,即便是一个测试菜鸟做测试执行也能保证用例对应功能得到覆盖.对测试管理而言,也非常有帮助,测试用例设计架构清晰,就能保证测试计划制定.测试任务分配能够更加准确.对自动化测试实施更加有好处.如果测试用例设计不清晰,不同的人按照同样的用例设计出的自动化测试脚本差异就会比较大. 有些项目的测试用例,会随着软件版本的不断变更规模不断增大.在设计测试用例之初就依据某个标准把测试用例划分成不同的模块,这样之后测试用例

设计测试用例的四条原则

今天是2011年的第一天,2010年就这样匆匆忙忙,紧紧张张地过去了.这一年里来来去去,变化最大的就是很多一起工作了多年的同事离开了,很多都去了"更给力”的地方,呵呵!公司里来来往往是很正常的,想想我最近一次换到“更给力”的地方,那都是5年前了.总之,现在的地方还是挺给力的,好好工作,争取2011年有更大的进步,呱唧呱唧! 测试用例设计的最基本要求:覆盖住所要测试的功能.这是再基本不过的要求了,但别看只是简单的一句话,要能够达到切实覆盖全面,需要对被测试产品功能的全面了解.明确测试范围(特别是要

【tool】正交法设计测试用例

用正交实验法设计测试用例    软件测试 正交实验法的由来 一.正交表的由来 拉丁方名称的由来 古希腊是一个多民族的国家,国王在检阅臣民时要求每个方队中每行有一个民族代表,每列也要有一个民族的代表. 数学家在设计方阵时,以每一个拉丁字母表示一个民族,所以设计的方阵称为拉丁方. 什么是n阶拉丁方? 用n个不同的拉丁字母排成一个n阶方阵(n<26 ),如果每行的n个字母均不相同,每列的n个字母均不相同,则称这种方阵为n*n拉丁方或n阶拉丁方.每个字母在任一行.任一列中只出现一次. 什么是正交拉丁方?