因果图
1、背景
1)等价类划分法和边界值分析法着重考虑输入条件,但没有考虑输入条件的各种组合、输入条件之间的相互制约关系,这样虽然各种输入条件可能出错情况已经测试到了,但多个输入条件组合起来可能出错的情况被忽视。
2)如果测试时必须考虑输入条件的各种组合,则可能组合数目将是天文数字,因此必须考虑采用一种适合于描述多种条件的组合、相应产生多个动作的形式来进行测试用例的设计,需要利用因果图。
2、概念
因——>输入条件
果——>输出结果
适用于输入条件之间有相互制约、相互依赖的情况
3、因果图中的基本符号
恒等(因出现,果出现)
非 ~(因不出现,果出现;因出现,果不出现)
或 v(几个原因有一个出现,果出现;几个原因都不出现,果不出现)
与 (几个原因都出现,果出现;有一个原因不出现,果不出现)
4、因果图中的约束条件
互斥(最多有一个成立,如下拉菜单)
包含(至少有一个必须成立,如下拉菜单)
屏蔽(a成立时,b不成立;a不成立时,b不一定成立,如元旦不上班:不是元旦,不一定上班)
唯一(几个原因只有一个成立如下拉菜单)
要求(一个出现,另一个一定出现)
5、因果图导出测试用例步骤
1)找出所有原因(输入条件的等价类)
2)找出所有结果(输出条件)
3)明确输入条件之间的制约关系和组合关系(哪些能组合,哪些不能组合)
4)明确输出结果之间的制约关系和组合关系(哪些能同时输出,哪些不能)
5)找出什么样的输入条件组合会产生哪种输出结果
6)因果图转化为判定表/决策表
7)为判定表/决策表的每一列情况设计测试用例
案例:交通一卡通自动充值软件系统需求
1、只接受50、100元纸币,一次充值只能50元或100元
2、输入50元纸币,选择充值50元,完成充值退卡,提示充值成功
3、输入50元纸币,选择充值100元,提示输入金额不足,并退回50元
4、输入100元纸币,选择充值50元,完成充值退卡,提示成功,找零50
5、输入100元纸币,选择充值100元,完成充值退卡,提示充值成功
6、输入纸币后不在时间内选择充值按钮,退回输入纸币,提示错误
7、选择充值按钮后不输入纸币,提示错误
分析:找输入条件编号、输出条件编号、输入输出制约关系
因果图只是中间步骤,为了生成判定表。
判定表:
测试用例 |
|||||||||
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
||
条件桩 |
输入50 |
1 |
1 |
1 |
|||||
输入100 |
1 |
1 |
1 |
||||||
选择50 |
1 |
1 |
1 |
||||||
选择100 |
1 |
1 |
1 |
||||||
动作桩 |
完成充值并退卡 |
1 |
1 |
1 |
|||||
提示充值成功 |
1 |
1 |
1 |
||||||
找零 |
1 |
1 |
1 |
1 |
|||||
提示错误 |
1 |
1 |
1 |
1 |
1 |
||||
是否bug |
组成部分:
条件桩:所有条件
动作桩:所有结果
条件项:针对条件桩的取值
动作项:针对动作桩的取值
注:如果出现‘-’,代表此项不影响最终结果