测试用例设计——判定表法

前面两讲分别用等价类划分的方法边界值分析的方法阐述了如何对一个两位数加法器进行测试,以上两种方法,都是着重考虑输入条件,但未考虑输入条件之间的联系、相互组合等。考虑输入条件之间的相互组合,可能会产生一些新的情况,但要检查输入条件的组合不是一件容易的事情,即使把所有输入条件划分成等价类,他们之间的组合情况也相当多。那么,如果考虑输入条件之间的联系、相互组合是不是就没有办法进行测试了呢?

因此,必须考虑采用一种适合于描述对于多种条件的组合,相应产生多个动作的形式来考虑设计测试用例,这就需要利用因果图和判定表。由于因果图最终得到的是判定表,所以我们先介绍用判定表法设计测试用例。

判定表(Decision Table)是分析和表达多逻辑条件下执行不同操作的工具。在程序设计发展的初期,判定表就已被当作编写程序的辅助工具了,因为它可以把复杂的逻辑关系和多种条件组合的情况表达得既具体又明确。因此,在所有的黑盒测试方法中,基于判定表(也称决策表)的测试是最为严格、最具有逻辑性的测试方法。

判定表的概念:判定表是分析和表达多逻辑条件下执行不同操作的情况的工具。
判定表的优点:能够将复杂的问题按照各种可能的情况全部列举出来,简明并避免遗漏。因此,利用判定表能够设计出完整的测试用例集合。

在一些数据处理问题当中,某些操作的实施依赖于多个逻辑条件的组合,即:针对不同逻辑条件的组合值,分别执行不同的操作。判定表很适合于处理这类问题。

判定表通常由以下4部分组成:
条件桩—列出问题的所有条件,通常认为列出得条件的次序无关紧要。
条件项—针对条件桩给出的条件列出所有可能的取值,在所有可能情况下的真假值。
动作桩—列出问题规定的可能采取的操作,这些操作的排列顺序没有约束。
动作项—指出在条件项的各组取值情况下应采取的动作。

测试用例设计——判定表法
将任何一个条件组合的特定取值及相应要执行的动作称为一条规则。在判定表中贯穿条件项和动作项的一列就是一条规则。
构造决策表的5个步骤:
(1) 确定规则的个数。假如有n个条件,每个条件有两个取值(0,1),故有2n(2的n次方)种规则。
(2) 列出所有的条件桩和动作桩。
(3) 填入条件项。
(4) 填入动作项,得到初始判定表。
(5) 简化判定表,合并相似规则(相同动作)。

若表中有两条以上规则具有相同的动作,并且在条件项之间存在极为相似的关系,便可以合并。
合并后的条件项用符号“-”表示,说明执行的动作与该条件的取值无关,称为无关条件。

案例:某厂工资发放
描述、分析:
工资分为年薪制a1,月薪制a2;
错误程度分为普通a3,严重a4;
工资为a1的员工犯普通错误的扣工资2%(b1),犯严重错误扣工资4%(b2);
工资为a2的员工犯普通错误的扣工资4%(b3),犯严重错误扣工资8%(b4);
其中,a1和a2为互斥;b1,b2和b3,b4是互斥;a3和a4可以同时具备。
测试用例设计——判定表法
测试用例设计——判定表法
判定表的应用:
判定表测试法适用于具有以下特征的应用程序: if-then-else逻辑突出;输入变量之间存在逻辑关系;涉及输入变量子集的计算;输入与输出之间存在因果关系。

适用于使用判定表设计测试用例的条件:
1、规格说明以判定表形式给出,或较容易转换为判定表。
2、条件的排列顺序不会也不应影响执行的操作。
3、规则的排列顺序不会也不应影响执行的操作。
4、当某一规则的条件已经满足,并确定要执行的操作后,不必检验别的规则。
5、如果某一规则的条件要执行多个操作,这些操作的执行顺序无关紧要。