因果图
利用图解法分析输入的各种组合情况,从而设计测试用例的方法,适合检查程序输入条件的各种组合情况。因:输入条件,果:输出结果。
适用场景:描述多种条件的组合,产生多个动作。
因果图中的基本符号
通常在因果图中使用c1表示原因,e1表示结果,各节点表示状态,可取值0或1。0表示某状态不出现,1表示某状态出现。
恒等:原因出现,则结果出现;原因不出现,结果不出现。有因必有果,无因也无果。c1=1,e1=1;c1=0,e1=0。如:购物付款,付款后有购物小票,不付款则没有购物小票。
非:原因出现,结果不出现;原因不出现,则结果出现。有因无果,无因有果。c1=1,e1=0;c1=0,e1=1。如:购物,购买了某种商品全部库存,则此商品不可再次购买,没有购买全部库存,则可以再次购买。
或:有多个原因。至少有一个原因出现,结果出现;一个原因都没有,结果则不出现。c1、c2、c3至少有一个=1,e1=1;c1、c2、c3均=0,e1=0。如:购物付款,有三张银行卡,其中一张的余额满足付款的费用,则可以付款成功,三张余额均不够才会付款失败。
与:有多个原因。原因全部出现,结果出现;有至少一个原因不出现,结果则不出现。c1、c2、c3均=1,e1=1;c1、c2、c3至少有一个=0,e1=0。如:购物,需要满足商品有库存,银行卡余额足够付款,则可以成功购买,有一个条件不满足则无法购买。
因果图中的约束条件
输入条件相互之间还可能存在某些依赖关系,称为约束。输出条件之间也同样。在因果图中,用特定的符号标明这些约束。
互斥E:a、b、c至多有一个成立,可以都不成立。
包含 I:a、b、c至少有一个成立,可以都成立。
唯一O:a、b、c有且只有一个成立。
要求R:如果a成立,则b必须成立,其他的不约束。
屏蔽M:如果a成立,则b不成立,其他的不约束。
因果图设计步骤
找出所有输入条件(因)
找出所有输出条件(果)
明确输入条件之间的制约和组合关系
明确输出条件之间的制约和组合关系
找出输入条件组合产生的对应的输出结果
因果图转化为判定表
根据判定表设计测试用例
案例
一个每次可以充值50或100元的充值系统
需求解析
1.找出所有输入条件和输出条件
充值软件:投币50/100,充值50/100 |
|
输入条件 |
输出条件 |
1.投币50 |
a.完成充值退卡 |
2.投币100 |
b.提示充值成功 |
3.充值50 |
c.找零(退钱) |
4.充值100 |
d.提示错误 |
2.分别明确输入条件、输出条件之间的制约和组合关系
输入条件:1和2互斥、3和4互斥,因此有1、2、3、4、13、14、23、24,共8种输入组合。
输出条件:a和d互斥、b和d互斥,因此有ab、abc、cd、d,共4种输出组合。
3.找出输入条件组合产生的对应的输出结果
1、2→cd ,3、4→d ,13、24→ab ,14→cd ,23→abc
可添加中间节点协助分析、简化因果图。
4.因果图转化为判定表
编号 |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
|
输入 |
1.投币50元 |
1 |
1 |
1 |
|||||
2.投币100元 |
1 |
1 |
1 |
||||||
3.充值50元 |
1 |
1 |
1 |
||||||
4.充值100元 |
1 |
1 |
1 |
||||||
输出 |
a.完成充值退卡 |
1 |
1 |
1 |
|||||
b.提示充值成功 |
1 |
1 |
1 |
||||||
c.找零(退钱) |
1 |
1 |
1 |
1 |
|||||
d.提示错误 |
1 |
1 |
1 |
1 |
1 |
5.根据判定表设计测试用例
用例编号 |
测试点 |
测试步骤 |
预期结果 |
1 |
投50元充值50元 |
1.点击投币50元按钮 |
充值成功并退卡,提示充值成功 |
2 |
投50元充值100元 |
1.点击投币50元按钮 |
提示错误,找零50元 |
3 |
投100元充值50元 |
1.点击投币100元按钮 |
充值成功并退卡,提示充值成功,找零50元 |
4 |
投100元充值100元 |
1.点击投币100元按钮 |
充值成功并退卡,提示充值成功 |
5 |
投50元不点击充值按钮 |
1.点击投币50元按钮 |
提示错误,找零50元 |
6 |
投100元不点击充值按钮 |
1.点击投币100元按钮 |
提示错误,找零100元 |
7 |
不投币点击充值50元 |
1.不点击投币按钮 |
提示错误 |
8 |
不投币点击充值100元 |
1.不点击投币按钮 |
提示错误 |