第三次作业+105032014061
被测试代码链接: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).软件测试是发现错误;而软件调试确是诊断并改正错误、错误定位、纠正错误、回归测试,这是两个不一样的过程。