决策表法

概述

决策表法(Decision Tables)是利用分析和表达多逻辑条件下执行不同操作的情况的表格工具,并根据分析结果设计测试用例的方法。

决策表的优点:

  • 能够将复杂的问题按照各种可能的情况全部列举出来
  • 简明并避免遗漏
  • 利用决策表能够设计出完整的测试用例集合

决策表的四个基本组成部分

1. 条件桩(Condition Stub)

列出问题的所有条件,通常认为条件的先后次序无关紧要。

2. 动作桩(Action Stub)

列出了问题规定的可能采取的操作,这些操作的排列顺序没有约束。

3. 条件项(Condition Entry)

针对条件桩给出的条件列出所有可能的取值,如果有n个条件,那么条件项有2^n个。

4. 动作项(Action Entry)

与条件项紧密相关,列出在条件项的各取值情况下应该采取的操作。

决策表基本概念

任何一个条件组合的特定取值及其相应要执行的操作称为一条规则,在决策表中贯穿条件项和动作项的一列就是一条规则。

显然,决策表中列出多少组条件取值,也就有多少条规则,即条件项和动作项有多少列。

建立决策表的步骤

  1. 确定规则的个数:假如有n个条件,每个条件有两个取值,故有2^n种规则
  2. 列出所有的条件桩和动作桩
  3. 填入条件项
  4. 填入动作项,得到初始决策表
  5. 化简:合并相似规则(相同动作)

决策表的化简

合并相似规则时,如果相同的操作组合的某项条件包含”Y”与”N”,则用”-“来代替,表示该条件的取值不影响结果。

适用条件

决策表适用于以下情况:

  1. 规格说明以决策表形式给出,或很容易转换成决策表
  2. 条件的排列顺序不会也不应影响执行哪些操作
  3. 规则的排列顺序不会也不应影响执行哪些操作
  4. 每当某一规则的条件已经满足,并确定要执行的操作后,不必检验别的规则
  5. 如果某一规则得到满足要执行多个操作,这些操作的执行顺序无关紧要

适用场景

决策表法主要适用于:

  • if-then-else逻辑突出
  • 输入变量之间存在逻辑关系
  • 涉及输入变量子集的计算
  • 输入与输出之间存在因果关系的情形

应用示例

阅读指导建议示例

根据阅读中出现的三种状态条件:

  • 是否疲劳
  • 是否感兴趣
  • 能否理解

给出后续建议:

  • 重读
  • 跳到下一章
  • 休息
  • 继续阅读

判断规则:

  • 如果觉得疲倦,那么休息
  • 否则,如果不感兴趣,则”跳到下一章”
  • 否则,如果能理解就”继续”阅读,如果不能理解就”重读”

三角形问题示例

要求输入三个整数a、b、c,分别作为三角形的三条边,取值范围在1~100之间,判断由三条边构成的三角形类型为:

  • 等边三角形
  • 等腰三角形
  • 一般三角形(包括直角三角形)
  • 非三角形

决策表分析:

  • 条件C1:是否构成三角形?
  • 条件C2:a=b?
  • 条件C3:b=c?
  • 条件C4:a=c?

库存管理系统示例

根据库存情况、销售情况,确定商品的订购和库存操作:

  • 销售好且库存低:订购商品
  • 销售好但库存充足:保持不动
  • 销售不好,库存量低但未低于最低线:保持不动
  • 销售不好,库存量低且低于最低线:订购商品
  • 销售不好且库存量不低:促销商品

总结

决策表法实现了对程序条件的所有情形全覆盖,实现了测试严格意义上的完备性。人们可以通过简化决策表进一步缩小用例集,是软件测试中重要而常用的方法工具之一。