决策表法
概述
决策表法(Decision Tables)是利用分析和表达多逻辑条件下执行不同操作的情况的表格工具,并根据分析结果设计测试用例的方法。
决策表的优点:
- 能够将复杂的问题按照各种可能的情况全部列举出来
- 简明并避免遗漏
- 利用决策表能够设计出完整的测试用例集合
决策表的四个基本组成部分
1. 条件桩(Condition Stub)
列出问题的所有条件,通常认为条件的先后次序无关紧要。
2. 动作桩(Action Stub)
列出了问题规定的可能采取的操作,这些操作的排列顺序没有约束。
3. 条件项(Condition Entry)
针对条件桩给出的条件列出所有可能的取值,如果有n个条件,那么条件项有2^n个。
4. 动作项(Action Entry)
与条件项紧密相关,列出在条件项的各取值情况下应该采取的操作。
决策表基本概念
任何一个条件组合的特定取值及其相应要执行的操作称为一条规则,在决策表中贯穿条件项和动作项的一列就是一条规则。
显然,决策表中列出多少组条件取值,也就有多少条规则,即条件项和动作项有多少列。
建立决策表的步骤
- 确定规则的个数:假如有n个条件,每个条件有两个取值,故有2^n种规则
- 列出所有的条件桩和动作桩
- 填入条件项
- 填入动作项,得到初始决策表
- 化简:合并相似规则(相同动作)
决策表的化简
合并相似规则时,如果相同的操作组合的某项条件包含”Y”与”N”,则用”-“来代替,表示该条件的取值不影响结果。
适用条件
决策表适用于以下情况:
- 规格说明以决策表形式给出,或很容易转换成决策表
- 条件的排列顺序不会也不应影响执行哪些操作
- 规则的排列顺序不会也不应影响执行哪些操作
- 每当某一规则的条件已经满足,并确定要执行的操作后,不必检验别的规则
- 如果某一规则得到满足要执行多个操作,这些操作的执行顺序无关紧要
适用场景
决策表法主要适用于:
- if-then-else逻辑突出
- 输入变量之间存在逻辑关系
- 涉及输入变量子集的计算
- 输入与输出之间存在因果关系的情形
应用示例
阅读指导建议示例
根据阅读中出现的三种状态条件:
- 是否疲劳
- 是否感兴趣
- 能否理解
给出后续建议:
- 重读
- 跳到下一章
- 休息
- 继续阅读
判断规则:
- 如果觉得疲倦,那么休息
- 否则,如果不感兴趣,则”跳到下一章”
- 否则,如果能理解就”继续”阅读,如果不能理解就”重读”
三角形问题示例
要求输入三个整数a、b、c,分别作为三角形的三条边,取值范围在1~100之间,判断由三条边构成的三角形类型为:
- 等边三角形
- 等腰三角形
- 一般三角形(包括直角三角形)
- 非三角形
决策表分析:
- 条件C1:是否构成三角形?
- 条件C2:a=b?
- 条件C3:b=c?
- 条件C4:a=c?
库存管理系统示例
根据库存情况、销售情况,确定商品的订购和库存操作:
- 销售好且库存低:订购商品
- 销售好但库存充足:保持不动
- 销售不好,库存量低但未低于最低线:保持不动
- 销售不好,库存量低且低于最低线:订购商品
- 销售不好且库存量不低:促销商品
总结
决策表法实现了对程序条件的所有情形全覆盖,实现了测试严格意义上的完备性。人们可以通过简化决策表进一步缩小用例集,是软件测试中重要而常用的方法工具之一。