一、应用场合
在一个界面中,有多个输入条件,输入之间存在组合关系,不同的输入组合会产生不同的输出结果的组合,为了弄清输入和输出的关系,使用因果图
(控件组合)
二、核心概念
1、 因——原因,输入动作。
2、 果——结果,输出结果。
使用画图的方法找出输入(因)和输出(果)的关系
因果图法需要考虑:
- 所有输入条件的相互制约关系以及组合关系
- 输出结果对输入条件间的依赖关系。也就是什么样的输入组合会产生怎样的输出结果。即“因果关系”
三、图形符号
1、基本符号——
表示输入和输出之间的关系(重点:恒、与)
- 恒等*
-
- 含义:
- 若原因出现,则结果出现;若原因不出现,则结果也不出现。
- 若a = 1,则b = 1.
- 若a = 0,则b = 0.
- 含义:
- 非
-
- 含义:
- 若原因出现,则结果不出现;若原因不出现,则结果出现。
- 若a = 1,则b = 0.
- 若a = 0,则b = 1.
- 含义:
- 或
-
- 含义:
- 若几个原先因中有一个出现,则结果出现;若几个原因都不出现,则结果不出现。
- 若a = 1,或b = 1,或c = 1 ,则d = 1
- 若a = b = c = 0,则d = 0
- 含义:
- 与*
-
- 含义:
- 若几个原先因都出现,则结果才出现;若几个原因只要有一个不出现,则结果不出现。
- 若a = b = c = 1,则d =1
- 若a = 0,或b = 0,或c = 0 ,则d = 0
- 含义:
2、约束(限制)符号——
约束的永远都是同一类型:要不然同时限制几个输入之间的关系,要不然同是限制几个输出之间的关系。
- 互斥(E)*
-
- 含义:
- 表示a、b、c三个原因不会同时成立;最多有一个可能成立。
- a、b、c不能同时为 1,即a/b/c中至多只有1
- 含义:
- 包含(I)
-
- 含义:
- 表示a、b、c三个原因中至少有一个必须成立
- a、b、c至少有有一个1,即a,b,c中不能同时为0
- 含义:
- 唯一(O)*
-
- 含义:
- 表示a、b、c三个原因中必须有一个成立,且仅有一个成立(唯一和互斥非常接近,就差一个默认值)
- 含义:
说明:互斥和唯一的区别:一般有默认选项—唯一, 没有默认选项—互斥
- 要求(R)*
-
- 含义:
- 表示a 出现时,则b 必须出现
- 若a = 1 ,则b 必须= 1,即不可能a = 1 且 b = 0
- 含义:
- 屏蔽(M)
-
- 含义:
- 若a = 1 ,则b 必须= 0,若a = 0 时则 b 的值不一定
重点要求:
互斥、唯一、要求
屏蔽一般在输出中常用。
四、分析程序步骤
1、找出“因”(输入动作),例如:
编号:(1)投币1元,(2)投币5元,
(3)充值1元,(4)充值5元
2、找出“果”(输出结果)
编号:a.成功,退卡!
b.提示成功!
c.找零
d.错误提示,然后退卡!
说明:前两步是初步分析需求的过程
3、在步骤1 的基础上,找到输入的限制关系和组合关系
(1)限制关系:(哪些输入不能组合在一起)
①输入(1)(2)不能组合
②输入(3)(4)不能组合
(2)能组合(决定测试用例的数量)
①输入(1)(3)
②输入(1)(4)
③输入(2)(3)
④输入(2)(4)
⑤输入(1)单独
⑥输入(2)单独
⑦输入(3)单独
⑧输入(4)单独
说明:先把输入的限制关系画出因果图
4、在步骤2基础上,找出哪些输出不能组合,哪些可以组合
(1)不能组合
①输出AD不能组合
②输出BD不能组合
(2)能组合
①输出AB必须组合
②输出ABC可能组合
③输出CD可能组合
④输出D单独
步骤3、4深入分析需求的过程
画出输出的限制关系
5、根据步骤3(2)和4(2),找出什么样的输入组合会产生什么样的输出组合
情况1:
输入(1)(3)组合
会产生: 输出AB组合
================
情况2:
输入(1)(4)
会产生: 输出CD组合
=================
情况3:
输入(2)(3)
会产生: 输出ABC组合
=================
情况4:
输入(2)(4)
会产生:输出AB组合
===================
情况5:
输入(1)单独
会产生:输出CD组合
==============
情况6:
输入(2)单独
会产生:输出CD组合
================
情况7:
输入(3)单独
会产生: 输出D
================
情况8:
输入(4)单独
会产生:输出D
6、根据因果图,写出判定表
7、根据判定表,写用例
判定表的一列转换成一条用例
五、因果图应用限制
考虑控件的组合,但是每个控件的取值条件不宜过多,一般为2-3项,如:按钮、
单选按钮、复选框、取值只有2-3项的下拉列表
六、判定法小结
条件桩:问题的所有条件
动作桩:问题的所有输出
条件项:针对条件桩的取值
动作项:条件项的各种取值情况下的输出结果
- 适合使用判定表设计测试用例的条件:
- (1)规格说明很容易转换成判定表
- (2)条件的排列顺序不影响执行哪些操作。
- (3)规则的排列顺序不影响执行哪些操作。
- (4)当一个规则的条件已经满足,并确定要执行操作后,不必检验别的规则。
- (5)如果某一规则要执行多个操作,这些操作的执行顺序无关紧要。