决策表又称判断表,是一种呈表格状的图形工具,适用于描述处理判断条件较多,各条件又相互组合、有多种决策方案的情况。是一种精确而简洁描述复杂逻辑的方式,将多个条件与这些条件满足后要执行动作相对应。那什么是决策表呢,下面通过一个“图书阅读指南”来制作一个决策表,图书阅读指南指明了图书阅读过程中可能出现的状况(条件),以及针对各种情况给读者的建议(采取的动作)。在图书阅读过程中可能会出现3种情况: 是否疲倦、是否对内容感兴趣、对书中的内容是否感到糊涂。如果回答是肯定的,则使用“Y”标记;如果回答是否定的,则使用“N”标记,那么这3种情况可以有23=8种组合,针对这8种组合,阅读指南给读者提供了4条建议:回到本章开头重读、继续读下去、跳到下一章去读、停止阅读并休息,据此制作的阅读指南决策表如下表所示。
表2-3-1 图书阅读指南决策表
问题与建议 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | |
条件 | C1: 疲倦吗? | Y | Y | Y | Y | N | N | N | N |
C2: 感兴趣吗? | Y | Y | N | N | Y | Y | N | N | |
C3: 糊涂吗? | Y | N | Y | N | Y | N | Y | N | |
动作 | a1:重读 | √ | |||||||
a2:继续 | √ | ||||||||
a3:跳到下一章 | √ | √ | |||||||
a4:休息 | √ | √ | √ | √ | |||||
决策表通常由4个部分组成,具体如下:
(1)条件桩: 列出问题的所有条件,除了某些问题对条件的先后次序有要求之外,通常决策表中所列条件的先后次序都无关紧要。
(2)条件项: 条件项就是条件桩的所有可能取值。
(3)动作桩: 动作桩就是问题可能采取的操作,这些操作一般没有先后次序之分。
(4)动作项: 指出在条件项的各组取值情况下应采取的动作。
在实际测试中,条件桩往往很多,而且每个条件桩都有真假两个条件项,有n个条件桩的决策表就会有2n条规则,如果每条规则都设计一个测试用例,不仅工作量大,而且有些工作量可能是重复且无意义的。例如在表2-3-1中,第1、2条规则,第1条规则取值为: Y、Y、Y,执行结果为“停止阅读并休息”,第2条规则取值为: Y、Y、N,执行结果也为“停止阅读并休息”,对于这两条规则来说,前两个问题的取值相同,执行结果一样。因此第3个问题的取值对结果并无影响,这个问题就称为无关条件项,使用“-”表示,忽略无关条件项,可以将这两条规则进行合并。
将规则进行合并,可以减少重复的规则,相应地减少测试用例的设计,这样可以大大降低软件测试的工作量。图书阅读指南决策表最初有8条规则,进行合并之后,只剩下5条规则,简化后的图书阅读指南决策表如下表所示。
表2-3-2 简化后的图书阅读指南决策表
条件与动作 | 1-4 | 5 | 6 | 7-8 | |
条件 | C1:疲倦吗? | Y | N | N | N |
C2:感兴趣吗? | - | Y | Y | N | |
C3:糊涂吗? | - | Y | N | - | |
动作 | a1:重读 | √ | |||
a2:继续 | √ | ||||
a3:跳到下一章 | √ | ||||
a4:休息 | √ | ||||

