软件测试——决策表法
实现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,什么是决策表法 决策表是把作为条件的所有输入的各种组合值和它对应的输入值都罗列出来而形成的表格. 2,适用场所 如果输入输出比较多,输入之间和输出之间相互制约的条件比较多 ...
- 实验3 黑盒测试:决策表法及测试用例设计
实验3 黑盒测试:决策表法及测试用例设计 一.实验目的 1.掌握决策表的概念. 2.掌握决策表测试用例设计法. 二.实验任务 以下三个任务.至少完成一个 1.对NextDate问题运用决策表法设计测试 ...
- 软件测试初始决策表,软件测试决策表
<软件测试决策表>由会员分享,可在线阅读,更多相关<软件测试决策表(15页珍藏版)>请在人人文库网上搜索. 1.软件测试实验报告题目 : 决策表法的使用 学号:姓名:教师:东南 ...
- 黑盒测试技术中的等价类划分法、边界值分析法、因果图法和决策表法进行测试用例设计
一.实验目的 1.能熟练应用黑盒测试技术中的等价类划分法.边界值分析法.因果图法和决策表法进行测试用例设计. 2.对测试用例进行优化设计 二.实验环境 Windows系统+ Office工具 三.实验 ...
- 黑盒测试技术(Decision Tables 决策表法,又称判定表法)——软件质量保证与测试
健壮性最强,考虑情况最全面 Decision Tables 决策表法,又称判定表法 前言 一.认识决策表 二.例题 例题一 例题二 例题三 例题四 例题五 例题六 总结 前言 一.认识决策表 决策表就 ...
- 软件质量测试决策表和判定表,黑盒测试技术(Decision Tables 决策表法,又称判定表法)软件质量保证与测试...
-------------------- 健壮性最强,考虑情况最全面 ### Decision Tables 决策表法,又称判定表法 ### * 前言 * 一.认识决策表 * 二.例题 * * * 例 ...
- 【大学生软件测试基础】图书阅读指南 - 决策表法
图书阅读指南 v图书阅读过程中可能会出现3种情况 ● 是否疲倦. ● 是否对内容感兴趣. ● 对书中的内容是否感到糊涂. 如果回答是肯定的,则使用"Y"标记:如果回答是否定的 ...
- 软件测试---正交试验法
正交试验法(简单的做个比较,深入不懂.....) 使用到的工具:正交表 内涵:从大量的实验数据中找到合适的实验数据组合 涉及数学原理:<概率论><线性代数><数理统计&g ...
- 功能测试技术——决策表法
一.决策表的概念 在一些数据处理问题当中,某些操作的实施依赖于多个逻辑条件的组合,即:针对不同逻辑条件的组合值,分别执行不同的操作. 决策表就是分析和表达多逻辑条件下执行不同操作情况的工具. 二.决策 ...
- 软件测试 - 边界值法
文章目录 介绍 等价类划分法的区别 常见的边界值 步骤 案例 介绍 边界值分析法就是对输入或输出边界值进行测试的,也是一种黑盒测试.边界值分析法通常作为等价类划分法的补充,其测试用例来自等价类的边界: ...
最新文章
- Python编程基础:第七节 字符串切片String Slicing
- Tomcat 安装与使用
- Source Insight使用技巧
- 第二阶段冲刺总结01
- 【原创手写笔记】面试准备,关于决策树算法你需要知道的那些
- IntelliJ IDEA 必备的快捷键大全
- 生产环境一次诡异的空指针问题,反转了4次
- coturn NAT穿透服务器搭建
- 达芬奇的十大经典名画解读
- 【深度】关于跨境出口B2C,你只需要看这篇文章!从“产品、物流、流量”三个维度分析出口B2C电商
- 【教程篇】手机卡刷Rom详细教程
- 机械制造作业考研题目答案分享——回转体的加工
- 【一些好听的英文歌曲】
- 线程池之ForkJoinPool
- olivettifaces人脸识别之思考
- prototype.js详解
- n阶矩阵乘以n阶矩阵的朴素做法
- 最好用的项目流程管理工具 OmniPlan Pro 4.3.2 Mac版(内附安装包链接)
- 英语语法汇总(14.it的用法)
- CF1569D Inconvenient Pairs