设计软件测试的判定表可以按照以下步骤进行:
确定规则的个数
根据输入的条件数据计算出规则的个数。如果有N个条件,那么规则一共有2^N个。
列出所有的条件桩和动作桩
条件桩是影响结果的条件,动作桩是由于所有条件组合后可能产生的结果。
填入条件项和动作项
对各条件项进行标识,一般使用1和0来标识,当该条件选中时使用1来标识,当条件不选中时使用0来标识。需要将条件项中所有条件组合的情况标识出来,根据条件的情况来确定动作项,对动作项进行标识。
简化和合并相似规则
简化判定表是将相似规则(即表中的列)进行合并,以减少测试用例,当然它是以牺牲测试用例充分性为代价的。简化的过程为,首先找到判定表中输出完全相同的两列,观察它们的输入是否相似。例如只有一个输入不同时,说明不管该输入取何值,输出都是一样的。
示例
假设有一个软件功能需要根据用户的年龄和收入来决定是否允许购买会员,输入条件为年龄(A)和收入(I),输出为是否允许购买(M)。
确定规则的个数
年龄有两个取值:0-17岁,18-64岁,65岁及以上。
收入有两个取值:低收入,中等收入,高收入。
因此,总共有2^2 = 4条规则。
列出所有的条件桩和动作桩
条件桩:年龄(A),收入(I)。
动作桩:允许购买(M),不允许购买(N)。
填入条件项和动作项
年龄:
0-17岁:0
18-64岁:1
65岁及以上:2
收入:
低收入:0
中等收入:1
高收入:2
动作项:
允许购买(M)
不允许购买(N)
填入后得到初始判定表:
```
A | I | M| N
--+---+------
0 | 0 | N| N
0 | 1 | N| N
0 | 2 | N| N
1 | 0 | N| N
1 | 1 | M| N
1 | 2 | M| N
2 | 0 | N| N
2 | 1 | N| N
2 | 2 | M| N
```
简化和合并相似规则
观察上述判定表,发现所有年龄为18-64岁且收入为任意值的情况下,输出都是“允许购买(M)”。因此,可以将这一列简化为:
```
A | I | M
--+---+------
0 | 0 | N
0 | 1 | N
0 | 2 | N
1 | 0 | M
1 | 1 | M
1 | 2 | M
2 | 0 | N
2 | 1 | N
2 | 2 | M
```
通过以上步骤,我们设计了一个针对该软件功能的判定表,并进行了简化,以减少测试用例的数量,同时保持测试的充分性。