---恢复内容开始---
一、实验目的
掌握覆盖测试的基本方法和实践
二、实验要求
运用逻辑覆盖测试的覆盖准则设计被测程序的测试用例,并运行测试用例检查程序的正确与否,给出程序缺陷小结。
三、实验内容
(1)设计某程序的路径覆盖测试用例,如路径覆盖、条件覆盖、分支覆盖、循环覆盖等
测试代码链接
http://www.cnblogs.com/mrlry/p/6617697.html
DD路径图
1语句覆盖
A-B-C-V
A-B-D-E-F-J-K-L-M-V
A-B-D-E-G-J-K-L-N-V
A-B-D-E-H-K-L-O-V
A-B-D-E-H-K-L-P-Q-V
A-B-D-E-H-K-L- P-R-S-U-V
A-B-D-E-H-K-L- P-R-T-U-V
1 | -1 | 0 | 0 | A-B-C-V | 退出 | |
2 | 2016 | 13 | 1 | A-B-D-E-F-J-K-L-M-V | 月份超出范围 | |
3 | 2000 | 13 | 1 | A-B-D-E-G-J-K-L-N-V | 日期超出范围 | |
4 | 2051 | 12 | 1 | A-B-D-E-H-K-L-O-V | 年份超出范围 | |
5 | 2001 | 12 | 2 | A-B-D-E-H-K-L-P-Q-V | 2001年12月3日 | |
6 | 2001 | 12 | 31 | A-B-D-E-H-K-L- P-R-S-U-V | 2002年1月1日 | |
7 | 2001 | 11 | 30 | A-B-D-E-H-K-L- P-R-T-U-V | 2001年12月1日 |
2判定覆盖
A-B-C-V
A-B-D-E-F-J-K-L-M-V
A-B-D-E-G-J-K-L-N-V
A-B-D-E-H-K-L-O-V
A-B-D-E-H-K-L-P-Q-V
A-B-D-E-H-K-L- P-R-S-U-V
A-B-D-E-H-K-L- P-R-T-U-V
用例ID | 输入值 | 执行路径 | 预期输出 | ||||
y | m | d | |||||
1 | -1 | 0 | 0 | A-B-C-V | 退出 | |
2 | 2016 | 13 | 1 | A-B-D-E-F-J-K-L-M-V | 月份超出范围 | |
3 | 2000 | 13 | 1 | A-B-D-E-G-J-K-L-N-V | 月份超出范围 | |
4 | 2051 | 12 | 1 | A-B-D-E-H-K-L-O-V | 年份超出范围 | |
5 | 2001 | 12 | 2 | A-B-D-E-H-K-L-P-Q-V | 2001年12月3日 | |
6 | 2001 | 12 | 31 | A-B-D-E-H-K-L- P-R-S-U-V | 2002年1月1日 | |
7 | 2001 | 11 | 30 | A-B-D-E-H-K-L- P-R-T-U-V | 2001年12月1日 |
3路径覆盖
A-B-C-V
A-B-D-E-F-J-K-L-M-V
A-B-D-E-F-J-K-L-N-V
A-B-D-E-F-J-K-L-O-V
A-B-D-E-F-J-K-L-P-Q-V
A-B-D-E-F-J-K-L-P-R-S-U-V
A-B-D-E-F-J-K-L-P-R-T-U-V
A-B-D-E-G-J-K-L-N-V
A-B-D-E-G-J-K-L-M-V
A-B-D-E-G-J-K-L-O-V
A-B-D-E-G-J-K-L-P-Q-V
A-B-D-E-G-J-K-L-P- R-S-U-V
A-B-D-E-G-J-K-L-P- R- T-U-V
A-B-D-E-H-K-L-M-V
A-B-D-E-H-K-L-N-V
A-B-D-E-H-K-L-O-V
A-B-D-E-H-K-L-P-Q-V
A-B-D-E-H-K-L- P-R-S-U-V
A-B-D-E-H-K-L- P-R-T-U-V
用例ID | 输入值 | 执行路径 | 预期输出 | ||||||
y | m | d | |||||||
1 | -1 | 0 | 0 | A-B-C-V | 退出 | ||||
2 | 2016 | 13 | 1 | A-B-D-E-F-J-K-L-M-V | 月份超出范围 | ||||
3 | 2016 | 10 | 0 | A-B-D-E-F-J-K-L-N-V | 日期超出范围 | ||||
4 | 1904 | 12 | 1 | A-B-D-E-F-J-K-L-O-V | 年份超出范围 | ||||
5 | 2016 | 12 | 2 | A-B-D-E-F-J-K-L-P-Q-V | 2016年12月3日 | ||||
6 | 2016 | 12 | 31 | A-B-D-E-F-J-K-L-P-R-S-U-V | 2017年1月1日 | ||||
7 | 2016 | 11 | 30 | A-B-D-E-F-J-K-L-P-R-T-U-V | 2016年12月1日 | ||||
8 | 2000 | 13 | 1 | A-B-D-E-G-J-K-L-N-V | 月份超出范围 | ||||
9 | 2000 | 10 | 0 | A-B-D-E-G-J-K-L-M-V | 日期超出范围 | ||||
10 | 3200 | 12 | 1 | A-B-D-E-G-J-K-L-O-V | 年份超出范围 | ||||
11 | 2000 | 12 | 2 | A-B-D-E-G-J-K-L-P-Q-V | 2000年12月3日 | ||||
12 | 2000 | 12 | 31 | A-B-D-E-G-J-K-L-P- R-S-U-V | 2001年1月1日 | ||||
13 | 2000 | 11 | 30 | A-B-D-E-G-J-K-L-P- R- T-U-V | 2000年12月1日 | ||||
14 | 2001 | 13 | 1 | A-B-D-E-H-K-L-M-V | 月份超出范围 |
15 | 2001 | 10 | 0 | A-B-D-E-H-K-L-N-V | 日期超出范围 |
16 | 2051 | 12 | 1 | A-B-D-E-H-K-L-O-V | 年份超出范围 |
17 | 2001 | 12 | 2 | A-B-D-E-H-K-L-P-Q-V | 2001年12月3日 |
18 | 2001 | 12 | 31 | A-B-D-E-H-K-L- P-R-S-U-V | 2002年1月1日 |
19 | 2001 | 11 | 30 | A-B-D-E-H-K-L- P-R-T-U-V | 2001年12月1日 |
4条件覆盖
编号 | M=-1 | 覆盖路径 |
1 | T | B-C |
2 | F | B-D |
编号 | y%4==0&&y%100!=0 | y%100==0&&y%400==0 | 覆盖路径 |
3 | T | F | E-F-J |
4 | F | T | E-G-J |
5 | F | F | E-H-K |
编号 | m<1||m>12 | d<1||d>month[m] | y<1912||y>2050 | 覆盖路径 |
6 | F | T | T | L-M |
7 | T | F | T | L-N |
8 | T | T | F | L-O |
9 | T | T | T | L-P-Q |
编号 | m==12&&d==31 | 覆盖路径 |
10 | T | R-S-U |
11 | F | R-T-U |
A-B-C-V
A-B-D-E-F-J-K-L-M-V
A-B-D-E-G-J-K-L-N-V
A-B-D-E-H-K-L-O-V
A-B-D-E-H-K-L-P-Q-V
A-B-D-E-H-K-L- P-R-S-U-V
A-B-D-E-H-K-L- P-R-T-U-V
用例ID | 输入值 | 执行路径 | 预期输出 | 覆盖条件 | |||||||
M | Y | D | |||||||||
1 | -1 | 0 | 0 | A-B-C-V | 退出 | 1 |
2 | 2016 | 13 | 1 | A-B-D-E-F-J-K-L-M-V | 月份超出范围 | 2,3,6 |
3 | 2000 | 13 | 1 | A-B-D-E-G-J-K-L-N-V | 月份超出范围 | 2,4,7 |
4 | 2051 | 12 | 1 | A-B-D-E-H-K-L-O-V | 年份超出范围 | 2,5,8 |
5 | 2001 | 12 | 2 | A-B-D-E-H-K-L-P-Q-V | 2001年12月3日 | 2,5,9 |
6 | 2001 | 12 | 31 | A-B-D-E-H-K-L- P-R-S-U-V | 2002年1月1日 | 2.5.10 |
7 | 2001 | 11 | 30 | A-B-D-E-H-K-L- P-R-T-U-V | 2001年12月1日 | 2,5,11 |
Junit 脚本@Testpublic void test01() {assertEquals("月份超出范围",nextDate.nextdate(2016 ,13, 1));}@Testpublic void test02() {assertEquals("日期超出范围",nextDate.nextdate(2016 ,10, 0));}@Testpublic void test03() {assertEquals(null,nextDate.nextdate(-1 ,0, 0));}@Testpublic void test04() {assertEquals("年份超出范围",nextDate.nextdate(1904 ,12, 1));}
@Testpublic void test05() {assertEquals("2016年12月3日",nextDate.nextdate(2016 ,12, 2));}
@Testpublic void test06() {assertEquals("2017年1月1日",nextDate.nextdate(2016 ,12, 31));}
@Testpublic void test07() {assertEquals("2016年12月1日",nextDate.nextdate(2016 ,11, 30));}
@Testpublic void test08() {assertEquals("月份超出范围",nextDate.nextdate(2000 ,13, 1));}
@Testpublic void test09() {assertEquals("日期超出范围",nextDate.nextdate(2000 ,10,0));}
@Test
public void test10() {assertEquals("年份超出范围",nextDate.nextdate(3200 ,12, 1));}
@Testpublic void test11() {assertEquals("2000年12月3日",nextDate.nextdate(2000 ,12, 2));}
@Testpublic void test12() {assertEquals("2001年1月1日",nextDate.nextdate(2000 ,12, 31));}
@Testpublic void test13() {assertEquals("2000年12月1日",nextDate.nextdate(2000 ,11,30));}
@Testpublic void test14() {assertEquals("月份超出范围",nextDate.nextdate(2001 ,13, 1));}
@Testpublic void test15() {assertEquals("日期超出范围",nextDate.nextdate(2001 ,10, 0));}
@Testpublic void test16() {assertEquals("年份超出范围",nextDate.nextdate(2051 ,12, 1));}
@Testpublic void test17() {assertEquals("2001年12月3日",nextDate.nextdate(2001 ,12, 2));}
@Testpublic void test18() {assertEquals("2002年1月1日",nextDate.nextdate(2001 ,12, 31));}
@Testpublic void test19() {assertEquals("2001年12月1日",nextDate.nextdate(2001 ,11,30));}
测试总结
没有对源代码进行修改,并未找到测试的缺陷清单。