需求
日期问题
测试以下程序:该程序有三个输入变量 month、day、year (month、day 和 year 均为整数值,并且满足:1 ≤ months ≤ 12、1 ≤ days ≤ 31 和 1900 ≤ year ≤ 2050),分别作为输入日期的月份、日、年份,通过程序可以输出该输入日期在日历上隔天的日期。例如,输入为 2004 年 11 月 30 日,则该程序的输出为 2004 年 12 月 1 日。
(1) 边界值分析法设计测试用例;
(2) 判定表驱动法设计测试用例。
实现
一、边界值分析法
1、等价类
输入数据 | 有效等价类 |
---|---|
年 | (1) 1900到2050内的闰年整数 |
(2) 1900到2050内的平年整数 | |
月 | (3) 1,3,5,7,8,10内的整数 |
(4) 4,6,9,11内的整数 | |
(5) 2 | |
(6) 12 | |
日 | (7) 1~28 |
(8) 29 | |
(9) 30 | |
(10) 31 |
2、设计测试用例
测试用例 | month | day | Year | 针对的有效类 | 期望输出 |
---|---|---|---|---|---|
1 | 7 | 10 | 1889 | (1)(2) | 年的值不在指定范围之内 |
2 | 7 | 10 | 1900 | (1)(2) | 下一天是1900年7月11日! |
3 | 7 | 10 | 1901 | (1)(2) | 下一天是1901年7月11日! |
4 | 7 | 10 | 2049 | (1)(2) | 下一天是2049年7月11日! |
5 | 7 | 10 | 2050 | (1)(2) | 下一天是2050年7月11日! |
6 | 7 | 10 | 2051 | (1)(2) | 年的值不在指定范围之内 |
7 | 0 | 10 | 2019 | (3)~(6) | 月的值不在指定范围之内 |
8 | 1 | 10 | 2019 | (3)~(6) | 下一天是2019年1月11日! |
9 | 2 | 10 | 2019 | (3)~(6) | 下一天是2019年2月11日! |
10 | 11 | 10 | 2019 | (3)~(6) | 下一天是2019年11月11日! |
11 | 12 | 10 | 2019 | (3)~(6) | 下一天是2019年12月11日! |
12 | 13 | 10 | 2019 | (3)~(6) | 月的值不在指定范围之内 |
13 | 2 | 27 | 2019 | (5)(7)~(9) | 下一天是2019年2月28日! |
14 | 2 | 28 | 2019 | (5)(7)~(9) | 下一天是2019年3月1日! |
15 | 2 | 29 | 2019 | (5)(7)~(9) | 日的值不在指定范围之内 |
16 | 2 | 28 | 2020 | (5)(7)~(9) | 下一天是2020年2月29日! |
17 | 2 | 29 | 2020 | (5)(7)~(9) | 下一天是2020年3月1日! |
18 | 2 | 30 | 2020 | (5)(7)~(9) | 日的值不在指定范围之内 |
19 | 1 | 30 | 2019 | (3)(9)(10) | 下一天是2019年1月31日! |
20 | 1 | 31 | 2019 | (3)(9)(10) | 下一天是2019年2月1日! |
21 | 1 | 32 | 2019 | (3)(9)(10) | 日的值不在指定范围之内 |
22 | 4 | 30 | 2019 | (4)(9)(10) | 下一天是2019年5月1日! |
23 | 4 | 31 | 2019 | (4)(9)(10) | 日的值不在指定范围之内 |
24 | 4 | 32 | 2019 | (4)(9)(10) | 日的值不在指定范围之内 |
3、测试类
4、运行结果
二、判定表驱动法
1、条件桩
M 1 = { m o n t h : 这 个 月 有 30 天 } M_1 = \{month:这个月有30天\} M1={ month:这个月有30天}
M 2 = { m o n t h : 这 个 月 有 31 天 , 除 了 12 月 } M_2 = \{month:这个月有31天,除了12月\} M2={ month:这个月有31天,除了12月}
M 3 = { m o n t h : 这 个 月 是 12 月 } M_3 = \{month:这个月是12月\} M3={ month:这个月是12月}
M 4 = { m o n t h : 这 个 月 是 2 月 } M_4 = \{month:这个月是2月\} M4={ month:这个月是2月}
D 1 = { d a y : 1 ≤ d a y ≤ 27 } D_1 = \{day:1 \le day \le 27\} D1={ day:1≤day≤27}
D 2 = { d a y : d a y = 28 } D_2 = \{day:day=28\} D2={ day:day=28}
D 3 = { d a y : d a y = 29 } D_3 = \{day:day=29\} D3={ day:day=29}
D 4 = { d a y : d a y = 30 } D_4 = \{day:day=30\} D4={ day:day=30}
D 5 = { d a y : d a y = 31 } D_5 = \{day:day = 31\} D5={ day:day=31}
Y 1 = { y e a r : y e a r 是 闰 年 } Y_1 = \{year:year是闰年\} Y1={ year:year是闰年}
Y 2 = { y e a r : y e a r 不 是 闰 年 } Y_2 = \{year:year不是闰年\} Y2={ year:year不是闰年}
2、动作桩
A 0 = 不 可 能 A_0=不可能 A0=不可能
A 1 : d a y + 1 A_1:day+1 A1:day+1
A 2 : d a y 复 位 A_2:day复位 A2:day复位
A 3 : m o n t h + 1 A_3:month+1 A3:month+1
A 4 : m o n t h 复 位 A_4:month复位 A4:month复位
A 5 : y e a r + 1 A_5:year+1 A5:year+1
3、判定表
规则 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 |
---|---|---|---|---|---|---|---|---|---|---|---|
条件: |