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

闰年(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)

进行黑盒测试。

时间: 2024-10-17 03:35:12

【软件测试】 闰年判定以及输入问题思考的相关文章

软件测试——闰年测试

只要是对于需要记录年份的程序,闰年检测都是一个很重要的环节.公历的闰年规则如下:   1.普通年能被4整除且不能被100整除的为闰年.(如2004年就是闰年,1900年不是闰年) 2.世纪年能被400整除的是闰年.(如2000年是闰年,1900年不是闰年) 然而对于不正确的输入,程序必须对持做出反应,不能使异常情况阻碍程序的运行,下面是闰年检测的程序试例: 输入年份 结果 2000 闰年 1900 非闰年 -1600 非法输入 1864 闰年 saddsa 非法输入 代码实现: import j

闰年测试非法输入的处理 简单安卓app 20150406

在软件测试的课上,老师介绍了闰年测试.闰年测试旨在检测某一年份是否为闰年,计算方式为四年一闰,百年不闰,四百年再闰.使用安卓实现这个小程序. 界面代码如下: 1 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 2 xmlns:tools="http://schemas.android.com/tools" 3 android:layout_width=&quo

软件测试——闰年

一.软件要求 关于闰年(leap year)的判定,是非常简单的.给定一个年份,若该年能被4整除,但却不能被100整除,或者可以被400整除,则我们认定该年为闰年,否则便为平年. 对于正常的用户,若按要求输入任意年份,我们都能给予判定是否为闰年.但是,对于一些非法用户,他们可能并不会按要求进行输入.比如,可能有点用户并不是输入的年份,而是一些字符串或非正整数,例如2012abc,-1868,2015.5等等.对于这些非法的输入,如果我们不做相应的处理,可能将会导致程序崩溃甚至造成更大的危害. 二

使用switch语句编程,根据输入的年份判断是否为闰年,根据输入的月份判断这月有多少天

#include <stdio.h> int main() { int year, month, flag = 0; printf("Enter Year And Month:!\n"); scanf("%d %d", &year, &month); if(year % 4 ==0 && year % 100 != 0 || year % 400 ==0) { flag = 1; printf("您所输入的年份是

Python中判断是否为闰年,求输入日期是该年第几天

#coding = utf-8 def getLastDay(): y = int(input("Please input year :")) m = int(input("please input month :")) d = int(input("Please input day :")) s=0 if y <1: y=1 if m <1: m=1 if m>12: m=12 if d <1: d=1 mothday=

闰年的非法输入的问题

1.问题描述 输入年份,判断其是否为闰年. 2.判断条件 1)能被4整除且不能被100整除的为闰年. 2)能被100整除且被400整除的为闰年. 3.等价类划分 编号 有效等价类 编号 无效等价类 1 能被400整除 3 能被100整除不能被4整除   2 能被4整除不能被100整除 4 不能被4整除 5 非法输入(包括负数) 4.测试用例 编号 输入 覆盖等价类 输出 1 1600 1 1600是闰年 2 2012 2 2012是闰年 3 1700 3 1700非闰年 4 2014 4 201

c++字符串的输入的思考

字符串的输入,是学习c++的一个重点,也是一个极富有细节意味的知识点,如果你不了解这些细节,你可能会在写程序时犯错而一脸懵逼不知所措. 与此同时,我们要了解c++缓冲区的概念,程序的输入都建有一个缓冲区.输入的过程大概是这样的,一次输入结束,键盘会向缓冲区存入数据,而相应的读取函数会从缓冲区读取,我们来用具体的代码来演示一下缓冲区具体怎么工作: 仔细看上述代码,我的代码里定义了四个char类型的字符串,并且有cin输入,但是当我们输入一个具有空格的字符串时,直接输出了而忽略了人为的继续输入,原因

【软件测试】闰年问题(不考虑非法输入)

问题描述 输入年份,输出输入年份是否为闰年(不考虑非法输入) 一个年份是闰年的条件是: 该年份能被4整除但是不能被100整除或 该年份能被400整除 代码实现 import javax.swing.JOptionPane; import javafx.application.Application; import javafx.event.ActionEvent; import javafx.event.EventHandler; import javafx.geometry.Pos; impo

【软件测试】考虑闰年问题中的非法输入

问题提出 在上一篇中提到了闰年问题的实现以及测试,但是在上篇中并没有提及输入框中如果输入非法输入会发生什么问题 观察如下,当我们在输入框中输入"ab"时: 会出现下面java.lang.NumberFormatException: java.lang.NumberFormatException: For input string: "ab" at java.lang.NumberFormatException.forInputString(Unknown Sourc