因果图法是什么?
因果图法是一种利用图解法分析输入的各种组合情况,从而设计测试用例的方法,它适合于检查程序输入条件的各种组合情况
特点
- 考虑输入条件的相互制约及组合关系
- 考虑输出条件对输入条件的依赖关系
背景
等价类划分法和边界值分析法都是着重考虑输入条件,但没有考虑输入条件的各种组合,输入条件之间的相互制约关系,这样虽然各种输入条件可能出错的情况已经测试到了,但多个输入条件组合起来可能出错的情况却被忽视了。如果在测试时必须考虑输入条件的各种组合,则可能的组合数目将是天文数字,因此必须考虑采用一种合适于描述多种条件的组合,相应产生多个动作的形式来进行测试用例的设计,这就需要利用因果图(逻辑模型)
核心
因果法图比较合适输入条件比较多的情况,测试所有的输入条件的排列组合,所谓的原因就是输入,所谓的结果就是输出。“因”= 输入条件 “果” = 输出结果
主要考虑内容
- 所有输入/输出条件的相互制约关系以及组合关系
- 输入条件的依赖关系,也就是什么样的输入组合会产生怎么样的输出结果,即“因果关系”
因果图中的符号
通常在因果图中用C1表示原因,用E1表示结果,各价点表示状态,可取值‘0’或‘1’表示某状态不出现‘1’表示某状态出现
恒等
- 含义:若原因出现,则结果出现;若原因不出现,则结果也不出现;
以去银行取钱为例子,取钱会打印一张凭条
- 若C1=1,则E1=1
- 若C1=0,则E1=0
非(~)
- 含义:若原因出现,则结果不出现;若原因不出现,则结果出现
以搜索联系人为例子,如果有就不提示错误,如果没有就提示错误
- 若C1=1,则E1=0
- 若C1=0,则E1=1
或(V)
- 含义:若几个原因中有一个出现,则价格出现;若几个原因都不出现,则结果不出现
以成绩为例子,如果你努力学习成绩就会好,如果你认真学习成绩也会好,如果你没有努力也没有认真成绩就不会好
- 若 C1=1 或 C2=1 或 C3=1,则E1=1
- 若 C1 = C2= C3 = 0,则E1=0
与
- 含义:若几个原因都出现,则结果才出现;若其中一个原因不出现,则结果不出现
以网上的程序员为例子,如果你穿格子衫不代表你是程序员,如果你穿格子衫头发又有点秃还戴眼镜那你就是程序员(这例子举的不好...)
- 若C1=1并且C2=1,则E1=1
- 若C1=0或者C2 = 0,则E1=0
因果图中的约束条件
从原因方面考虑主要有5种约束条件
E(exclude)约束:a和b中至少有一个为1
I(include)包含:a、b和c中至少有一个必须是1
M(mandatory)强制:若结果a是1,结果b强制为0
O(only)唯一:
R(required)要求:a是1时,b必须是1
因果图法操作步骤
- 找出所有的原因,原因即输入条件或者输入条件的等价类
- 找出所有结果,结果即输出条件
- 明确所有输入条件之间的制约关系及组合关系;那些输出结果不能同时输出,那些输出结果可以同时输出
- 明确所有输出条件之间的制约关系以及组合关系;那些输出结果不能同时输出,那些输出结果可以同时输出
- 找出什么样的输入条件组合会产生那种输出结果
- 把因果图转换成判定表/决策表
- 为判定表/决策表中的每一行表示的情况设计测试用例
案例:交通一卡通自动充值软件
系统需求:
- 系统只接收50或100元纸币,一次只能使用一张纸币,一次充值金额只能为50元或100元;
- 若投入50元纸币,并选择充值50元,完成充值后退卡,提示充值成功;
- 若投入50元纸币,并选择充值100元,提示输入金额不足,并退回50元;
- 若投入100元纸币,并选择充值50元,完成充值后退卡,提示充值成功,找零50元;
- 若投入100元纸币,并选择充值100元,完成充值后退卡,提示充值成功;
- 若投入纸币后在规定的时间内不选择充值按钮,退回输入的纸币,并提示错误;
- 若选择充值按钮后不输入纸币,提示错误;
用例标题 | 测试模块 | 预置条件 | 测试输入 | 预期输出 | 操作步骤 | 级别 | 开发人员 | 测试结果 |
---|---|---|---|---|---|---|---|---|
测试充值50元 | 充值模块 | 系统正常 | 投入50元,选择充值50元 | 完成充值,退卡,提示充值成功 | 1、投入50元人民币 2、选择充值50元 | 高 | 张明 | 通过 |
测试投入50元并选择充值100元 | 充值模块 | 系统正常 | 投入50元,选择充值100元 | 提示投入金额不足,并退回50元 | 1、投入50元人民币 2、选择充值100元 | 高 | 张明 | 通过 |
测试投入100元并选择充值50元 | 充值模块 | 系统正常 | 投入100元,选择充值50元 | 完成充值,退卡,提示充值成功, 找零50元 | 1、投入100元人民币 2、选择充值50元 | 高 | 张明 | 通过 |
测试投入100元并选择充值100元 | 充值模块 | 系统正常 | 投入100元,选择充值100元 | 完成充值,退卡,提示充值成功 | 1、投入100元人民币 2、选择充值100元 | 高 | 张明 | 通过 |
投入纸币后在规定的时间内不选择充值按钮 | 充值模块 | 系统正常 | 投入纸币,不选择充值 | 退回纸币,提示错误 | 1、投入纸币 2、不选择充值 | 高 | 张明 | 通过 |