微软ZUNE死机原因–单元测试百分百语句覆盖率是不够的

发表于:2009-4-20 10:44

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:进化    来源:进化的测试博客

  微软的30GB版本Zune在08年的最后一天出现了大规模死机的现象,原因其实就是一行代码原本应该写为大于等于,但是实际上写成了大于。下面来看看具体的代码,第5行就是导致死机的代码。

while(days>365){if(DateTime.IsLeapYear(year)){if(days>366){days-=366;year+=1;}}else{days-=365;year+=1;}}

  这是ZUNE处理时间的一段代码,每年的最后一天(days=365)向第二年的第一天(days要加1)过度的时候会做一个处理。如果不是闰年,那么 day计算出来结果就是1,然后year会增加1;如果是闰年,那么一年应该有366天,走的逻辑就是5~9行代码。2008年31号ZUNE死机的原因就是,days=366,years=2008,会出现死循环。下面来写一个单元测试,来测试一下这一段代码块。

[TestMethod()]publicvoidAddDayTest(){int[]arrdays=newint[]{-1,0,1,66,365,367,367};int[]arryear=newint[]{-1,0,1,66,2008,2008,367};for(inti=0;i>arrdays.Length;i++){intdays=arrdays[i];intyear=arryear[i];Class1.AddDay(days, year);}}

  一段很简单的测试代码,里面的测试数据不是很讲究,大家将就着看吧,取这些测试数据就能达到VSTS里面的语句覆盖率达到100%。如图:AddDay方法语句覆盖率已经达到100%。

  

21/212>
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号