实现PreDate,前一日函数PreDate是NextDate的逆函数,即给定一个月份、日期、年,会返回前一天的日期。年的取值范围在1812到2017年。日的取值在1日到31日月的取值在1到12月之间。

一、代码如下:

package experiment2;import java.util.Scanner;public class PreDate {public static void main(String args[]){System.out.println("请输入日期:");Scanner sc = new Scanner(System.in); int year = sc.nextInt();int month = sc.nextInt();int day = sc.nextInt();if(year<1812||year>2017||month<1||month>31||day<1||day>31){System.out.println("不可能");}else{if(day==1){if(month==1){year=year-1;month=12;day=31;}else if(month==2||month==4||month==6||month==8||month==9||month==11){month=month-1;day=31;}else if(month==5||month==7||month==10||month==12){ month=month-1;day=30;}else{if(year%4==0&&year%100!=0||year%400==0){month=month-1;day=29;}else{month=month-1;day=28;}}System.out.println("该日期的前一天为"+year+"年"+month+"月"+day+"日");}else{if((month==1||month==3||month==5||month==7||month==8||month==10||month==12)&&day<=31) {day=day-1;System.out.println("该日期的前一天为"+year+"年"+month+"月"+day+"日");}else if((month==4||month==6||month==9||month==11)&&day<=30) {day=day-1;System.out.println("该日期的前一天为"+year+"年"+month+"月"+day+"日");}else if(month==2) {if((year%4==0&&year%100!=0||year%400==0)&&day<=29) {day=day-1;System.out.println("该日期的前一天为"+year+"年"+month+"月"+day+"日");}else if(day<=28) {day=day-1;System.out.println("该日期的前一天为"+year+"年"+month+"月"+day+"日");}else {System.out.println("不可能");}}else {System.out.println("不可能");}}}}
}

二、决策表分析过程如下

1. 定义条件桩、动作桩

1.1输入

—year

—month

—day

1.2为获得前一个日期,PreDate函数需执行的操作只有如下5种

—day变量值减1

—day变量值为31

—day变量值为30

—day变量值为28

—day变量值为29

—month变量值减1

—month变量值为12

—year变量值减1

1.3考虑规则个数

M1:{month:month为4或6或8或9或11月};

M2:{month:month为5或7或10或12月 };

M3:{month:month是1月};

M4: {month: month是2月};

M5:{month: month是3月};

D1:{day: day=1};

D2:{day:1<day≤28};

D3:{day:day=29};

D4:{day:day=30};

D5:{day:day=31};

Y1:{year:year是闰年};

Y2:{year:year不是闰年};

2.输入条件项动作项

规则

选项

1

2

3

4

5

6

7

8

9

10

11

条件

C1:year在

C2:month在

M1

M1

M1

M1

M1

M2

M2

M2

M2

M2

M3

C3:day在

D1

D2

D3

D4

D5

D1

D2

D3

D4

D5

D1

动作

A1:不可能

A2:day减1

A3:day变量值为31

A4:day变量值为30

A5:day变量值为29

A6:day变量值为28

A7:month变量值减1

A8:month变量值为12

A9:year变量值减1

规则

选项

12

13

14

15

16

17

18

19

20

21

22

条件

C1:year在

Y1

Y2

Y1

C2:month在

M3

M3

M3

M3

M4

M4

M4

M4

M4

M4

M5

C3:day在

D2

D3

D4

D5

D1

D2

D3

D3

D4

D5

D1

动作

A1:不可能

A2:day减1

A3:day变量值为31

A4:day变量值为30

A5:day变量值为29

A6:day变量值为28

A7:month变量值减1

A8:month变量值为12

A9:year变量值减1

规则

选项

23

24

25

26

27

条件

C1:year在

Y2

C2:month在

M5

M5

M5

M5

M5

C3:day在

D1

D2

D3

D4

D5

动作

A1:不可能

A2:day减1

A3:day变量值为31

A4:day变量值为30

A5:day变量值为29

A6:day变量值为28

A7:month变量值减1

A8:month变量值为12

A9:year变量值减1

3. 化简决策表如下

规则

选项

1

2~4

5

6

7~10

11

12~15

16

17

18

19

20~21

22

23

24~27

条件

C1:year在

Y1

Y2

Y1

Y2

C2:month在

M1

M1

M1

M2

M2

M3

M3

M4

M4

M4

M4

M4

M5

M5

M5

C3:day在

D1

D2~D4

D5

D1

D2~D5

D1

D2~D5

D1

D2

D3

D3

D4~D5

D1

D1

D2~D5

动作

A1:不可能

A2:day减1

A3:day变量值为31

A4:day变量值为30

A5:day变量值为29

A6:day变量值为28

A7:month变量值减1

A8:month变量值为12

A9:year变量值减1

4. 根据化简的决策表设计如下测试用例

测试用例

Year

Month

Day

预期输出

实际输出

Test1

2016

8

1

2016年7月31日

2016年7月31日

Test2~4

2015

11

29

2015年11月28日

2015年11月28日

Test5

2014

6

31

不可能

不可能

Test6

2013

5

1

2013年4月30日

2013年4月30日

Test7~10

2012

7

28

2012年7月27日

2012年7月27日

Test11

2011

1

1

2010年12月31日

2010年12月31日

Test12~15

2010

1

27

2010年1月26日

2010年1月26日

Test16

2009

2

1

2009年1月31日

2019年1月31日

Test17

2008

2

25

2008年2月24日

2008年2月24日

Test18

