黑盒测试:NextDate的决策表法及测试用例设计
该程序有三个输入变量month、day、year(month、day和year均为整数值,并且满足:1≤month≤12和1≤day≤31),分别作为输入日期的月份、日、年份,通过程序可以输出该输入日期在日历上隔一天的日期。
(1)分析各种输入情况,列出为输入变量month、day、year划分的有效等价类。
① month变量的有效等价类:
M1: {month=4,6,9,11} M2: {month=1,3,5,7,8,10}
M3: {month=12} M4: {month=2}
② day变量的有效等价类:
D1: {1≤day≤26} D2: {day=27} D3: {day=28} D4: {day=29} D5: {day=30} D6: {day=31}
③ year变量的有效等价类:
Y1: {year是闰年} Y2: {year不是闰年}
(2)分析程序规格说明,结合以上等价类划分的情况给出问题规定的可能采取的操作(即列出所有的动作桩)。
动作桩: A1: day+1 A2: day=1 A3: month+1 A4: month=1 A5: year+1 A6:不可能
(3)根据条件桩和动作桩,画出决策表。
| 规则1 | 规则2 | 规则3 | 规则4 | 规则5 | 规则6 | 规则7 | 规则8 | 规则9 | 规则10 | 规则11 |
月 | M1 | M1 | M1 | M2 | M2 | M3 | M3 | M4 | M4 | M4 | M4 |
日 | D1/D2/D3/D4 | D5 | D6 | D1/D2/D3/D4/D5 | D6 | D1/D2/D3/D4/D5 | D6 | D1/D2/D3 | D4 | D4 | D4/D5/D6 |
年 | Y1/Y2 | Y1/Y2 | Y1/Y2 | Y1/Y2 | Y1/Y2 | Y1/Y2 | Y1/Y2 | Y1/Y2 | Y1 | Y2 | Y1/Y2 |
动作 | A1 | A3,A2 | A6 | A1 | A3,A2 | A1 | A5,A4,A2 | A1 | A3,A2 | A6 | A6 |
(4)根据(1)和(2),画出简化后的决策表。
| 规则1,4,6,8 | 规则2,5,9 | 规则3,10,11 | 规则7 |
月 | M1,M2,M3,M4 | M1,M2,M4 | M1,M4 | M3 |
日 | D1,D2,D3,D4 | D5 | D6 | D6 |
年 | Y1,Y2 | Y1,Y2 | Y1,Y2 | Y1,Y2 |
动作 | A1 | A3,A2 | A6 | A5,A4,A2 |
(5)根据决策表设计测试用例,得到测试用例表
NextDate函数的决策表测试用例
测试用例编号 | 月份 | 日期 | 年 | 预期输出 | 实际输出 |
1--3 | 4 | 15 | 2011 | 2011年4月15日 | 请输入日期:年 月 日 2011 4 15 下一天是: 2011-4-16 |
4 | 4 | 30 | 2011 | 2011年5月11日 | 请输入日期:年 月 日 2011 4 30 下一天是: 2011-4-30 |
6 | 4 | 31 | 2011 | 不可能 | 请输入日期:年 月 日 2011 4 31 错误! 每年2,4,6,9,11月份,每月天数小于 31天! |
6--9 | 1 | 15 | 2011 | 2011年1月16日 | 请输入日期:年 月 日 2011 1 15 下一天是: 2011-1-16 |
10 | 1 | 31 | 2011 | 2011年2月1日 | 请输入日期:年 月 日 2011 1 31 下一天是: 2011-2-1 |
11--14 | 12 | 15 | 2011 | 2011年12月16日 | 请输入日期:年 月 日 2011 12 15 下一天是: 2011-12-16 |
15 | 12 | 31 | 2011 | 2011年1月1日 | 请输入日期:年 月 日 2011 12 31 下一天是: 2011-1-1 |
16 | 2 | 15 | 2011 | 2011年2月16日 | 请输入日期:年 月 日 2011 2 15 下一天是: 2011-2-16 |
17 | 2 | 28 | 2012 | 2012年2月29日 | 请输入日期:年 月 日 2011 2 28 下一天是: 2012-2-29 |
18 | 2 | 28 | 2011 | 2011年3月1日 | 请输入日期:年 月 日 2011 2 28 下一天是: 2011-3-1 |
19 | 2 | 29 | 2012 | 2012年3月1日 | 请输入日期:年 月 日 2011 2 29 下一天是: 2012-3-1 |
20 | 2 | 29 | 2011 | 不可能 | 请输入日期:年 月 日 2011 2 29 错误!非闰年二月必须小于 29 天! |
21,22 | 2 | 30 | 2011 | 不可能 | 请输入日期:年 月 日 2011 2 30 错误!非闰年二月必须小于 29 天! |