概述
因果图
应用场景
在一个界面中,有多个控件,测试的时候需要考虑控件的组合关系,不同的控件组合会产生不同的输出结果组合,为了弄清什么样的输入组合会产生什么样的输出组合,使用因果图。
等价类划分法和边界值分析法都是着重考虑输入条件,如果输入条件之间没有什么联系,采用等价类划分和边界值分析是比较有效的方法。但边界值分析没有考虑输入条件的各种组合、输入条件之间的相互制约关系。例如:约束关系,组合关系。这样虽然各种输入条件可能出错的情况以及测试到了,但多个输入条件组合起来的情况却被忽略了,测试效果难以保证。
因此必须考虑使用一种适用于多种条件的组合,产生多个相应动作的测试方法,如果在测试时必须考虑输入条件的各种组合,则可能的组合数目是天文数字,因此必须考虑采用一种适用于描述多种条件的组合、相应产生多个动作的形式来进行测试用例的设计,这就需要利用因果图。因果图法着重产生规格说明中的输入与输出间的依赖关系。
因果图核心
因:原因,输入条件
果:结果,输出条件
使用图形的方式,分析软件输入和输出的相应关系
图形符号
1.基本图形
恒等(-) 输入A,输出B
若A=1,则B=1;若A=0,则B=0
非(~) 输入A,输出B
若A=1,则B=0;若A=0,则B=1
或(V) 输入ABC,输出D
若A=1,或B=1,或C=1,则D=1
若A=B=C=0,则D=0
与(^) 输入ABC,输出D
若A=1,或B=1,或C=1,则D=1
若A=B=C=0,则D=0
2.约束(限制条件)图形
互斥(E) 输入ABC
A、B、C不同时为1,则A,B,C中最多只有一个1
包含(I) 输入ABC
A、B、C最少有一个1,则A,B,C不能同时为0
唯一(O) 输入ABC
A、B、C中必须有一个成立,且仅有一个成立(有且只有一个1)
说明:唯一(O)的情况是有一个默认值;而互斥(E)没有默认值
要求(R) 输入AB
若A=1,则B必须为1
屏蔽(M) 输入AB
若A=1时,则B必须为0;
当A=0时,B的值不定
使用因果图法分析程序
例子:交通卡自动充值系统需求
- 系统只收50或100元纸币,一次充值只能使用一种纸币,一次充值金额只能为50或100元;
- 若输入50元纸币,并选择充值50元,完成充值后退卡,提示充值成功; 若输入50元纸币,并选择充值100元,提示输入金额不足,并退回50元;
- 若输入100元纸币,并选择充值50元,完成充值后退卡,提示充值成功,找零50元;
- 若输入100元纸币,并选择充值100元,完成充值后退卡,提示充值成功;
- 若输入纸币后,在规定的时间内不选择充值,则退回输入的纸币,并提示错误; 若选择充值不输入纸币,提示错误
1、找出所有的原因(输入),编号
(1)投币50元
(2)投币100元
(3)充值50元
(4)充值100元
2、找出所有的结果(输出),编号
A、充值成功并退卡
B、提示充值成功
C、找零
D、提示错误
步骤1、2就是初步分析需求。
3.在步骤1的基础上,找到输入的限制关系和组合关系
(1)限制关系(哪些输入不能组合)
- 输入(1)和(2)不能(互斥E)
- 输入(3)和(4)不能(互斥E)
(2)组合关系(决定测试用例的数量)
- 输入(1)和(3)组合
- 输入(1)和(4)组合
- 输入(2)和(3)组合
- 输入(2)和(4)组合
- 输入(1)单独
- 输入(2)单独
- 输入(3)单独
- 输入(4)单独
4.在步骤2的基础上,找到输出的限制关系和组合关系
(1)限制关系
- 输出A和D不能(互斥E)
- 输出B和D不能(互斥E)
(2)组合关系
- 输出A和B必须组合(要求R)
- 输出A、B、C组合
- 输出C和D组合
- 输出D单独
步骤3和4是深入分析需求的过程
5.找到输入组合和输出组合的对应关系(什么样的输入组合会产生什么样的输出组合),依据步骤3(2)和4(2)
- 情况1:输入(1)和(3)组合,产生:输出A和B的组合
- 情况2:输入(1)和(4)组合,产生:输出C和D的组合
- 情况3:输入(2)和(3)组合,产生:输出A和B和C的组合
- 情况4:输入(2)和(4)组合,产生:输出A和B的组合
- 情况5:输入(1)单独,产生:输出C和D的组合
- 情况6:输入(2)单独,产生:输出C和D的组合
- 情况7:输入(3)单独,产生:输出D
- 情况8:输入(4)单独,产生:输出D
6.根据因果图(步骤5画出的因果关系),画出判定表
1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | |
---|---|---|---|---|---|---|---|---|
(1) | X | X | X | |||||
(2) | X | X | X | |||||
(3) | X | X | X | |||||
(4) | X | X | X | |||||
A | X | X | X | |||||
B | X | X | X | |||||
C | X | X | X | X | ||||
D | X | X | X | X | X |
7.根据判定表的一列转换成一条用例
编号1:
用例描述:
1.点击投币50元按钮
2.点击充值50元按钮
预期结果:
1.投币“50元”变为“投币50元”,投币“100元”按钮置灰
2.充值“50元”按钮变为“充值50元”,充值“100元”按钮置灰;充值成功并退卡,提示充值成功
编号2:
用例描述:
1.点击投币50元按钮
2.点击充值50元按钮
预期结果:
1.投币“50元”变为“投币50元”,投币“100元”按钮置灰
2.充值“50元”按钮变为“充值50元”,充值“100元”按钮置灰;充值成功并退卡,提示充值成功
编号3:
用例描述:
1.点击投币50元按钮
2.点击充值100元按钮
预期结果:
1.投币“50元”变为“投币50元”,投币“100元”按钮置灰
2.充值“100元”按钮变为“充值100元”,充值“50元”按钮置灰;提示金额不足并退回50元
编号4:
用例描述:
1.点击投币100元按钮
2.点击充值50元按钮
预期结果:
1.投币“100元”变为“投币100元”,投币“50元”按钮置灰
2.充值“50元”按钮变为“充值50元”,充值“100元”按钮置灰;充值成功并退卡,提示充值成功,找回50元
编号5:
用例描述:
1.点击投币50元按钮
预期结果:
1.投币“50元”变为“投币50元”,投币“100元”按钮置灰,系统提示错误并找回50元
编号6:
用例描述:
1.点击投币100元按钮
预期结果:
1.投币“100元”变为“投币100元”,投币“50元”按钮置灰,系统提示错误并找回100元
编号7:
用例描述:
1.点击充值50元按钮
预期结果:
1.充值“50元”按钮变为“充值50元”,充值“100元”按钮置灰;系统提示错误
编号8:
用例描述:
1.点击充值100元按钮
预期结果:
1.充值“100元”按钮变为“充值100元”,充值“50元”按钮置灰;系统提示错误
因果法的局限性
每个控件的条件(或取值)最好是2-3个,比如:按钮按下或不按下;复选框选择还是不选择;单选按钮选还是不选;有三个选项的下拉列表
最后
以上就是乐观钢笔为你收集整理的【黑盒测试】因果图分析的全部内容,希望文章能够帮你解决【黑盒测试】因果图分析所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复