软件测试作业--等价类划分

等价类划分法定义:将用户所有可能输入的数据,划分为若干中情况,把每一种情况找一些具有

代表性的数据作为测试用例,而这种选择测试类的方法,就叫做等价类划分,它是属于黑盒测试的;

****用等价类划分法解决下列问题****

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天

***********************

题目分析:输入变量:yearmonthday

问题关键:

年:分闰年和平年

月: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     }
NextDate小程序

************* NextDate 函数的等价类*************

输入条件

有效等价类

唯一标识

无效等价类

唯一标识

year

1920-2050间的闰年

1

year<1920

12

1920-2050间的平年

2

year>2050

13

month

month=4,6,9,11

3

month<1

14

month=1,3,5,7,8,10

4

month>12

15

month=12

5

 

 

month=2

6

 

 

day

1<=day<=27

7

day<1

16

day=28

8

day>31

17

day=29

9

 

 

day=30

10

 

 

day=31

11

 

 

******************等价类测试用例*****************

覆盖测试用例编号

输入

期望输出

month

day

year

3-10-2

6

30

2007

2007/7/1

4-11-2

8

31

2007

2007/9/1

6-7-2

2

27

2007

2007/2/28

6-8-2

2

28

2007

2007/3/1

6-9-1

2

29

2004

2004/3/1

5-11-2

12

31

2007

2008/1/1

3-11-2

9

31

2007

不可能的输入日期

     6-9-2

2

29

2007

不可能的输入日期

6-10-2

2

30

2007

不可能的输入日期

15-7-2

15

9

2007

变量month无效

3-17-2

9

35

2007

变量day无效

3-7-13

9

9

2060

变量year无效

原文地址:https://www.cnblogs.com/daisy99lijing/p/12359261.html