第三次作业_105032014078
1、修正流程图:

2、测试用例设计:
|
覆盖方法 |
用例号 |
输入 |
期望输出 |
实际输出 |
通过 |
时间 |
|
语句覆盖 |
1 |
1995 12 19 |
1995年12月20日 |
1995年12月20日 |
通过 |
2017.3.22 |
|
语句覆盖 |
2 |
1995 4 15 |
1995年4月16日 |
1995年4月16日 |
通过 |
2017.3.22 |
|
语句覆盖 |
3 |
1995 2 28 |
1995年3月1日 |
1995年3月1日 |
通过 |
2017.3.22 |
|
判定覆盖 |
4 |
1911 12 1 |
年份超过范围 |
年份超过范围 |
通过 |
2017.3.22 |
|
判定覆盖 |
5 |
1912 13 1 |
月份超过范围 |
月份超过范围 |
通过 |
2017.3.22 |
|
判定覆盖 |
6 |
1912 12 32 |
日期超过范围 |
日期超过范围 |
通过 |
2017.3.22 |
|
判定覆盖 |
7 |
2015 4 30 |
2015年5月1日 |
2015年5月1日 |
通过 |
2017.3.22 |
|
判定覆盖 |
8 |
2016 2 29 |
2016年3月1日 |
2016年3月1日 |
通过 |
2017.3.22 |
|
判定覆盖 |
9 |
2015 2 28 |
2015年3月1日 |
2015年3月1日 |
通过 |
2017.3.22 |
|
判定覆盖 |
10 |
2015 2 29 |
日期超过范围 |
日期超过范围 |
通过 |
2017.3.22 |
|
判定覆盖 |
11 |
2016 2 30 |
日期超过范围 |
日期超过范围 |
通过 |
2017.3.22 |
|
判定覆盖 |
12 |
2016 4 31 |
日期超过范围 |
日期超过范围 |
通过 |
2017.3.22 |
|
条件覆盖 |
13 |
1913 4 26 |
1913年4月27日 |
1913年4月27日 |
通过 |
2017.3.29 |
|
条件覆盖 |
14 |
1913 2 28 |
1913年3月1日 |
1913年3月1日 |
通过 |
2017.3.29 |
|
条件覆盖 |
15 |
1913 1 20 |
1913年1月21日 |
1913年1月21日 |
通过 |
2017.3.29 |
|
条件覆盖 |
16 |
1911 13 32 |
年份超过范围 |
年份超过范围 |
通过 |
2017.3.29 |
|
判定/条件覆盖 |
17 |
1995 12 19 |
1995 12 20 |
1995 12 20 |
通过 |
2017.3.29 |
|
判定/条件覆盖 |
18 |
1911 13 35 |
年份超过范围 |
年份超过范围 |
通过 |
2017.3.29 |
|
组合覆盖 |
19 |
2035 13 33 |
年份超过范围 |
年份超过范围 |
通过 |
2017.3.29 |
|
组合覆盖 |
20 |
2012 1 2 |
2012年1月3日 |
2012年1月3日 |
通过 |
2017.3.29 |
|
路径覆盖 |
21 |
2016 2 29 |
2016年2月29日 |
2016年2月29日 |
通过 |
2017.3 29 |
|
路径覆盖 |
21 |
2005 11 30 |
2005年12月1日 |
2005年12月1日 |
通过 |
2017.3.29 |
|
路径覆盖 |
22 |
2005 5 31 |
2005年6月1日 |
2005年6月1日 |
通过 |
2017.3 29 |
3、单元测试框架:
package File; import static org.junit.Assert.*; import org.junit.After; import org.junit.Test; public class NextDayTest { @Test public void testNextdate() { assertEquals("1913年4月27日", NextDay.nextdate(1913, 4, 26)); assertEquals("1913年3月1日", NextDay.nextdate(1913, 2, 28)); assertEquals("年份超过范围", NextDay.nextdate(1911, 13, 31)); assertEquals("月份超过范围", NextDay.nextdate(1912, 13, 1)); assertEquals("日期超过范围", NextDay.nextdate(1912, 12,32)); assertEquals("2015年5月1日", NextDay.nextdate(2015, 4, 30)); assertEquals("2016年3月1日", NextDay.nextdate(2016, 3, 1)); assertEquals("2015年11月1日", NextDay.nextdate(2015, 10, 31)); } @After public void testMain() throws Exception{ fail("Not yet implemented"); } }
3、测试结果:
测试结果中出现了两个错误,在通过main()方法调用的时候测试通过,后来发现错误原因是源程序中是在main函数中判定的,没有把所有的判定放在一个函数里面,所以出现了错误。

4、测试小结:
(1)在编写测试用例前理解回顾了老师上课讲的几种覆盖方法,在编写测试用例时,比起之前有了比较明确的方向,并且能够比较完整地写出每个分支中具有代表性地测试用例;
(2)本次白盒测试还采用了Junit单元测试框架,测试用例和预期结果写好可以执行自动测试,比main()方法调用方式更快更方便,但是在执行自动化测试时,有可能因为源程序的方法结构不够好,而出现一些错误;
(3)调试程序主要是使编写地程序能够编译通过,并且成功运行,在这个过程中没有检查程序中某一些部分的错误,而测试的目的在于找出能够成功运行的程序中的一些逻辑等方面的错误,是对已经编译通过的程序的进一步的完善,是程序安全的一个保障。
浙公网安备 33010602011771号