3.用决策表测试法测试以下程序:该程序有三个输入变量month、day、year(month、day和year均为整数值,并且满足:1≤month≤12和1≤day≤31),分别作为输入日期的月份、日、年份,通过程序可以输出该输入日期在日历上隔一天的日期。
例如,输入为2004年11月29日,则该程序的输出为2000年12月1日。
1)分析各种输入情况,列出为输入变量month、day、year划分的有效等价类。
2)分析程序规格说明,结合以上等价类划分的情况给出问题规定的可能采取的操作(即列出所有的动作桩)。
3)根据(1)和(2),画出简化后的决策表。
案例分析如下:
1)
month变量的有效等价类:
M1: {month=4,6,9,11}
M2: {month=1,3,5,7,8,10}
M3: {month=12}
M4: {month=2}
2)day变量的有效等价类:
D1:{1≤day≤26}
D2: {day=27}
D3: {day=28}
D4: {day=29}
D5: {day=30}
D6: {day=31}
3)year变量的有效等价类:
Y1: {year是闰年}
Y2:{year不是闰年}
4)考虑各种有效的输入情况,程序中可能采取的操作有以下六种:
a1: day+2
a2: day=2
a3: day=1
a4: month+1
a5: month=1
a6: year+1
4.判定表在功能测试中的应用
1)一些软件的功能需求可用判定表表达得非常清楚,在检验程序的功能时判定表也就成为一个不错的工具。如果一个软件的规格说明指出:
I.
当条件1和条件2满足,并且条件3和条件4不满足,或者当条件1、3和条件4满足时,要执行操作1。
II.
在任一个条件都不满足时,要执行操作2。
III.
在条件1不满足,而条件4被满足时,要执行操作3。 根据规格说明得到如下判定表: