日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

微软Zune闰年bug 分析

發(fā)布時(shí)間:2024/1/1 编程问答 43 豆豆
生活随笔 收集整理的這篇文章主要介紹了 微软Zune闰年bug 分析 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

最近在網(wǎng)上看到一篇帖子,得知了當(dāng)年微軟zune 的歷史留名的 bug,具體事件的起因發(fā)展和結(jié)果我就不多說(shuō)了。找到了出現(xiàn) bug 的源碼,分享出來(lái)。

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

這段代碼是zune 內(nèi)置的日期更新驅(qū)動(dòng)里面的,作用是處理一下由于閏年引起的年份更新問(wèn)題。結(jié)果非但沒(méi)解決問(wèn)題,還造出了一個(gè)歷史留名的 bug。

方法的設(shè)計(jì)思路是這樣的。當(dāng)天數(shù)大于365時(shí)進(jìn)入 while 循環(huán),如果年份是閏年,則判斷是否超過(guò)366,然后進(jìn)行年份和天數(shù)的增減。非閏年情況直接進(jìn)行年份和天數(shù)的增減。

程序員的想法完全沒(méi)有問(wèn)題,但在判斷是閏年后,選擇是否增減的條件卻是有點(diǎn)異想天開(kāi)了。因?yàn)樵谕鈱拥?whlie 循環(huán)的days 的值是大于365,但是 while 循環(huán)的內(nèi)部,處理的 days 值卻是大于366。在當(dāng)閏年 dsys=366的情況并沒(méi)有處理,結(jié)果就導(dǎo)致了此次歷史級(jí)的 bug 的產(chǎn)生。

雖然無(wú)法復(fù)盤 bug 是如何產(chǎn)生的,但卻給測(cè)試提了個(gè)醒:越是基礎(chǔ)的測(cè)試、越不能丟。因?yàn)檫@個(gè) bug 的影響范圍足夠大,產(chǎn)生 bug 的代碼足夠簡(jiǎn)單,測(cè)試難度足夠低,所以在歷史上留名也不足為奇。

再次多說(shuō)一些邊界值。如果要測(cè)試這段代碼,在設(shè)計(jì)用例時(shí),考慮兩個(gè)因素。一個(gè)年份一個(gè)天數(shù)。年份暫且考慮IsLeapYear()的 false 和 true兩個(gè)值。天數(shù)考慮在邊界值365、366、367,三個(gè)邊界值在數(shù)軸上劃片,然后取值。然后再和年份進(jìn)行組合,就可以得到需要的測(cè)試用例。

一起來(lái)~FunTester

轉(zhuǎn)載于:https://my.oschina.net/u/3973795/blog/3082606

總結(jié)

以上是生活随笔為你收集整理的微软Zune闰年bug 分析的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。