等价类划分法定义:将用户所有可能输入的数据,划分为若干中情况,把每一种情况找一些具有
代表性的数据作为测试用例,而这种选择测试类的方法,就叫做等价类划分,它是属于黑盒测试的;
****用等价类划分法解决下列问题****
NextDate 函数包含三个变量:month 、 day 和 year ,函数的输出为输入日期后一天的日期。 例如,输入为 2020年3月7日,则函数的输出为 2020年3月8日 。要求输入变量 month 、 day 和 year 均为整数值,并且满足下列条件:
①1≤month≤12
②1≤day≤31
③1920≤year≤2050
作答格式:等价类表+测试用例表
*********科普*********
三五七八十腊 三十一天永不差,四六九冬三十整,惟有二月二十八,闰年还要把一日加
--闰年的判断--(中国的年有平年、闰年之分,基本是4年一闰,其余都是平年,第一次接触‘闰’这个概念是学习鲁迅先生的短片小说“少年闰土”,但是他叫闰土,是因为他是闰月出生,五行缺土,闰月是个很复杂的概念;啊~,现在有点儿明白鲁迅先生的小说为何受欢迎了,童年真的不能回忆呀)
普通闰年:能被4整除
世纪闰年:能被400整除
闰年2月29天,平年2月28天
***********************
题目分析:输入变量:year\month\day
问题关键:
年:分闰年和平年
月:1、3、5、7、8、10、12-------永远31天||||||||||但8月31~下一天~9月1--------12月31天~下一天~下一年的1月1
4、6、9、11---------永远30天
2月--闰年29天,平年28天
日:分类--1~27、28、29、30、31
1 public static ArrayList NextDate(int nowYear, int nowMonth, int nowDay) 2 { 3 ArrayList arr = new ArrayList(); 4 if (nowYear <= 3000 && nowYear >= 1000 && nowMonth <= 12 && nowMonth >= 1 && nowDay >= 1 && nowDay <= getDays(nowYear, nowMonth)) 5 { 6 int nextYear; 7 int nextMonth; 8 int nextDay; 9 if (nowDay == getDays(nowYear, nowMonth)) 10 { 11 if (nowMonth == 12) 12 { 13 nextYear = nowYear + 1; 14 nextMonth = 1; 15 nextDay = 1; 16 } 17 else 18 { 19 nextYear = nowYear; 20 nextMonth = nowMonth + 1; 21 nextDay = 1; 22 } 23 } 24 else 25 { 26 nextYear = nowYear; 27 nextMonth = nowMonth; 28 nextDay = nowDay + 1; 29 } 30 arr.Add(nextYear); 31 arr.Add(nextMonth); 32 arr.Add(nextDay); 33 } 34 else 35 { 36 arr.Add("错误年份"); 37 arr.Add("错误月份"); 38 arr.Add("错误天数"); 39 } 40 return arr; 41 } 42 protected static bool isRun(int year) 43 { 44 if (year % 4 == 0 && year % 400 != 0) 45 { 46 return true; 47 } 48 return false; 49 } 50 protected static int getDays(int year, int month) 51 { 52 int days = 0; 53 switch (month) 54 { 55 case 1: 56 case 3: 57 case 5: 58 case 7: 59 case 8: 60 case 10: 61 case 12: days = 31; break; 62 case 2: days = isRun(year) ? 29 : 28; break; 63 case 4: 64 case 6: 65 case 9: 66 case 11: days = 30; break; 67 } 68 return days; 69 }