决策表是一张大概长得像下面这样的二维表(未化简):
决策表法也叫判定表法,是软件黑盒测试理论中基于组合及其优化的方法之一,也是功能测试方法中最严格的。本文简要介绍决策表的概念、决策表测试的步骤以及应试中如何解题。
目录
一、决策表
1、概念要点
- 决策表以等价类为基础,是功能性测试方法中最严格的。
- 决策表法的目标:在特定条件下消除等价类测试的冗余。
- 基本思想:基于强组合等价类测试(是一种测试设计方法,通过将多个输入条件的所有等价类进行全面组合,确保测试覆盖所有可能的交互情况)得到有效域上完整的测试用例集合,并通过合并与化简来消除用例间的冗余。
- 因此,决策表具有完备性,并遵循独立性假设(即假设输入的变量彼此之间都是独立的、互不相干的)。
注意:
- 若输入条件之间不存在相关性,则不需要使用决策表测试。
- 决策表测试法不处理无效等价类,不需要遵循单缺陷假设。
2、决策表的结构
术语:
- 条件桩:问题的所有输入条件。
- 条件项:针对条件桩给出的条件,列出所有可能的取值。
- 动作桩:问题规定可能采取的操作。
- 动作项:在条件项的各组取值情况下,应采取的动作。
- 规则:任何一个条件组合的特定取值及相应要执行的动作称为一条规则。在决策表中,贯穿条件项和动作项的一列就是一条规则。可根据每个合法输入组合的规则设计测试用例。
“条件”和“动作”的关系也可以理解为“问题”和“建议”,“条件”和“结果”,“输入”和“输出”,“条件”和“响应”的关系。
格式如图(决策表模型就长下面这个样子):
看起来有点难懂也没有关系,接下来给出示例:
对应的决策表如下:
解释:
- 条件桩(粉色方框):就是题干里给出的所有的条件,上图中“是否疲倦”“是否感兴趣”“是否糊涂”都是题干中提及的条件,全部列在这里就构成了“条件桩”。题干中提示条件的词语有:“如果”,“对于”,“输入”等。
- 动作桩(红色方框):就是题干里给出的所有可能的结果,比如“重读”“继续读”“跳下一章”“停止阅读”。
- 条件项(绿色方框):条件所有可能的取值,可以从题干中获取。可以用真/假、Y/N、0/1、T/F等符号表示。最上一行是条件组合的编号,上图中编号是1、2、...7、8,说明一共有8种条件组合。
- 动作项(蓝色方框):在某一条件组合下,输出的结果。也可以从题干获取。
- 规则:决策表中从上到下竖着的一列,包括了条件以及相应的动作。上面的决策表中一共有8条规则。
3、决策表的化简
化简原则:若决策表中某条件桩任意取值对动作桩无影响时,可根据实际情况进行合并。
(1)化简的前提条件
输出相同:欲化简的多个规则输出结果完全相同。
输入相似:欲化简的多个规则仅有一个输入条件取值不同,其他输入条件的取值应完全相同。
化简的结果:使得某个输入条件的取值对规则的输出无影响。
(2)示例
对于上述关于“读书”的示例,可以初步得到未化简的决策表为:
但观察上图,我们会发现,(1)与(2)这两条规则的条件项中,只有“是否糊涂”这一条不同;而二者的结果项完全相同(都是“跳到下一章”)。这就说明“是否糊涂”这个条件对于(1)和(2)而言是无效的,那么就可以将(1)和(2)进行合并。这个过程就是化简决策表的过程。
同理,{(3)、(7)},{(4)、(8)},{(5)、(6)}也都可以进行合并,合并后的结果如下:
由上图可知,化简合并减少了规则数,但容易遗漏分支从而产生漏测风险,所以一般规则数量不多时尽量不化简。
二、手把手画决策表
1、五步骤
还是以这道题为例:
1.找出题干中提到的所有的条件和动作,像下面这样列出来:
2.在题干中找出所有的条件组合,一一填到上面这张图的右上侧,同时记得在第一行标号:
3. 重回题干,找出每一个标号下条件对应的结果:
直到把整个决策表都填满。
4.如果有化简的要求,再进行化简。找结果相同的两个规则,并判断是否符合化简的前提条件:
5.画出化简后的结果,并自行验证是否画对:
2、新例题-1
题干:
……对功率大于50马力的机器、维修记录不全或已运行10年以上的机器,应给予优先的维修处理。
化简、合并前的决策表:
化简、合并后的决策表:
3、新例题-2
题干:三角形问题
由题干可知,输出的等价类(即动作桩or输出的结果)为能否构成三角形,以及三角形的种类。可以推导出,条件应当是三角形a、b、c三条边的长度情况。可以得到如下决策表:
由于不满足化简的前提条件,故而不用化简。
三、练习
练习1:
练习2: