【软件测试】 闰年判定以及输入问题思考

闰年(Leap Year)是为了弥补因人为历法规定造成的年度天数与地球实际公转周期的时间差而设立的。补上时间差的年份为闰年。闰年共有366天。其中二月为29天,闰年,每四年一次,每一百年不是闰年,每四百年又是一次闰年。

测试中,我们要编写如下逻辑结构的闰年测试代码:

1 获取年份信息

2 测试是否为4的公倍数 如果不是,则不是闰年

3 如果是,继续测试是否是100的公倍数如果不是 则是闰年

4 如果是,继续测试是否是400的公倍数,如果是则是闰年,如果不是则不是闰年

那么,最简单的代码实现

1 public static bool Year(int year){
2   return ((year % 4 == 0 && year % 100 != 0)||(year % 400 == 0))
3 }

  不过这里考虑到难以处理错误(全部在一行内处理),所以我们用另一种方式

 1          public static bool isLeapYear(int year)
 2          {
 3              if (year % 400 == 0)
 4                 return true;
 5              if (year % 100 == 0)
 6                  return false;
 7              if (year % 4 == 0)
 8              return true;
 9              return false;
10          }

考虑到输入问题,我们要对year进行判断,要求这是一个大于0的数字,因为year在申明时是int,所以程序会自行确定非int

 1             try{
 2              int year = int.Parse(textBox1.Text);
 3              if (isLeapYear(year))
 4                 form2.label1.Text = year+"是闰年"; 
 5              else
 6                  form2.label1.Text = year+"不是闰年";
 7             }catch(Exception ex)
 8             {
 9             form2.label1.Text = "输入错误";
10             }

进行年份判断

1             try{
2             int year = int.Parse(textBox1.Text);
3            
4             if (isLeapYear(year)>=0)
5             
6             }catch(Exception ex)
7             {
8                 form2.label1.Text = "请输入大于0的年份";
9             }

这样就能得到正确结果

其中值得一提的是,因为年份是正无穷的,所以设计测试用例的基础是已知闰年判断规则,对各个可能的情况进行分析输入

结果可能要有如下情况

1 不是4的公倍数年份(1931)

2 是4的公倍数年份(2004)

3 100的公倍数年份(100 1900 2000)

4 400的公倍数年份(400 2400)

进行黑盒测试。

原文地址:https://www.cnblogs.com/zzzzzshui/p/4395482.html