判定表是分析和表达多种输入条件下系统执行不同动作的工具,它可以把复杂的逻辑关系和多种条件组合的情况表达得既具体又明确。判定表通常由 四部分组成,如图 8-14 所示。 (1)条件桩:列出系统所有输入,列出的输入次序 没有影响。 (2)动作桩:列出系统可能采取的操作,这些操作 的排列顺序没有约束。 (3)条件项:列出针对它左列输入条件的取值,在 所有可能情况下的真假值。 (4)动作项:列出在输入项的各种取值情况下应该采取的动作。 动作项和条件项指出了在条件项的各种取值情况下应该采取的动作,在判定表中贯穿条件项和 动作项的一列就是一条规则,可以针对每个合法输入组合的规则设计用例进行测试。 判定表测试用例设计方法的步骤如下: (1)确定规则的个数。 根据输入的条件数据计算出规则的个数,如果有 N 个条件,那么规则一共有 2N个,如 N 为 3 时,规则数为 23=8 个。 (2)列出所有的条件桩和动作桩。 条件桩是影响结果的条件,动作桩是由于所有条件组合后可能产生的结果。 (3)填入条件项和动作项。
对各条件项进行标识,一般使用 1 和 0 来标识,当该条件选中时使用 1 来标识,当条件不选中 时使用 0 来标识。需要将条件项中所有条件组合的情况标识出来,根据条件的情况来确定动作项, 对动作项进行标识。 (4)简化、合并相似规则。 简化判定表是将相似规则(即表中的列)进行合并,以减少测试用例,当然它是以牺牲测试用 例充分性为代价的。 简化的过程为,首先找到判定表中输出完全相同的两列,观察它们的输入是否相似。例如只有 一个输入不同时,说明不管该输入取何值,输出都是一样的。也就是说,该输入对输出是无影响的, 因此可以将这两列合并为一列,简化、合并相似规则。
(5)将每条规则转化为用例。 简化、合并后的判定表中的每一列可以规划为一个测试用例。 【实例】将中国象棋中走马规则的因果图转化为判定表。考虑到只要是在棋盘外,其他条件无法取值,结果就是不能移动。所以条件 1 可以单独考虑成 一个用例,其他条件一起做因果图和判定表。即 1、6、11、16 可以合并成一个用例,就是在落点 是棋盘外的情况下,结果直接为不能移动,不需要跟其他条件放在一起判断。这样就只剩下 17 个 测试用例。如果落点不构成“日”字,也就没有所谓的“绊马腿”判断,所以当条件 2 为 0 时,条 件 1 不必取值,这样 6、7、8、9 和 14、15、16、17 又能合并。