1 引言
上篇讲了等价类划分和边界值分析法,而这两种方法只考虑了单个的输入条件,并未考虑输入条件的各种组合、输入条件之间的相互制约关系的场景。基于此短板,因果图法和判定表法应运而生。
2 因果图法
2.1 概念及原理
2.1.1 定义
一种描述输入条件的组合以及每种组合对应的输出的图形化工具,它适合于检查程序输入条件的各种组合情况。
2.1.2 方法的原则
画因果图时,原因在左,结果在右,由上而下排列,并根据功能说明书中规定的原因和结果之间的关系,用下述基本符号连接起来,在因果图中还可以引入一些中间节点。
1.因果图的基本图形符
2.因果图中的约束条件
从原因方面考虑主要有4种约束条件:
- E(互斥、排他):a、b两个原因不会同时出现,最多只有一个出现
- I(包含、或):a、b、c三个原因至少有一个出现
- O(唯一):a、b两个原因必须有一个出现,且仅有一个出现
- R(需求):a出现时b必定出现
从结果方面考虑主要有1种约束条件:
- M(屏蔽):a出现时,b必定不出现;a不出现时,b则不确定
2.2 方法步骤
- 找出所有的原因,原因即输入条件或输入条件的等价类;
- 找出所有的结果,结果即输出条件;
- 明确所有输入条件之间的制约关系以及组合关系;哪些条件不能组合到一起,哪些条件可以组合到一起
- 明确所有输出条件之间的制约关系以及组合关系;哪些输出结果不能同时输出,哪些输出结果可以同时输出
- 找出什么样的输入条件组合会产生哪种输出结果;
- 画出因果图;
- 把因果图转换成判定表/决策表;
- 为判定表中的每一列表示的情况设计测试用例(每一列都是一条测试用例)。
2.3 举个栗子
场景:基础坐席认责or申诉
1.先列出输入条件和输出条件
输入条件:
- 1——认责or
- 2——申诉
- 3——个人责任
- 4——组织责任
- 5——三方责任
- 6——责任人erp
- 7-申诉原因
- 8-描述
输出条件:
- a——认责个人责任
- b——认责组织责任
- c——认责三方责任
- d——申诉
2.画出因果图
3.将因果图转换为判定表,并将判定表的每一列拿出来就可作为一个测试用例
- 选择“认责”、选择“个人责任”,填写:责任人erp、描述-》认责个人责任
- 选择“认责”、选择“组织责任”,填写:描述-》认责组织责任
- 选择“认责”、选择“三方责任”,填写:责任人erp、三方名称、描述-》认责三方责任
- 选择“申诉”,填写:申诉原因、描述-》申诉
3 判定表法
3.1 概念及原理
3.1.1 定义
判定表是分析和表达多逻辑条件下执行不同操作的情况的工具,是指一个表格,用于显示条件和条件导致动作的集合。
3.1.2 方法的原则
主要包含五部分:
- 条件桩:问题的所有条件
- 条件项:所有条件的取值组合
- 动作桩:所有可能的操作
- 动作项:在每一种条件取值组合的情况下,执行动作桩中的哪些动作
- 规则:一种条件取值组合与其对应的动作组合一种条件取值组合与其对应的动作组合(即判定表中贯穿条件项和动作项的一列)构成判定表的一个规则
3.2 方法步骤
- 列出所有的条件桩和动作桩(输入和输出);
- 填入条件项(输入项);
- 填入动作项,得到初始判定表;
- 简化判定表(合并相似规则(相同动作))。
3.3 举个栗子
场景:基础坐席认责or申诉
1.列判定表
2.对判定表进行简化
- 选择“认责”、选择“个人责任”,填写:责任人erp、描述-》认责个人责任
- 选择“认责”、选择“组织责任”,填写:描述-》认责组织责任
- 选择“认责”、选择“三方责任”,填写:责任人erp、三方名称、描述-》认责三方责任
- 选择“申诉”,填写:申诉原因、描述-》申诉
4 总结
但因果图和判定表法在变量值很多、排列组合数量极大的场景下,会生成非常庞大且冗余的测试用例,此时我们很难对所有组合场景进行全量测试用例覆盖,这个时候就是正交试验法大展神威的时候了,让我们一起来学习吧~