测试链接:http://www.cnblogs.com/LixiaZhang/p/6803181.html
1.被测项目界面:
2.测试用例设计表:
(1)等价类测试:
输入条件 | 有效等价类 | 编号 | 无效等价类 | 编号 |
Month | Month=1,3,5,7,8,10 | 1 | Month<1 | 13 |
Month=4,6,8,9,11 | 2 | Month>12 | 14 | |
Month=2 | 3 | Month为非整数 | 15 | |
Month=12 | 4 | |||
Date | 1<=Day<=27 | 5 | Day<1 | 16 |
Day=28 | 6 | Day为非整数 |
17
| |
Day=29 | 7 | |||
Day=30 | 8 | |||
Day=31 | 9 | Day>31 | 18 | |
Year | Year为闰年 | 10 | Year<1912 | 19 |
Year非闰年 | 11 | Year>2050 | 20 | |
Year为整数 | 12 | Year为非整数 | 21 |
等价类测试用例:
测试用例 | 输入 | 期望输出 | 实际输出 | 覆盖等价类 |
通过 | ||||||
年 | 月 | 日 | 上一天 | 下一天 | 星期几 | 上一天 | 下一天 | 星期几 | |||
1 | 2017 | 2 | 20 | 2017年2月19日 | 2017年2月21日 | 一 | 2017年2月19日 | 2017年2月21日 | 一 | 3,5,11,12 | √ |
2 | 2016 | 12 | 28 | 2016年12月27日 | 2016年12月29日 | 三 | 2016年12月27日 | 2016年12月29日 | 三 | 4,6,10,12 | √ |
3 | 2017 | 5 | 29 | 2017年5月28日 | 2017年5月30日 | 一 | 2017年5月28日 | 2017年5月30日 | 一 | 1,7,11,12 | √ |
4 | 2017 | 6 | 30 | 2017年6月29日 | 2017年7月1日 | 五 | 2017年6月29日 | 2017年7月1日 | 五 | 2,8,11,12 | √ |
5 | 1911 | -1 | 31 | 年份超出范围! | 年份超出范围! | 9,12,13,19 | √ | ||||
6 | 2050.1 | 15.1 | -1.1 | 输入有误,请重新输入! | 输入有误,请重新输入! | 14,15,16,17 | √ | ||||
7 | 2011 | 12 | 51 | 月份超出范围! | 月份超出范围! | 4,11,12,18 | √ | ||||
8 | 2017 | 2 | 29 | 日期不合法! | 日期不合法! | 3,7,11,12 | √ | ||||
9 | 2017 | 12 | 32 | 日期超出范围! | 日期超出范围! | 4,11,12,18 | √ |
(2)边界值:
变量month,day,year的取值范围为:
1<=month<=12
1<=day<=31
1912<=year<=2050
边界值测试用例:
测试用例 | 输入 | 期望输出 | 实际输出 | 通过 | |||||||||
年 | 月 | 日 | 上一天 | 下一天 | 星期几 | 上一天 | 下一天 | 星期几 | |||||
1 | 2017 | -1 | 10 | 月份超出范围! | 月份超出范围! | √ | |||||||
2 | 2017 | 0 | 10 | 月份超出范围! | 月份超出范围! | √ | |||||||
3 | 2017 | 1 | 17 | 2017年1月16日 | 2017年1月18日 | 二 | 2017年1月16日 | 2017年1月18日 | 二 | √ | |||
4 | 2017 | 2 | 17 | 2017年2月16日 | 2017年2月18日 | 五 | 2017年2月16日 | 2017年2月18日 | 五 | √ | |||
5 | 2017 | 11 | 17 | 2017年11月16日 | 2017年11月18日 | 五 | 2017年11月16日 | 2017年11月18日 | 五 | √ | |||
6 | 2017 | 12 | 17 | 2017年12月16日 | 2017年12月18日 | 天 | 2017年12月16日 | 2017年12月18日 | 天 | √ | |||
7 | 2017 | 13 | 15 | 月份超出范围! | 月份超出范围! | √ | |||||||
8 | 2017 | 5 | -1 | 日期超出范围! | 日期超出范围! | √ | |||||||
9 | 2017 | 5 | 0 | 日期超出范围! | 日期超出范围! | √ | |||||||
10 | 2017 | 5 | 1 | 2017年4月30日 | 2017年5月2日 | 一 | 2017年6月2日 | 2017年5月31日 | 一 | √ | |||
11 | 2017 | 5 | 2 | 2017年5月1日 | 2017年5月3日 | 二 | 2017年5月1日 | 2017年5月3日 | 二 | √ | |||
12 | 2017 | 5 | 30 | 2017年5月29日 | 2017年5月31日 | 二 | 2017年5月29日 | 2017年5月31日 | 二 | √ | |||
13 | 2017 | 6 | 31 | 日期不合法! | 日期不合法! | √ | |||||||
14 | 2017 | 6 | 32 | 日期超出范围! | 日期超出范围! | √ | |||||||
15 | 1911 | 6 | 10 | 年份超出范围! | 年份超出范围! | √ | |||||||
16 | 1912 | 6 | 10 | 1912年6月9日 | 1912年6月11日 | 一 | 1912年6月9日 | 1912年6月11日 | 一 | √ | |||
17 | 1913 | 5 | 10 | 1913年5月9日 | 1913年5月11日 | 六 | 1913年5月9日 | 1913年5月11日 | 六 | √ | |||
18 | 2049 | 5 | 10 | 2049年5月9日 | 2049年5月11日 | 一 | 2049年5月9日 | 2049年5月11日 | 一 | √ | |||
19 | 2050 | 5 | 10 | 2050年5月9日 | 2050年5月11日 | 二 | 2049年5月9日 | 2049年5月11日 | 二 | √ | |||
20 | 2051 | 5 | 10 | 年份超出范围! | 年份超出范围! | √ |
(3)决策表:
NextDate:
条件桩如下:
M1={month:month=4,6,9,11}
M2={month:month=1,3,5,7,8,10,}
M3={month:month=12}
M4={month:month=2}
D1={day:1<=day<=27}
D2={day:day=28}
D3={day: day=29}
D4={day:day=30}
D5={day:day=31}
Y1={year: year为闰年}
Y2={year:year为非闰年}
动作桩如下:
R1:变量day加1操作;
R2:变量day复位操作;
R3:变量month加1操作;
R4:变量month复位操作;
R5:变量year加1操作;;
R6:日期不合法!
决策表:
选项规则 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | |
条件 | C1=month在 | M1 | M1 | M1 | M1 | M1 | M2 | M2 | M2 | M2 | M2 | M3 | M3 | M3 | M3 | M3 | M4 | M4 | M4 | M4 | M4 | M4 | M4 |
C2=day在 | D1 | D2 | D3 | D4 | D5 | D1 | D2 | D3 | D4 | D5 | D1 | D2 | D3 | D4 | D5 | D1 | D2 | D2 | D3 | D3 | D4 | D5 | |
C3=year在 | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | Y1 | Y2 | Y1 | Y2 | -- | -- | |
动作 | R1:day+1 | √ | √ | √ |
|
| √ | √ | √ | √ |
| √ | √ | √ | √ |
| √ | √ |
|
|
|
|
|
R2:day复位 |
|
|
| √ |
|
|
|
|
| √ |
|
|
|
| √ |
|
| √ | √ |
|
|
| |
R3:month+1 |
|
|
| √ |
|
|
|
|
| √ |
|
|
|
|
|
|
| √ | √ |
|
|
| |
R4:month复位 |
|
|
|
|
|
|
|
|
|
|
|
|
|
| √ |
|
|
|
|
|
|
| |
R5:yea+1 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
R6:日期不合法! |
|
|
|
| √ |
|
|
|
|
|
|
|
|
|
|
|
|
|
| √ | √ | √ |
简化的NextDate决策表:
规则 | 1~3 | 4 | 5 | 6~9 | 10 | 11~14 | 15 | 16 | 17 | 18 | 19 | 20 | 21,22 | |
条件 | C1=month在 | M1 | M1 | M1 | M2
| M2 | M3 | M3 | M4 | M4 | M4 | M4 | M4 | M4
|
C2=day在 | D1,D2 ,D3 | D4 | D5 | D1,D2,D3,D4 | D5 | D1,D2,D3 ,D4 | D5 | D1 | D2 | D2 | D3 | D3 | D4,D5 | |
C3=year在 | ------ | -- | -- | -------- | -- | -------- | -- | -- | Y1 | Y2 | Y1 | Y2 | ---- | |
动作 | R1:day+1 | √
|
|
| √
|
| √
|
| √ | √ |
|
|
|
|
R2:day复位 |
| √ |
|
| √ |
| √ |
|
| √ | √ |
|
| |
R3:month+1 |
| √ |
|
| √ |
|
|
|
| √ | √ |
|
| |
R4:month复位 |
|
|
|
|
|
| √ |
|
|
|
|
|
| |
R5:year+1 |
|
|
|
|
|
|
|
|
|
|
|
|
| |
R6:日期不合法! |
|
| √ |
|
|
|
|
|
|
|
| √ | √ |
测试用例:
测试用例 | 输入 | 期望输出 | 实际输出 | 通过 | ||
年 | 月 | 日 | 下一天 | 下一天 | ||
1~3 | 2017 | 4 | 15 | 2017年4月16日 | 2017年4月16日 | √ |
4 | 2017 | 4 | 30 | 2017年5月1日 | 2017年5月1日 | √ |
5 | 2017 | 4 | 31 | 日期不合法! | 日期不合法! | √ |
6~9 | 2017 | 1 | 17 | 2017年1月18日 | 2017年1月18日 | √ |
10 | 2017 | 1 | 31 | 2017年2月1日 | 2017年2月1日 | √ |
11`14 | 2017 | 12 | 17 | 2017年12月18日 | 2017年12月18日 | √ |
15 | 2017 | 12 | 31 | 2018年1月1日 | 2018年1月1日 | √ |
16 | 2017 | 2 | 15 | 2017年2月16日 | 2017年2月16日 | √ |
17 | 2004 | 2 | 28 | 2004年2月29日 | 2004年2月29日 | √ |
18 | 2017 | 2 | 28 | 2017年3月1日 | 2017年3月1日 | √ |
19 | 2004 | 2 | 29 | 2004年3月1日 | 2004年3月1日 | √ |
20 | 2017 | 2 | 29 | 日期不合法! | 日期不合法! | √ |
21,22 | 2017 | 2 | 30 | 日期不合法! | 日期不合法! | √ |
lastDate:
条件桩如下:
M1={
前一个月为30天,且本月为31天,month=5,7,10,12}M2={
前一个月为31天,且本月为30天,month=4,6,9,11 }M3={
前一个月为31天,且本月为31天,1月除外month=8}M4={
月份:month=1}M5={
月份:month=2}M6={
月份:month=3}D1={
日期:2<=day<=28}D2={
日期:day=1}D3={
日期:day=29}D4={
日期:day=30}D5={
日期:day=31}Y1={year是闰年}
Y2={year不是闰年}
动作桩如下:
R1=变量day减1操作;
R2=变量day为28;
R3=变量day为29;
R4=变量day为30;
R5=变量day为31;
R6=变量month减1;
R7=变量month为12;
R8=变量year减1操作;
R9=日期不合法!
决策表:
选项规则 | 1 | 2 | 3,4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13~15 | 16 | 17 | 18,19 ,20 | 21 | |
条件 | C1=month在 | M1 | M1 | M1
| M1 | M2 | M2 | M2 | M2 | M2 | M3 | M3 | M3
| M4 | M4 | M4
| M5 |
C2=day在 | D1 | D2 | D3,D4 | D5 | D1 | D2 | D3 | D4 | D5 | D1 | D2 | D3,D4 ,D5 | D1 | D2 | D3,D4, D5 | D1 | |
C3=year在 | -- | -- | ------ | -- | -- | -- | -- | -- | -- | -- | --
| -------- | -- | -- | -------- | -- | |
动作 | R1:day-1;
| √ |
| √
|
| √ |
| √ | √ |
| √ |
| √ | √ |
| √ | √ |
R2:day=28;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
R3:day=29;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
R4:day=30;
|
| √ |
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
R5:day=31;
|
|
|
|
|
| √ |
|
|
|
|
|
|
| √ |
|
| |
R6:month-1;
|
| √ |
|
|
| √ |
|
|
| √ |
|
|
|
|
|
| |
R7:month=12;
|
|
|
|
|
|
|
|
|
|
|
|
|
| √ |
|
| |
R8:year-1;
|
|
|
|
|
|
|
|
|
|
|
|
|
| √ |
|
| |
R9:日期不合法!
|
|
|
| √ |
|
|
|
| √ |
|
|
|
|
|
|
|
选项规则 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | |
条件 | C1=month在 | M5 | M5 | M5
| M5 | M5 | M5 | M6 | M6 | M6 | M6 | M6 | M6
|
C2=day在 | D2 | D3 | D3 | D4 | D5 | D6 | D1 | D2 | D2 | D3 | D4 | D3 | |
C3=year在 | -- | Y1 | Y2 | -- | -- | -- | -- | Y1 | Y2 | -- | --
| --- | |
动作 | R1:day-1;
|
| √ |
|
|
|
| √ |
|
| √ | √ | √ |
R2:day=28;
|
|
|
|
|
|
|
|
| √ |
|
|
| |
R3:day=29;
|
|
|
|
|
|
|
| √ |
|
|
|
| |
R4:day=30;
|
|
|
|
|
|
|
|
|
|
|
|
| |
R5:day=31;
| √ |
|
|
|
|
|
|
|
|
|
|
| |
R6:month-1;
| √ |
|
|
|
|
|
|
|
|
|
|
| |
R7:month=12;
|
|
|
|
|
|
|
|
|
|
|
|
| |
R8:year-1;
|
|
|
|
|
|
|
|
|
|
|
|
| |
R9:日期不合法!
|
|
| √ | √ | √ | √ |
|
|
|
|
|
|
测试用例:
测试用例 | 输入 | 期望输出 | 实际输出 | 通过 | ||
年 | 月 | 日 | 上一天 | 上一天 | ||
1 | 2017 | 5 | 10 | 2017年5月9日 | 2017年5月9日 | √ |
2 | 2017 | 5 | 1 | 2017年4月30日 | 2017年4月30日 | √ |
3,4 | 2017 | 5 | 29 | 2017年5月28日 | 2017年5月28日 | √ |
5 | 2017 | 5 | 31 | 2017年5月30日 | 2017年5月30日 | √ |
6 | 2017 | 4 | 10 | 2017年4月9日 | 2017年4月9日 | √ |
7 | 2017 | 4 | 1 | 2017年3月31日 | 2017年3月31日 | √ |
8,9 | 2017 | 4 | 29 | 2017年4月28日 | 2017年4月28日 | √ |
10 | 2017 | 4 | 31 | 2017年4月30日 | 2017年4月30日 | √ |
11 | 2017 | 8 | 4 | 2004年8月3日 | 2004年8月3日 | √ |
12 | 2017 | 8 | 1 | 2017年7月31日 | 2017年7月31日 | √ |
13,14,15 | 2017 | 8 | 31 | 2017年8月30日 | 2017年8月30日 | √ |
16 | 2017 | 1 | 4 | 2017年1月3日 | 2017年1月3日 | √ |
17 | 2017 | 1 | 1 | 2016年12月31日 | 2016年12月31日 | √ |
18~20 | 2017 | 1 | 29 | 2017年1月28日 | 2017年1月28日 | √ |
21 | 2017 | 2 | 4 | 2017年2月4日 | 2017年2月4日 | √ |
22 | 2017 | 2 | 1 | 2017年1月31日 | 2017年1月31日 | √ |
23 | 2004 | 2 | 29 | 2017年2月28日 | 2017年2月28日 | √ |
24 | 2017 | 2 | 29 | 日期不合法! | 日期不合法! | √ |
25,26,27 | 2017 | 2 | 30 | 日期不合法! | 日期不合法! | √ |
28 | 2017 | 3 | 4 | 2017年3月3日 | 2017年3月3日 | √ |
29 | 2004 | 3 | 1 | 2004年2月29日 | 2004年2月29日 | √ |
30 | 2005 | 3 | 1 | 2005年2月28日 | 2005年2月28日 | √ |
31~33 | 2017 | 3 | 29 | 2017年3月28日 | 2017年3月28日 | √ |
(3)测试结论
通过测试
(4)给开发同学的建议
1.程序功能都实现了,希望能够优化界面,或者添加些老师所没提到的功能。
2.把星期天改成星期日,显得比较书面化。