决策表法测试感想
将课本决策表法的例题做了一遍,发现决策表法确实测试严格,但是工作量也太大。
在做题的过程中发现主要有这些问题需要注意:
- 识别条件桩,需要分析问题本身,从适当的角度对输入进行划分。比如在题中,可能很容易注意到月份的划分里面2月分闰年与非闰年,但是将12月从31天的月份中剥离就不容易注意。
- 识别动作桩,需要对动作理解,能够在适当的层次表述动作。在这个题目中,层次太高就不能将动作进行合适的分解。
- 条件的组合策略,在组合决策表的条件时候,如果条件间组合位置不合适,在化简决策表的时候也会出现化简不完全的情况。
总的来说,决策表测试工作量太大了。
要求:NentDate函数输入年月日,输出下一天的日期。要求输入整数值,且满足以下条件:
Con1: 1≤month≤12
Con2: 1≤day≤31
Con3: 1900≤year≤2050
函数输入复杂性有来来源于每个月日期最大值不同,特别是在闰年的时候,2月最大从28增长成为29。对于这一类不可能动作,可以利用决策表法的“不可能”项表示。而且,由于输入之间有相互关系,所以不适合采用边界值法和等价类法。
对于每次操作,函数需要的动作有5种:
A1:day+1
A2:day=0
A3:month+1
A4:month=0
A5:year+1
对于输入来说,存在的条件项分为一下等价类
M1:{month有30天}
M2:{month有31天,除12月}//因为12月的时候会涉及到跨年的问题
M3:{month是12月}
M4:{month是2月}//因为2月在闰年会有29天
D1:{1≤day≤27}//不涉及跨月的情况
D2:{day=28}
D3:{day=29}
D4:{day=30}
D5:{day=31}
Y1:{leap year}
Y2:{not leap year}
可以构造决策表如下:
选项 |
规则 |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
|
条件 |
C1 |
month |
m1 |
m1 |
m1 |
m1 |
m1 |
m2 |
m2 |
m2 |
m2 |
m2 |
m3 |
m3 |
m3 |
m3 |
m3 |
m4 |
m4 |
m4 |
m4 |
m4 |
m4 |
m4 |
C2 |
day |
d1 |
d2 |
d3 |
d4 |
d5 |
d1 |
d2 |
d3 |
d4 |
d5 |
d1 |
d2 |
d3 |
d4 |
d5 |
d1 |
d2 |
d2 |
d3 |
d3 |
d4 |
d5 |
|
C3 |
year |
N |
N |
N |
N |
N |
N |
N |
N |
N |
N |
N |
NN |
N |
N |
N |
N |
y1 |
y2 |
y1 |
y2 |
N |
N |
|
动作 |
A1 |
不可能 |
|
|
|
|
T |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
T |
T |
T |
A2 |
day+1 |
T |
T |
T |
T |
T |
T |
T |
T |
T |
T |
T |
T |
T |
|
|||||||||
A3 |
day=1 |
|
T |
T |
T |
T |
T |
|
||||||||||||||||
A4 |
month+1 |
|
T |
T |
T |
T |
|
|||||||||||||||||
A5 |
month=1 |
|
T |
|
||||||||||||||||||||
A6 |
year+1 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
T |
|
|
|
|
|
|
|
N表示任意取值
对决策表化简
选项 |
|
1,2,3 |
4 |
5 |
6,7,8,9 |
10 |
11,12,13,14 |
15 |
16 |
17 |
18 |
19 |
20 |
21,22 |
|
条件 |
C1 |
month |
m1 |
m1 |
m1 |
m2 |
m2 |
m3 |
m3 |
m4 |
m4 |
m4 |
m4 |
m4 |
m4 |
C2 |
day |
d1-d3 |
d4 |
d5 |
d1-d4 |
d5 |
d1-d4 |
d5 |
d1 |
d2 |
d2 |
d3 |
d3 |
d4 |
|
C3 |
year |
N |
N |
N |
N |
N |
N |
N |
N |
y1 |
y2 |
y1 |
y2 |
N |
|
动作 |
A1 |
不可能 |
|
|
T |
|
|
|
|
|
|
|
|
T |
T |
A2 |
day+1 |
T |
T |
T |
T |
T |
|
||||||||
A3 |
day=1 |
|
T |
T |
T |
T |
T |
|
|||||||
A4 |
month+1 |
|
T |
T |
T |
T |
|
||||||||
A5 |
month=1 |
|
T |
|
|||||||||||
A6 |
year+1 |
|
|
|
|
|
|
T |
|
|
|
|
|
|
根据决策表测试设计测试用例
测试用例 |
month |
day |
year |
预期输出 |
1,2,3 |
6 |
16 |
2001 |
1/7/2001 |
4 |
6 |
30 |
2001 |
17/6/2001 |
5 |
6 |
31 |
2001 |
不可能 |
6,7,8,9 |
1 |
16 |
2001 |
17/1/2001 |
10 |
1 |
31 |
2001 |
1/2/2001 |
11,12,13,14 |
12 |
16 |
2001 |
17/12/2001 |
15 |
12 |
31 |
2002 |
1/1/2002 |
16 |
2 |
16 |
2001 |
17/2/2001 |
17 |
2 |
28 |
2004 |
29/2/2004 |
18 |
2 |
28 |
2001 |
1/3/2001 |
19 |
2 |
29 |
2004 |
1/2/2004 |
20 |
2 |
29 |
2001 |
不可能 |
21,22 |
2 |
30 |
2001 |
不可能 |
时间: 2024-12-14 06:39:47