1.测试帖链接:
http://www.cnblogs.com/xwhisper/p/6629297.html
2.修正流程图:
3.测试用例设计:
因用例过多,以下只列举部分。
覆盖方式 | 用例号 | 输入 | 期待结果 | ||||
语句覆盖 | 1 | 2051 3 21 | 年份超出范围 | ||||
语句覆盖 | 2 | 2050 13 21 | 月份超出范围 | ||||
语句覆盖 | 3 | 2050 3 32 | 日期超出范围 | ||||
语句覆盖 | 4 | 2050 2 30 | 日期超出范围 | ||||
语句覆盖 | 5 | 2050 2 28 | 2050 3 1 | ||||
语句覆盖 | 6 | 2050 4 30 | 2050 5 1 | ||||
语句覆盖 | 7 | 2050 12 31 | 2051 1 1 | ||||
判定覆盖 | 8 | 1914 4 21 | 年份超出范围 | ||||
判定覆盖 | 9 | 1915 4 21 | 1915 4 22 | ||||
判定覆盖 | 10 | 1915 13 21 | 月份超出范围 | ||||
判定覆盖 | 11 | 1915 12 21 | 1915 12 22 | ||||
判定覆盖 | 12 | 1915 2 32 | 日期超出范围 | ||||
判定覆盖 | 13 | 1915 2 30 | 日期超出范围 | ||||
判定覆盖 | 14 | 2000 2 29 | 2000 3 1 | ||||
判定覆盖 | 15 | 2000 3 31 | 2000 4 1 | ||||
判定覆盖 | 16 | 2000 12 31 | 2001 1 1 | ||||
判定覆盖 | 17 | 2000 4 21 | 2000 4 22 | ||||
判定/条件覆盖 | 18 | 1999 3 31 | 2000 4 1 | ||||
判定/条件覆盖 | 19 | 2000 2 28 | 2000 2 29 | ||||
判定/条件覆盖 | 20 | 2000 2 29 | 2000 3 1 | ||||
判定/条件覆盖 | 21 | 2000 2 30 | 日期超出范围 | ||||
判定/条件覆盖 | 22 | 1999 12 31 | 2000 1 1 | ||||
判定/条件覆盖 | 23 | 1999 12 32 | 日期超出范围 | ||||
组合覆盖 | 24 | 2051 1 1 | 年份超出范围 | ||||
组合覆盖 | 25 | 2050 12 31 | 2051 1 1 | ||||
组合覆盖 | 26 | 1914 12 31 | 年份超出范围 | ||||
组合覆盖 | 27 | 1915 1 1 | 1915 1 2 | ||||
组合覆盖 | 28 | 1915 13 1 | 月份超出范围 | ||||
组合覆盖 | 29 | 1915 4 31 | 日期超出范围 | ||||
组合覆盖 | 30 | 2000 4 30 | 2000 5 1 |
4.单元测试框架:
Junit测试代码
1 import static org.junit.Assert.*; 2 import org.junit.Test; 3 4 public class NextDateTestTest { 5 6 @Test 7 //判断输入格式是否正确 8 public void testCheckDate() { 9 assertFalse(NextDateTest.checkDate(2051, 3, 21)); 10 assertFalse(NextDateTest.checkDate(2050, 13, 21)); 11 assertFalse(NextDateTest.checkDate(2050, 3, 32)); 12 assertFalse(NextDateTest.checkDate(2050, 2, 30)); 13 assertTrue(NextDateTest.checkDate(2050, 12, 31)); 14 assertTrue(NextDateTest.checkDate(2050, 2, 28)); 15 assertTrue(NextDateTest.checkDate(2050, 4, 30)); 16 assertFalse(NextDateTest.checkDate(1914, 4, 21)); 17 assertFalse(NextDateTest.checkDate(1915, 13, 21)); 18 assertTrue(NextDateTest.checkDate(1915, 4, 21)); 19 assertTrue(NextDateTest.checkDate(1915, 12, 21)); 20 assertFalse(NextDateTest.checkDate(1915, 2, 32)); 21 assertFalse(NextDateTest.checkDate(1915, 2, 30)); 22 assertTrue(NextDateTest.checkDate(2000, 2, 29)); 23 assertTrue(NextDateTest.checkDate(2000, 3, 31)); 24 assertTrue(NextDateTest.checkDate(2000, 12, 31)); 25 assertTrue(NextDateTest.checkDate(2000, 4, 21)); 26 assertTrue(NextDateTest.checkDate(1999, 3, 31)); 27 assertTrue(NextDateTest.checkDate(2000, 2, 28)); 28 assertTrue(NextDateTest.checkDate(2000, 2, 29)); 29 assertFalse(NextDateTest.checkDate(2000, 2, 30)); 30 assertTrue(NextDateTest.checkDate(1999, 12, 31)); 31 assertFalse(NextDateTest.checkDate(1999, 12, 32)); 32 assertFalse(NextDateTest.checkDate(2051, 1, 1)); 33 assertTrue(NextDateTest.checkDate(2050, 12, 31)); 34 assertFalse(NextDateTest.checkDate(1914, 12, 31)); 35 assertTrue(NextDateTest.checkDate(1915, 1, 1)); 36 assertFalse(NextDateTest.checkDate(1915, 13, 1)); 37 assertFalse(NextDateTest.checkDate(1915, 4, 31)); 38 assertTrue(NextDateTest.checkDate(2000, 4, 30)); 39 } 40 41 42 @Test 43 //输入格式正确的数据进行日期的计算,所以以下均为上面checkData方法过滤后的正确数据 44 public void testNextDate() { 45 assertEquals("NextDate:2051年1月1日",NextDateTest.nextDate(2050, 12, 31)); 46 assertEquals("NextDate:2050年3月1日",NextDateTest.nextDate(2050, 2, 28)); 47 assertEquals("NextDate:2050年5月1日",NextDateTest.nextDate(2050, 4, 30)); 48 assertEquals("NextDate:1915年4月22日",NextDateTest.nextDate(1915, 4, 21)); 49 assertEquals("NextDate:1915年12月22日",NextDateTest.nextDate(1915, 12, 21)); 50 assertEquals("NextDate:2000年3月1日",NextDateTest.nextDate(2000, 2, 29)); 51 assertEquals("NextDate:2000年4月1日",NextDateTest.nextDate(2000, 3, 31)); 52 assertEquals("NextDate:2001年1月1日",NextDateTest.nextDate(2000, 12, 31)); 53 assertEquals("NextDate:2000年4月22日",NextDateTest.nextDate(2000, 4, 21)); 54 assertEquals("NextDate:1999年4月1日",NextDateTest.nextDate(1999, 3, 31)); 55 assertEquals("NextDate:2000年2月29日",NextDateTest.nextDate(2000, 2, 28)); 56 assertEquals("NextDate:2000年3月1日",NextDateTest.nextDate(2000, 2, 29)); 57 assertEquals("NextDate:2000年1月1日",NextDateTest.nextDate(1999, 12, 31)); 58 assertEquals("NextDate:2051年1月1日",NextDateTest.nextDate(2050, 12, 31)); 59 assertEquals("NextDate:1915年1月2日",NextDateTest.nextDate(1915, 1, 1)); 60 assertEquals("NextDate:2000年5月1日",NextDateTest.nextDate(2000, 4, 30)); 61 } 62 63 }
5.测试结果:
测试结果表明以上的用例均通过测试,程序未发现错误。
6.测试小结:
若条件很多,则需要花费很多时间对用例进行编写。所以还要继续熟悉逻辑覆盖的各个要点。
原文:http://www.cnblogs.com/ELPSY/p/6648819.html