软件测试——闰年

一、软件要求

  关于闰年(leap year)的判定,是非常简单的。给定一个年份,若该年能被4整除,但却不能被100整除,或者可以被400整除,则我们认定该年为闰年,否则便为平年。

  对于正常的用户,若按要求输入任意年份,我们都能给予判定是否为闰年。但是,对于一些非法用户,他们可能并不会按要求进行输入。比如,可能有点用户并不是输入的年份,而是一些字符串或非正整数,例如2012abc,-1868,2015.5等等。对于这些非法的输入,如果我们不做相应的处理,可能将会导致程序崩溃甚至造成更大的危害。

二、测试分析

  对于可能出现的情况,我做了如下分析:

编号 输入 期望输出
1 2012 2012 is leap year
2 1900 1900 is nonleap year
3 2000 2000 is nonleap year
4 2015 2015 is nonleap year
5 2015abc Input Invalid
6 2015.5 Input Invalid
7 -2015 Input Invalid

三、测试代码

#include <iostream>
#include <sstream>

using namespace std;

void CheckLeapYear(string year){
    for(int i = 0; i < year.size();i++){
        if(year.at(i)>‘9‘ || year.at(i) < ‘0‘){
            cout << "Input Invalid!"<< endl;
            return;
        }
    }

    stringstream ss;
    int num;
    ss << year;

    if(!ss.good()){
        cout << "stringstream error!" << endl;
    }
    ss >> num;
    if((num % 4 == 0 && num % 100 != 0)|| num % 400 == 0)
        cout << num << " is leap year!"<< endl;
    else
        cout << num << " is nonleap year!"<< endl;
}

int main()
{
    string year;
    cout << "Please input a year: ";
    while(cin >> year){
        CheckLeapYear(year);
        cout << "\nPlease input a year: ";
    }

    return 0;
}

  

四、测试结果

时间: 2024-11-14 15:50:33

软件测试——闰年的相关文章

软件测试——闰年测试

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

软件测试------判断闰年的输入框

1.题目要求 坐在最后一排看的不是很清楚,貌似老师给了个能判断闰年的输入框,然后问大家输入abcd会怎么样,结果是报错了. 我们的任务是把这个判断闰年的输入框搞出来并且让这个系统可以handle非法的输入. 2.实现方法 实现方法再续前缘(html+servlet),关键代码如下: 1 PrintWriter out = response.getWriter(); 2 String tmp = request.getParameter("year"); 3 out.println(&q

关于软件测试(4):闰年输入的判断以及非法输入的处理测试

针对这周的软件测试课程,讲解了非法输入的不正当处理会对程序造成不必要的损失,因此通过简单的闰年检测程序来处理关于闰年测试的非法输入. 一.需求分析 要求输入框输入年份,点击按钮,出现提示.并能有效的处理任何输入 二.测试用例 内容 取值 预期结果 被400整除 2000 是闰年 被100整除但不被400整除 1900 不是闰年 被4整除且不被100整除 1904 是闰年 不被4整除 1901 不是闰年 非数字字符 abc 非法输入 负数 -1234 非法输入 小数 2000.5 非法输入 空字符

软件测试:闰年判断

1 #include<stdio.h>  void main()  {    2 int year, leap;   3     scanf("%d",&year);  4         if (year%4==0)         {    if (year%100==0)     {     if (year%400==0)  leap=1;     5   6   7 else leap=0;  8         }  9         else  le

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

问题描述 输入年份,输出输入年份是否为闰年(不考虑非法输入) 一个年份是闰年的条件是: 该年份能被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

[软件测试学习]考虑到测试的代码编写/int.parse的非法输入—由一个简单的c#闰年检测程序说起

一个简单的C#的闰年检测程序 1.闰年检测的函数编写 当提起检测平年闰年时候,第一反应写出的代码 1 public static bool isLeapYear(int year){ 2 return ((year % 4 == 0 && year % 100 != 0)||(year % 400 == 0)) 3 } 但是这个并不易于测试和出现错后的修改,更改代码如下 1 public static bool isLeapYear(int year){ 2 bool check = ne

软件测试技术(四)——闰年判断器+ int.Parse错误如何解决

目标程序 本次所测试的目标程序是一个闰年判断器,我们知道,一般情况下年份被4整除就可以了,但是如果遇到百年的时候还需要被400整除,于是有了如下的逻辑判断: bool isRunNian = false; if (year > 0) { if ((year % 100 == 0 && year % 400 == 0) || (year % 100 != 0 && year % 4 == 0)) { isRunNian = true; } } 测试方法介绍—Syntax

软件测试-4 判断闰年的程序以及防止输入非法字符

一.题目 判断所输入的年份是否是闰年 二.程序实现 我继续使用javascript+HTML来实现: 不考虑异常的输入,判断闰年的程序如下: function isLeapYear( y ){ return ( y % 400 == 0 ) || ( y % 4 == 0 && y % 100 != 0 ); } 但是在实际使用时必须考虑是否有异常输入,所以我可以在调用该函数前检测一下输入,保证输入是合法的: function isInt(input){ var reg = /^[0-9]