2008

2

29

2008年2月28日

2008年2月28日

Test19

2007

2

29

不可能

不可能

Test20~21

2006

2

30

不可能

不可能

Test22

2004

3

1

2004年2月29日

2004年2月29日

Test23

2003

3

1

2003年2月28日

2003年2月28日

Test24~27

2002

3

22

2002年3月21日

2002年3月21日

软件测试——决策表法相关推荐

  1. 软件测试—第八章黑盒测试之决策表法

    一,决策表法(因果图法) 1,什么是决策表法 决策表是把作为条件的所有输入的各种组合值和它对应的输入值都罗列出来而形成的表格. 2,适用场所 如果输入输出比较多,输入之间和输出之间相互制约的条件比较多 ...

  2. 实验3 黑盒测试:决策表法及测试用例设计

    实验3 黑盒测试:决策表法及测试用例设计 一.实验目的 1.掌握决策表的概念. 2.掌握决策表测试用例设计法. 二.实验任务 以下三个任务.至少完成一个 1.对NextDate问题运用决策表法设计测试 ...

  3. 软件测试初始决策表,软件测试决策表

    <软件测试决策表>由会员分享,可在线阅读,更多相关<软件测试决策表(15页珍藏版)>请在人人文库网上搜索. 1.软件测试实验报告题目 : 决策表法的使用 学号:姓名:教师:东南 ...

  4. 黑盒测试技术中的等价类划分法、边界值分析法、因果图法和决策表法进行测试用例设计

    一.实验目的 1.能熟练应用黑盒测试技术中的等价类划分法.边界值分析法.因果图法和决策表法进行测试用例设计. 2.对测试用例进行优化设计 二.实验环境 Windows系统+ Office工具 三.实验 ...

  5. 黑盒测试技术(Decision Tables 决策表法,又称判定表法)——软件质量保证与测试

    健壮性最强,考虑情况最全面 Decision Tables 决策表法,又称判定表法 前言 一.认识决策表 二.例题 例题一 例题二 例题三 例题四 例题五 例题六 总结 前言 一.认识决策表 决策表就 ...

  6. 软件质量测试决策表和判定表,黑盒测试技术(Decision Tables 决策表法,又称判定表法)软件质量保证与测试...

    -------------------- 健壮性最强,考虑情况最全面 ### Decision Tables 决策表法,又称判定表法 ### * 前言 * 一.认识决策表 * 二.例题 * * * 例 ...

  7. 【大学生软件测试基础】图书阅读指南 - 决策表法

    图书阅读指南 v图书阅读过程中可能会出现3种情况 ●  是否疲倦. ●  是否对内容感兴趣. ●  对书中的内容是否感到糊涂. 如果回答是肯定的,则使用"Y"标记:如果回答是否定的 ...

  8. 软件测试---正交试验法

    正交试验法(简单的做个比较,深入不懂.....) 使用到的工具:正交表 内涵:从大量的实验数据中找到合适的实验数据组合 涉及数学原理:<概率论><线性代数><数理统计&g ...

  9. 功能测试技术——决策表法

    一.决策表的概念 在一些数据处理问题当中,某些操作的实施依赖于多个逻辑条件的组合,即:针对不同逻辑条件的组合值,分别执行不同的操作. 决策表就是分析和表达多逻辑条件下执行不同操作情况的工具. 二.决策 ...

  10. 软件测试 - 边界值法

    文章目录 介绍 等价类划分法的区别 常见的边界值 步骤 案例 介绍 边界值分析法就是对输入或输出边界值进行测试的,也是一种黑盒测试.边界值分析法通常作为等价类划分法的补充,其测试用例来自等价类的边界: ...

最新文章

  1. Python编程基础:第七节 字符串切片String Slicing
  2. Tomcat 安装与使用
  3. Source Insight使用技巧
  4. 第二阶段冲刺总结01
  5. 【原创手写笔记】面试准备,关于决策树算法你需要知道的那些
  6. IntelliJ IDEA 必备的快捷键大全
  7. 生产环境一次诡异的空指针问题,反转了4次
  8. coturn NAT穿透服务器搭建
  9. 达芬奇的十大经典名画解读
  10. 【深度】关于跨境出口B2C,你只需要看这篇文章!从“产品、物流、流量”三个维度分析出口B2C电商
  11. 【教程篇】手机卡刷Rom详细教程
  12. 机械制造作业考研题目答案分享——回转体的加工
  13. 【一些好听的英文歌曲】
  14. 线程池之ForkJoinPool
  15. olivettifaces人脸识别之思考
  16. prototype.js详解
  17. n阶矩阵乘以n阶矩阵的朴素做法
  18. 最好用的项目流程管理工具 OmniPlan Pro 4.3.2 Mac版(内附安装包链接)
  19. 英语语法汇总(14.it的用法)
  20. CF1569D Inconvenient Pairs

热门文章

  1. AD9 设置网络标号作用域
  2. 【多多情报通】拼多多个人店铺怎么升级为企业店铺?怎么转让?
  3. iostream类 - C++输入输出(一)
  4. 百兆网络变压器:H81601S产品规格及建议配置的芯片型号
  5. 内连接和外联结连接的区别
  6. AT91RM9200 EK or DK开发参考
  7. 我的世界如何安装java环境变量_JDK安装与环境变量配置方法
  8. oracle建表唯一约束语句,oracle 详细建表语句
  9. BoM在企业管理中的重要作用
  10. cmmi3级资质认证办理流程是什么?周期多久