【黑盒测试】因果图分析

因果图

应用场景

在一个界面中,有多个控件,测试的时候需要考虑控件的组合关系,不同的控件组合会产生不同的输出结果组合,为了弄清什么样的输入组合会产生什么样的输出组合,使用因果图。
等价类划分法和边界值分析法都是着重考虑输入条件,如果输入条件之间没有什么联系,采用等价类划分和边界值分析是比较有效的方法。但边界值分析没有考虑输入条件的各种组合、输入条件之间的相互制约关系。例如:约束关系组合关系。这样虽然各种输入条件可能出错的情况以及测试到了,但多个输入条件组合起来的情况却被忽略了,测试效果难以保证。
因此必须考虑使用一种适用于多种条件的组合,产生多个相应动作的测试方法,如果在测试时必须考虑输入条件的各种组合,则可能的组合数目是天文数字,因此必须考虑采用一种适用于描述多种条件的组合、相应产生多个动作的形式来进行测试用例的设计,这就需要利用因果图。因果图法着重产生规格说明中的输入与输出间的依赖关系。

因果图核心

因:原因,输入条件
果:结果,输出条件
使用图形的方式,分析软件输入和输出的相应关系

图形符号

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画出的因果关系),画出判定表

12345678
(1)XXX
(2)XXX
(3)XXX
(4)XXX
AXXX
BXXX
CXXXX
DXXXXX

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个,比如:按钮按下或不按下;复选框选择还是不选择;单选按钮选还是不选;有三个选项的下拉列表

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值