上面已经讲过,决策表有四个部分:粗竖线的左侧是桩部分;右侧是项。横粗线的上面是条件项,下面是动作项。在上图的决策表中,如果C1、C2和C3都为真,则采取行动a1和a2。如果C1和C2都为真而C3为假,则采取行动a1和a3。在C1为真,C2为假的条件下,规则中的C3项叫做“不关心”项。不关心项有两种解释:条件无关或条件不适用。有时人们用“不适用(n/a)”表示后一种解释。
如果有二叉条件(真/假、是/否、0/1),则决策表的条件部分是旋转了90°的(命题逻辑)真值表。这种结构能够保证我们考虑了所有可能的条件值组合。如果使用决策表标识测试用例,那么决策表的这种完备性能够保证一种完备的测试。所有条件都是二叉条件的决策表叫做有限项决策表。如果条件可以有多个值,则对应的决策表叫做扩展项决策表。
决策表被设计为说明性的(与命令性相反),给出的条件没有特别的顺序,而且所选择的行动发生时也没有任何特定顺序。
①决策表技术适用于具有以下特征的应用程序:
●if-then-else逻辑很突出。
●输入变量之间存在逻辑关系。
●涉及输入变量子集的计算。
●输入与输出之间存在因果关系。
●很高的圈(McCabe)复杂度。(路径测试中会详细讲解)
②决策表不能很好地伸缩(有n个条件的有限项决策表有2的n次方条规则)。有多种方法可以解决这个问题---使用扩展项决策表、代数化简表,将大表“分解”为小表,查找条件项的重复模式。
③与其他技术一样,迭代会有所帮助。第一次标识的条件和动作可能不那么令人满意。把第一次得到的结果作为铺路石,逐渐改进,直到得到满意的决策表。