测试用例设计方法-因果图测试用例设计因果图理论因果图设计过程举典型例子。 通过将棋走马则因果图的优缺点因果图发现的错误个人心得
因果图测试用例设计因果图理论
因果图用于描述系统的输入、输出以及输入和输出之间的因果关系、输入和输入之间的约束关系。 因果图的绘制过程是对被测系统的外部特征进行建模的过程。 在实际测试中,因果图和判定表两种方法往往同时使用,从系统输入输出之间的因果图中得到判定表,根据判定表生成设计测试用例。
表示输入和输出的因果关系有以下4种。
()恒等关系)输入项发生时,产生对应的输出; 如果不发生输入项目,则不发生对应的输出。
(2)非关系)与恒等关系相反。
(3)或者关系)只要发生多个输入条件中的一个,就发生对应的输出。
(4)关系)只有在多个输入条件中的所有输入项目发生时,才会发生对应的输出。
与4个因果关系对应的因果图的显示方法如下。
表示输入和输入之间的约束关系也有四种。
(1)异)在所有输入中,最多产生一个输入条件
(2)或)产生所有输入中的至少一个输入条件
(3)唯一)所有输入中,仅发生一个输入条件
(4)要求)所有输入中,只要有一个输入条件发生,其他输入也会发生
与这4个约束关系对应的因果关系图的表示方法如下图所示。
因果图设计过程中因果图的设计用例步骤如下:
(1)将大系统规格分解为可测试的规格片段
)2)分析分解后测量的系统规格,找出哪个是原因,哪个是结果
)3)绘制因果关系
)4)将因果图转换为判定表
)5)判定表的简化
(6)在判定表的各个项目中生成测试用例
举一个典型例子,象棋走马规则步骤1 :分析象棋走马规则如下。
(1)如果着陆地点在盘外,则不动棋子
)落点和起点不呈“日”字型,棋子就不动
)3)坠落地点有己方棋子时,不动棋子
)如果掉落地点方向的相邻十字路口有棋子(绊倒),则不移动棋子
)5)不属于1-4条,且落点无棋子,则移动棋子
)6)不属于第1-4条,且落点有对方棋子(非老将)时,移动棋子去除对方棋子
)7)不属于1-4条,如果落点是对方老将,移动棋子去除老将,提示对方胜利结束游戏。
第二步:分析以上原因,得出原因和结果:
(1)原因:
1 .坠落地点方向相邻路口无棋子
2 .着陆点和起点构成“日”字
3 .着陆地点有自己的棋子
4 .着陆地点在盘外
5 .着陆地点没有棋子
6 .着陆地点是对方的非老将驹
7 .着陆地点是对方的老手
)2)中间节点:
8 .允许移动
(3)结果:
9 .不动棋子
10 .只动棋子
11 .移动棋子去除对方的棋子
12 .移动棋子提示对手获胜,游戏结束
步骤3 )根据原因和结果绘制因果关系,结果如下:
下一步是将因果图转换为判定表,然后根据判定表转换测试用例。 这里我不多说,因果图设计测试用例的重点是创建因果图
使用因果图的优缺点因果图设计测试用例具有以下优点:
)等价类法考虑了各个输入条件可能错误,但忽略了将多个输入条件组合错误,因果关系图的法则可以考虑将多个输入条件组合的情况
)2)因果图法有助于按照一定的步骤有效地选择测试用例,并设计多种输入条件组合的用例。
)3)因果图法还指出了程序规格说明记述中存在的问题。
使用因果图设计测试用例还存在以下缺点:
(1)输入条件和输出结果的因果关系有时很难从需求规格书中得到。
)2)即使得到了这些因果关系,由于因果关系复杂,因果关系图也会变得庞大,测试用例的数量也会变得庞大。
因果图中发现的臭虫商城活动需求表明,活动商品不能使用常规优惠券,可以使用代金券或活动优惠券(不能同时使用) )。
从因果关系中得到的用例之一是“代金券和活动优惠券的并用”
由于开发中没有加入同时使用的判断,优惠金额重叠,不符合需求。
个人心得因果关系图的绘制过程非常耗时,最后必须转化为判定表。 对于思路清晰的学生,可以跳过因果图的绘制过程,直接输出判断表; 对于逻辑复杂、因果关系复杂的输入输出点,无需使用因果图列出所有因果关系。 以上逻辑关系的描绘方法,其实相当于为自己描绘的构想图。 最后要是能有思路清晰的图,转换判定表就好了,但本人极少使用。 面试中被问到是否使用因果关系图时,我会直接回答。 因果关系图都会转换判定表,所以我直接输出判定表。