被测试代码链接:http://www.cnblogs.com/chenyp1996/p/6619103.html
1、修正流程图:根据新修改的代码,再次修正流程图
2、测试用例设计:依据所有的覆盖理论,分别写出相应的测试用例设计。
覆盖方法 | 用例号 | 输入 | 期待结果 | 实际结果 | 通过 | 时间 |
语句覆盖 | 1 | 2005 1 20 | 2005年1月21日 | 2005年1月21日 | 通过 | 2017/3/29 |
语句覆盖 | 2 | return | 谢谢使用,再见~ | 谢谢使用,再见~ | 通过 | 2017/3/29 |
判断覆盖 | 3 | 2014 10 32 | 日期超出范围 | 日期超出范围 | 通过 | 2017/3/29 |
判断覆盖 | 4 | 2017 04 32 | 日期不存在 | 日期不存在 | 通过 | 2017/3/29 |
判断覆盖 | 5 | 2012 8 8 | 2012年8月9日 | 2012年8月9日 | 通过 | 2017/3/29 |
判断覆盖 | 6 | A a a | 日期格式错误 | 日期格式错误 | 通过 | 2017/3/29 |
判断覆盖 | 7 | 1900 1 1 | 年份超出范围 | 年份超出范围 | 通过 | 2017/3/29 |
条件覆盖 | 8 | 1998 13 1 | 月份超出范围 | 月份超出范围 | 通过 | 2017/3/29 |
条件覆盖 | 9 | 2000 11 32 | 日期超出范围 | 日期超出范围 | 通过 | 2017/3/29 |
判断/条件覆盖 | 10 | 2050 22 32 | 月份超出范围 | 月份超出范围 | 通过 | 2017/3/29 |
判定/条件覆盖 | 11 | 2001 11 -1 | 日期超出范围 | 日期超出范围 | 通过 | 2017/3/29 |
判定/条件覆盖 | 12 | 18000 1 1 | 年份超出范围 | 年份超出范围 | 通过 | 2017/3/29 |
判定/条件覆盖 | 13 | 2050 12 31 | 2051年1月1日 | 2051年1月1日 | 通过 | 2017/3/29 |
组合覆盖 | 14 | 2017 2 28 | 2017年3月1日 | 2017年3月1日 | 通过 | 2017/3/29 |
组合覆盖 | 15 | 2014 13 25 | 月份超出范围 | 月份超出范围 | 通过 | 2017/3/29 |
组合覆盖 | 16 | 1911 5 32 | 年份超出范围 | 年份超出范围 | 通过 | 2017/3/29 |
组合覆盖 | 17 | 2051 13 32 | 月份超出范围 | 月份超出范围 | 通过 | 2017/3/29 |
路径覆盖 | 18 | 2017 13 1 | 月份超出范围 | 月份超出范围 | 通过 | 2017/3/29 |
路径覆盖 | 19 | 2051 12 10 | 年份超出范围 | 年份超出范围 | 通过 | 2017/3/29 |
路径覆盖 | 20 | 2017 1 32 | 日期超出范围 | 日期超出范围 | 通过 | 2017/3/29 |
路径覆盖 | 21 | 2014 4 31 | 日期不存在 | 日期不存在 | 通过 | 2017/3/29 |
路径覆盖 | 22 | 2015 1 22 | 2015年1月23日 | 2015年1月23日 | 通过 | 2017/3/29 |
路径覆盖 | 23 | 2015 a s | 日期格式错误 | 日期格式错误 | 通过 | 2017/3/29 |
路径覆盖 | 24 | return | 谢谢使用,再见~ | 谢谢使用,再见~ | 通过 | 2017/3/29 |
3、单元测试框架:采用单元测试框架Junit,初步简单的自动化执行测试用例。
import static org.junit.Assert.*;import org.junit.BeforeClass;import org.junit.Test;public class MyDateText { MyDate date = new MyDate(); @BeforeClass public static void setUpBeforeClass() throws Exception { } @Test public void testnextdate() { assertEquals("月份超出范围",date.nextdate(20, 1, 2004)); assertEquals("年份超出范围",date.nextdate(11, 3, 1906)); assertEquals("日期超出范围",date.nextdate(10,32, 2014)); assertEquals("2005年1月21日",date.nextdate(1, 20,2005 )); assertEquals("日期不存在",date.nextdate(4,31, 2017)); assertEquals("2017年2月1日",date.nextdate(1, 31, 2017)); assertEquals("2015年12月31日",date.nextdate(12, 30,2015)); assertEquals("2000年3月1日",date.nextdate(2, 29, 2000)); assertEquals("2000年2月29日",date.nextdate(2, 28, 2000)); assertEquals("2051年1月1日",date.nextdate(12, 31, 2050)); assertEquals("2017年3月1日",date.nextdate( 2, 28,2017)); } }
4、测试结果:根据测试用例设计,执行测试,并给出TestRunner测试结果图。
4、测试小结:
(1).通过此次的实验,基本掌握了白盒测试的几种覆盖方法,并掌握了它们之间的关系。
(2).对于如何编写测试用例有了更深一层的了解,对以后学习这门课有了更好的帮助。同时也认识到测试用例是基于需求的,为了测试程序是否满足需求,要想写好测试用例必须对于需求做到完全理解,并能从全局上把握住需求。
(3).采用单元测试框相对于使用main()方法调用,能够提高开发速度;提高软件代码质量;提升系统的可信赖度。
(4).软件测试是发现错误;而软件调试确是诊断并改正错误、错误定位、纠正错误、回归测试,这是两个不一样的过程。