大家好,又见面了,我是你们的朋友全栈君
上一篇文章中介绍了等价类和边界值,接下来我们就来学习一下因果图和判定表,这两种方法在软件测试中是非常重要的工具,这两个东西理论也是很绕口,特别是因果图,砖家给的方法我看起来也很困,所以我们就不要按照砖家的思路来。
- 定义因果图法是一种利用图解法分析输入的各种组合情况,从而设计测试用例的方法,它适合于检查程序输入条件的各种组合情况。
- 特点:a考虑输入条件的相互制约及组合关系b考虑输出条件对输入条件的依赖关系
- 因果图法产生的背景:
a等价类划分法和边界值分析方法都是着重考虑输入条件,但没有考虑输入条件的各种组合、输入条件之间的相互制约关系。这样虽然各种输入条件可能出错的情况已经测试到了,但多个输入条件组合起来可能出错的情况却被忽视了。
b如果在测试时必须考虑输入条件的各种组合,则可能的组合数目将是天文数字,因此必须考虑采用一种适合于描述多种条件的组合、相应产生多个动作的形式来进行测试用例的设计,这就需要利用因果图(逻辑模型)。
- 因果图的核心
因果图法比较适合输入条件比较多的情况,测试所有的输入条件的排列组合。所谓的原因就是输入,所谓的结果就是输出。
因果图的“因”——输入条件
因果图的“果”——输出结果
因果图法要注意考虑:
所有输入/输出条件的相互制约关系以及组合关系
输出结果对输入条件的依赖关系,也就是什么样的输入组合会产生怎样的输出结果,即“因果关系”
- 因果图中的基本符号:通常在因果图中用Ci表示原因,用Ei表示结果,各结点表示状态,可取值“0”或“1”。“0”表示某状态不出现,“1”表示某状态出现。
- 四种关系:
- 因果图法基本步骤:
- 找出所有的原因,原因即输入条件或输入条件的等价类。
- 找出所有的结果,结果即输出条件。
- 明确所有输入条件之间的制约关系以及组合关系。
- 明确所有输出条件之间的制约关系以及组合关系。
- 找出什么样的输入条件组合会产生哪种输出结果
- 把因果图转换成判定表/决策表
- 为判定表/决策表中的每一列表示的情况设计测试用例
例题:交通一卡通自动充值软件系统需求
要求:
-
- 系统只接收50或100元纸币,一次只能使用一张纸币,一次充值金额只能为50元或100元。
- 若输入50元纸币,并选择充值50元,完成充值后退卡,提示充值成功;
- 若输入50元纸币,并选择充值100元,提示错误,并退回50元;
- 若输入100元纸币,并选择充值50元,完成充值后退卡,提示充值成功,找零50元;
- 若输入100元纸币,并选择充值100元,完成充值后退卡,提示充值成功;
- 若输入纸币后在规定时间内不选择充值按钮,找零,并提示错误;
- 若选择充值按钮后不输入纸币,提示错误
步骤:
1、找到所有输入条件编号
2、找到所有输出条件编号
3、找出所有输入、输出的制约关系
接下来我们就可以绘制出一张判定表:
我们再来做一道例题加深印象:
- 怎样称为一个好学生?遵纪守法的前提下,学习成绩好是一个好学生、品德高尚也是一个好学生;(只要违法乱纪就绝对不是一个好学生;成绩和品德有一项,再加遵纪守法也是好学生)
- 守法、学习成绩、品德 =è 好学生 坏学生
总结:
- 我们利用因果图中的因果关系可以做出一张判定表
- 判定表实际上也是一个测试用例
- 判定表中有条件桩和动作桩
- 条件桩中有条件项(即例题二中的:守法、学习成绩、品德),动作桩中有动作项(好学生、坏学生)
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/170406.html原文链接:https://javaforall.cn