第一次作业+105032014124
一、流程图:根据被测代码,绘制程序流程图
二、测试用例设计:依据语句覆盖、判定覆盖,编写测试用例设计
用例编号 |
覆盖方式 |
输入数据 |
期待结果 |
实际结果 |
结论 |
U01 |
语句覆盖 |
-1,32,2051 |
月份超出范围 |
月份超出范围 |
通过 |
U02 |
语句覆盖 |
12,31,2008 |
2009年1月1日 |
2009年1月1日 |
通过 |
U03 |
语句覆盖 |
12,31,1995 |
1995年1月1日 |
1995年1月1日 |
通过 |
U04 |
判定覆盖 |
6,32,1995 |
日期超出范围 |
日期超出范围 |
通过 |
U05 |
判定覆盖 |
6,6,2051 |
年份超出范围 |
年份超出范围 |
通过 |
U06 |
判定覆盖 |
3,21,2008 |
2008年3月22日 |
2008年3月22日 |
通过 |
U07 |
判定覆盖 |
2,28,2008 |
2008年2月29日 |
2008年2月29日 |
通过 |
U08 |
判定覆盖 |
6,21,2009 |
2009年6月22日 |
2009年6月22日 |
通过 |
09 |
判定覆盖 |
2,28,2009 |
2009年3月1日 |
2009年3月1日 |
通过 |
10 |
判定覆盖 |
12,31,2009 |
2010年1月1日 |
2010年1月1日 |
通过 |
11 |
判定覆盖 |
2,29,2009 |
日期超过范围 |
日期超过范围 |
不通过 |
三、测试结果:
该程序含有注释,可以使代码更清晰,且执行结果大部分正确,有一点小缺陷,如:当输入2009年2月29日(即非闰年的2月份)时,程序输出错误,没能输出预期的结果-日期超出范围。
四、代码优化建议:
(1) 在画流程图时,我发现被测代码使用数组isleap、noleap,来区别闰年与非润年的2月份,这种情况会减少语句的判断,但会出现上面的错误:无法判断非润年2月29号存在的错误;
(2) 该程序还可以对重复的语句进行删减;
(3) 该程序利用while(1)来实现可以反复输入数据,但没有可以退出的功能,程序会一直反复执行。