使用等价类划分法以及Junit的参数化测试,测试nextDate函数
需求
日期问题
测试以下程序:该程序有三个输入变量 month、day、year (month、day 和 year 均为整数值,并且满足:1 ≤ months ≤ 12、1 ≤ days ≤ 31 和 1900 ≤ year ≤ 2050),分别作为输入日期的月份、日、年份,通过程序可以输出该输入日期在日历上隔天的日期。例如,输入为 2004 年 11 月 30 日,则该程序的输出为 2004 年 12 月 1 日。
(1) 划分等价类,按照等价类划分法设计测试用例;
(2) 编写 nextDate 函数
(3) 掌握 Junit4 的用法,使用 Junit4 测试 nextdate 函数。
实现
(1)根据题目要求编写测试用例
1)划分等价类并编号
输入数据 | 有效等价类 | 无效等价类 |
---|---|---|
年 | (1) 1900到2050内的闰年整数 | (10) year<1900 |
(2) 1900到2050内的平年整数 | (11) year>2050 | |
(12) 其他输入 | ||
月 | (3) 1,3,5,7,8,10,12内的整数 | (13) month<1 |
(4) 4,6,9,11内的整数 | (14) 12<month | |
(5) 2 | (15) 其他输入 | |
日 | (6) 1~28 | (16) day<1 |
(7) 29 | (17) year为闰年 month=2时,29<day | |
(8) 30 | (18) year为非闰年 month=2时 28<day | |
(9) 31 | (19) month=1,3,5,7,8,10,12时,day>31 | |
(20) month=4,6,9,11时 30<day | ||
(21) day>31 | ||
(22) 其他输入 |
2)为有效等价类设计测试用例
测试数据 | 期望结果 | 覆盖范围 |
---|---|---|
2016 2 29 | 下一天是2016年3月1日! | (1)(5)(7) |
2017 1 28 | 下一天是2017年1月29日! | (2)(3)(6) |
2017 1 31 | 下一天是2017年2月1日! | (2)(3)(9) |
2017 4 30 | 下一天是2017年5月1日! | (2)(4)(8) |
3)为每一个无效等价类至少设计一个测试用例
输入数据 | 期望结果 | 覆盖范围 |
---|---|---|
1899 3 1 | 年的值不在指定范围之内 | (10) |
2051 3 1 | 年的值不在指定范围之内 | (11) |
205% 3 1 | 无效的输入日期! | (12) |
1901 -1 1 | 月的值不在指定范围之内 | (13) |
1901 13 1 | 月的值不在指定范围之内 | (14) |
1901 1% 1 | 无效的输入日期! | (15) |
1901 1 -1 | 日的值不在指定范围之内 | (16) |
2016 2 30 | 日的值不在指定范围之内 | (17) |
2017 2 29 | 日的值不在指定范围之内 | (18) |
2017 3 32 | 日的值不在指定范围之内 | (19) |
2017 4 31 | 日的值不在指定范围之内 | (20) |
2017 4 32 | 日的值不在指定范围之内 | (21) |
2017 4 3% | 无效的输入日期! | (22) |
(2)编写nextDate函数,使用Junit4测试执行测试
源代码文件地址
nextDate
函数
测试类
测试结果