在所有的功能性测试方法中,基于决策表的测试方法最严格,因为决策表具有逻辑严格性。
7.1 决策表法
决策表如下表所示:
有4个部分:左侧是桩部分,右侧是条目部分,上面是条件部分,下面是行动部分。分别是:
(1)条件桩:C1、C2、C3。
(2)条件条目:规则1到规则8的具体条目,比如规则1的T T T部分,T表示为真,F表示为假。
(3)行动桩:A1、A2、A3、A4。
(4)行动条目:规则1到规则8的具体行动,不如规则1的X X部分,X表示会产生的行动。
条目部分的一列是一条规则,在规则指示的条件环境下采取什么行动,规则3中的C3条目叫"不关心"条目,主要有两种解释:条件无关或条件不适用,有时用"不适用(n/a)"表示
规则3、4,之所以是2条规则,就是因为不适用,可T、可F,所以是两条规则。
决策表的分类:
有限决策表:二叉条件,所有的条件都有2个取值
扩展条件决策边:条件有多个值
决策表被设计为说明性的(与命令性相反),给出的条件没有特别的顺序,而且所选择的行动发生时也没有任何特定顺序。
7.1.1表示方法
为了使用决策表标识测试用例,我们把条件解释为输入,把行动解释为输出,有时条件最终引用输入的等价类,行动引用被测软件的主要功能处理部分,这时的规则就解释为测试用例。由于决策表可以机械强制为完备的,因此可以有测试用例的完备集合。
有多种产生决策表的方法对测试人员更有用,一种很有用的风格是增加行动,以显示什么时候规则在逻辑上不可能满足。
7.1.2举例
(1)三角形问题: 4个条件、5个行动:
1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | |
C1:a、b、c构成三角形 | N | Y | Y | Y | Y | Y | Y | Y | Y |
C2:a=b? | - | Y | Y | Y | N | N | N | Y | N |
C3:a=c? | - | Y | Y | N | Y | Y | N | N | N |
C4:b=c? | - | Y | N | Y | Y | N | Y | N | N |
A1:非三角形 | × | ||||||||
A2:不等边三角形 | × | ||||||||
A3:等腰三角形 | × | × | × | ||||||
A4:等边三角形 | × | ||||||||
A5:不可能 | × | × | × |
(2)三角形问题: 6个条件、5个行动,把上例中第一个条件进行了细化,细化为3个条件:
1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | |
C1:a<b+c? | F | T | T | T | T | T | T | T | T | T | T |
C2:b<a+c? | - | F | T | T | T | T | T | T | T | T | T |
C3:c<a+b? | - | - | F | T | T | T | T | T | T | T | T |
C4:a=b? | - | - | T | T | F | T | F | F | F | F | |
C5:a=c? | - | - | T | F | T | F | T | T | F | F | |
C6:b=c? | - | - | T | T | T | F | T | F | T | F | |
A1:非三角形 | × | × | × | ||||||||
A2:不等边三角形 | × | ||||||||||
A3:等腰三角形 | × | × | × | ||||||||
A4:等边三角形 | × | ||||||||||
A5:不可能 | × | × | × |
(3)带有互斥条件的决策表:意味着"—"的条件必须失败,比如下表中月份只能在M1、M2和M3的一个中,不可能在2个中。
桩 | 1 | 2 | 3 |
C1:月份在M1中 | T | — | — |
C2:月份在M2中 | — | T | — |
C3:月份在M3中 | — | — | T |
A1 | |||
A2 | |||
A3 |
7.1.3 规则条数的统计
规则条数的统计,对于二叉条件,所有不关心"-"条件可以按2条计算,比如下表的第一条规则,有5个"-",规则条数是:2×2×2×2×2=32条。
桩 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 |
C1:a<b+c? | F | T | T | T | T | T | T | T | T | T | T |
C2:b<a+c? | - | F | T | T | T | T | T | T | T | T | T |
C3:c<a+b? | - | - | F | T | T | T | T | T | T | T | T |
C4:a=b? | - | - | - | T | T | F | T | F | F | F | F |
C5:a=c? | - | - | - | T | F | T | F | T | T | F | F |
C6:b=c? | - | - | - | T | T | T | F | T | F | T | F |
规则条数统计 | 32 | 16 | 8 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 |
A1:非三角形 | × | × | × | ||||||||
A2:不等边三角形 | × | ||||||||||
A3:等腰三角形 | × | × | × | ||||||||
A4:等边三角形 | × | ||||||||||
A5:不可能 | × | × | × |
决策表的处理流程:
初始:3条规则代表12条规则
桩 | 1 | 2 | 3 |
C1:月份在M1中 | T | — | — |
C2:月份在M2中 | — | T | — |
C3:月份在M3中 | — | — | T |
规则条数 | 4 | 4 | 4 |
A1 | |||
A2 | |||
A3 |
扩展:12条规则
1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | |
C1:月份在M1中 | T | T | T | T | T | T | F | F | T | T | F | F |
C2:月份在M2中 | T | T | F | F | T | T | T | T | T | F | T | F |
C3:月份在M3中 | T | F | T | F | T | F | T | F | T | T | T | T |
规则条数 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 |
A1:不可能 | ||||||||||||
A2:其它 |
去掉重复,增加遗漏:最后剩下8条规则
7.1.4 冗余和不一致分析
冗余:下表规则4和规则9重复
不一致:下表规则4和规则9不一致,整个决策表是不确定的,测试人员的基本原则是在决策表中小心使用不关心条目。也许是规则错了,也可能是个需求的错误。
桩 | 1-4 | 5 | 6 | 7 | 8 | 9 |
C1 | T | F | F | F | F | T |
C2 | — | T | T | F | F | F |
C3 | — | T | F | T | F | F |
A1 | × | × | × | — | — | — |
A2 | — | × | × | × | — | × |
A3 | × | — | × | × | × | — |