【软件测试】功能性测试方法(决策

题目

前一日函数 Pre Date 是 NextDate的逆函数,即给定一 个月份、日期、年,会返回前一天的日期。

年的取值在1812年到2017年。 

日的取值 在 1日到 31 日之间。 

月的取值 在 1到 12 月之间

测试程序实现

package test2;
import java.util.*;
public class Date {
	public static void main(String[] args)
	{
		int day=0,preday = 0,month = 0,premonth = 0, year = 0,preyear = 0,flag = 0,right = 0;
		while(right==0)
		{//提示从键盘输入年月日
			System.out.println("Input year:");
			Scanner sc = new Scanner(System.in);
			year = sc.nextInt();
			System.out.println("Input month:");
			Scanner sc1 = new Scanner(System.in);
			month = sc1.nextInt();
			System.out.println("Input day:");
			Scanner sc2 = new Scanner(System.in);
			day = sc2.nextInt();
			if(year<=2017&&year>=1812)//判断是否在合法年份内
			{
				if((year%4==0&&year%100!=0)||year%400==0)//判断闰年
				{
				     flag=1;
				}
				if(month==1){
					if(day<=31&&day>=1)
					{
						right=1;	
					}
					if(day==1){//判断一月的临界情况
					preyear=year-1;
					premonth=12;
					preday=31;
					}
					else{
						preyear=year;
						premonth=month;
						preday=day-1;
					}
					}
				if(month==2){
					if(flag==1&&(day<=29&&day>=1)||flag==0&&(day<=28&&day>=1))
					{
						right=1;	
					}
					if(day==1){//判断二月的临界情况
					preyear=year;
					premonth=1;
					preday=31;
					}
					else{
						preyear=year;
						premonth=month;
						preday=day-1;
					}
					}
				if(month==3){
					if(day<=31&&day>=1)
					{
						right=1;	
					}
					if(day==1&&flag==1){//当年为闰年时临界情况
					preyear=year;
					premonth=month-1;
					preday=29;
					}
					else{
					if(day==1&&flag==0){//当年为平年的临界情况
					preyear=year;
					premonth=2;
					preday=28;
					}
					else{
						preyear=year;
						premonth=month;
						preday=day-1;
					}
					}
				}
				if(month==4||month==6||month==9||month==11){//非特殊月份前一月为31天且当月为30天的月份
					if(day<=30&&day>=1)
					{
						right=1;
					}
					if(day==1){
					preyear=year;
					premonth=month-1;
					preday=31;
					}
					else{
						preyear=year;
						premonth=month;
						preday=day-1;
					}
				}
				if(month==5||month==7||month==10||month==12){//非特殊月份前一月为30天且当月为31天的月份
					if(day<=31&&day>=1)
					{
						right=1;	
					}
					if(day==1){
					preyear=year;
					premonth=month-1;
					preday=30;
					}
					else{
						preyear=year;
						premonth=month;
						preday=day-1;
					}
				}
				if(month==8){//八月为特殊月份,当月和前一月均为31天,单独判断该月份
					if(day<=31&&day>=1)
					{
						right=1;
					}
					if(day==1){
					preyear=year;
					premonth=month-1;
					preday=31;
					}
					else{
						preyear=year;
						premonth=month;
						preday=day-1;
					}
				}
				
		}
			 if(right==0)//输入出错,提示重新输入
				    System.out.println("input error, please input again!");
				}

				System.out.println("the predate is "+preyear+"——"+premonth+"——"+preday);

				}
}

决策表

Y1={年:年是闰年}

Y2={年:年不是闰年}

M1={月:此月是1月}

M2={月:此月是2月}

M3={月:此月是3月}

M4={月:此月是8月}

M5={月:此月前一月有30天}

M6={月:此月前一月有31天,一月和十二月除外}

D1={日:日期=1}

D2={日:日期不等于1}

1

2

3

4

5

6

7

8

9

c1:月

M1

M1

M2

M2

M2

M3

M3

M3

M4

c2:日

D1

D2

D1

D2

D2

D1

D1

D2

D1

c3:年

-

-

-

Y1

Y2

Y1

Y2

行为:

a1:不可能

a2:日期减1

X

X

X

X

a3:日期复位

X

X

X

X

X

a4:月份减1

X

X

X

X

a5:月份复位

X

A6:年减1

X

 

10

11

12

13

14

c1:月

M4

M5

M5

M6

M6

c2:日

D2

D1

D2

D1

D2

c3:年

-

-

-

-

行为

a1:不可能

a2:日期减1

X

X

X

a3:日期复位

X

X

a4:月份减1

X

X

a5:月份复位

A6:年减1

测试结果

 

用例ID

输入数据

预期输出

实际输出

是否通过

备注

1

2016 1 1

2015 12 31

2015——12——31

2

2016 1 2

2016 1 1

2016——1——1

3

2016 2 1

2016 1 31

2016——1——1

4

2016 2 2

2016 2 1

2016——2——1

5

2017 2 2

2017 2 1

2017——2——1

6

2016 3 1

2016 2 29

2016——2——29

7

2017 3 1

2017 2 28

2017——2——28

8

2016 3 2

2016 3 1

2016——3——1

9

2017 8 1

2017 7 31

2017——7——31

10

2017 8 2

2017 8 1

2017——8——1

11

2017 2 29

输入无效

input error, please input again!

12

1900 2 29

输入无效

input error, please input again!

13

2018 13 1

输入无效

input error, please input again!


猜你喜欢

转载自blog.csdn.net/qq_36946026/article/details/80273645