问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

微软Zune闰年bug 分析

发布网友 发布时间:2022-11-30 09:23

我来回答

1个回答

热心网友 时间:2023-11-03 12:32

最近在网上看到一篇帖子,得知了当年微软zune 的 历史 留名的 bug,具体事件的起因发展和结果我就不多说了。找到了出现 bug 的源码,分享出来。

这段代码是zune 内置的日期更新驱动里面的,作用是处理一下由于闰年引起的年份更新问题。结果非但没解决问题,还造出了一个 历史 留名的 bug。

方法的设计思路是这样的。当天数大于365时进入 while 循环,如果年份是闰年,则判断是否超过366,然后进行年份和天数的增减。非闰年情况直接进行年份和天数的增减。

程序员的想法完全没有问题,但在判断是闰年后,选择是否增减的条件却是有点异想天开了。因为在外层的 whlie 循环的days 的值是大于365,但是 while 循环的内部,处理的 days 值却是大于366。在当闰年 dsys=366的情况并没有处理,结果就导致了此次 历史 级的 bug 的产生。

虽然无法复盘 bug 是如何产生的,但却给测试提了个醒:越是基础的测试、越不能丢。因为这个 bug 的影响范围足够大,产生 bug 的代码足够简单,测试难度足够低,所以在 历史 上留名也不足为奇。

再次多说一些边界值。如果要测试这段代码,在设计用例时,考虑两个因素。一个年份一个天数。年份暂且考虑IsLeapYear()的 false 和 true两个值。天数考虑在边界值365、366、367,三个边界值在数轴上划片,然后取值。然后再和年份进行组合,就可以得到需要的测试用例。
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
空调加氟时要注意什么? 电脑安装了pr兼容性pr显示系统兼容性报告 带你了解——赫伯罗特 一千克面粉三十元一克面粉多少钱 大米2元500克面粉3元500克 2千克大米和和1500克面粉多少钱?_百度... ...面粉每千克多少元.大米25千克4.5元一千克面粉2 买8000克面粉需要32元,每千克面粉多少钱 500克面粉2元钱1千克面粉多少钱,怎么练式? 软棕和硬棕哪个好 amd rx6800m相当于nvidia什么水平? 云南省计生奖励金纳入基金吗 恩帕克灭菌指示口罩能当医用口罩用吗? 有关形容近视模糊的小视频段子汇总(47条) 2019年9月20到2022年7月22是多少天 COSMOSM2.85是什么软件? 种植义齿上部结构与基桩的连接方式不包括() 求好听的钢琴曲,中外不限,不要给我复杂的名字。 柚子币有没有销毁 桂西三“林”,鸡鸣三省(区) 广西一名女出纳员1年挪用2000万*买彩票,她将面临怎样的法律责任? 广西田林和平糖业有限公司怎么样? 田林县的经济 英语 连词成句 急! 不会,顺便教教我一个好办法! 英语连词成句不会? 大连市红旗高中的学校领导 大连市红旗高中的管理育人 零点零五和五十分之三比较大小 小明每分钟走3/50千米,半小时走多远 3/50化为小数() 50分之3等于0.06是怎样算的 zune的充电口是iphone的口吗? 微软ZUNE音质特点是什么 微软ZUNE音质特点是什么? 微软Zune一代都有什么功能? 跪求高手,微软Zune 生鸭头过期还能吃吗? 生鸭头为啥猛涨价 成和商厦有卖生鸭头的吗? 19款宝来有防撞钢梁吗 19款宝来有几个气囊 19款宝来有几个安全气囊 19款宝来被追尾前后门前后保险杠和后轮胎轮毂都需要更换,二手车会折旧多少? 21款宝来有防撞钢梁吗 19款宝来有没有后防碰钢梁? VR手表简约而不简单的时尚腕表 听别人讲VR厂的复刻手表做得比较好是真的吗 VR手表跟DW手表哪个比较好? 土老憨酱油质量安全吗 土老憨和老巴王是两个公司吗 湖北土老憨调味食品股份有限公司电话是多少?