qileilove

          blog已經(jīng)轉(zhuǎn)移至github,大家請(qǐng)?jiān)L問(wèn) http://qaseven.github.io/

          能存活19年的Bug不是Bug

           近日,各大網(wǎng)站,包括新浪、騰訊、網(wǎng)易、搜狐都報(bào)道了一則關(guān)于微軟宣布修復(fù)了一個(gè)存在了19年的安全漏洞的新聞,以騰訊科技為例,它的標(biāo)題是《微軟修復(fù)已存在19年的漏洞》。對(duì)于一個(gè)軟件制造界外的人來(lái)說(shuō),這是一個(gè)大快人心的消息,就跟一個(gè)隱藏了19年的納粹分子終于被抓住的新聞一樣轟動(dòng)。但以程序員為職業(yè)的我,聽(tīng)到這樣一個(gè)消息,卻有一種非常不解、甚至是荒謬、搞笑的感覺(jué)。從軟件生產(chǎn)的角度講,如果一個(gè)bug能存活19年,那它還是個(gè)bug嗎?
            一、很多項(xiàng)目生命期不超過(guò)19年
            我在很多國(guó)企開(kāi)發(fā)過(guò)項(xiàng)目,這些項(xiàng)目幾乎每過(guò)幾年都會(huì)重新開(kāi)發(fā)一回,老項(xiàng)目或者廢棄、或者推倒重來(lái),遇到領(lǐng)導(dǎo)換班子或上級(jí)政策方向的改變,更容易發(fā)生這種事情。事實(shí)上,有大量的軟件存活不到19年,都很短命。這一方面是技術(shù)的原因,更重要的一方面是國(guó)情的因素。如果在這樣的一個(gè)項(xiàng)目里有一個(gè)bug,當(dāng)這個(gè)軟件幾年后被遺棄時(shí),從來(lái)沒(méi)有被人發(fā)現(xiàn)——更符合軟件科學(xué)的說(shuō),沒(méi)有給用戶帶來(lái)任何煩惱。這樣的bug對(duì)于用戶來(lái)說(shuō)是不可見(jiàn)、不可知、根本不存在的。我們沒(méi)有必要、也不應(yīng)該將這樣的bug稱(chēng)作bug,更不應(yīng)該為這樣的bug大驚小怪。
            二、修改bug有風(fēng)險(xiǎn)
            我記得有一個(gè)非常有趣的關(guān)于bug段子,說(shuō)的是:
            代碼中有99個(gè)小bug,
            99個(gè)小bug,
            修復(fù)了一個(gè),
            現(xiàn)在,代碼中的有117個(gè)小bug。
            雖然是個(gè)笑話,但作為程序員,我一點(diǎn)都笑不出來(lái),因?yàn)檫@種事情在我們項(xiàng)目的開(kāi)發(fā)過(guò)程中經(jīng)常的會(huì)遇到。由于糾正接口中一個(gè)bug而導(dǎo)致其它程序調(diào)用這個(gè)接口時(shí)出現(xiàn)了另外的問(wèn)題。你可能會(huì)嘲笑說(shuō)這是測(cè)試程序?qū)懙牟粔蛑苋芏鄷r(shí)候,復(fù)雜的軟件內(nèi)部關(guān)聯(lián)是很難讓加班加點(diǎn)的程序員考慮周全的。
            所以,在一個(gè)復(fù)雜的軟件里,特別是對(duì)于老項(xiàng)目,最早開(kāi)發(fā)這個(gè)項(xiàng)目的人已經(jīng)流失,而項(xiàng)目文檔又寫(xiě)的不夠清晰,如果一個(gè)bug不是特別嚴(yán)重、不影響核心業(yè)務(wù),如果能說(shuō)服客戶不修改,那就優(yōu)先考慮不修改,如果非要修改,那必須要深思熟慮、準(zhǔn)備充足的測(cè)試用例,并想好回退方案,以防萬(wàn)一。
            三、是bug?還是設(shè)計(jì)的功能特征?
            之前就有一篇很好的文章指出,Bash里一個(gè)所謂的bug實(shí)際上是25年專(zhuān)門(mén)設(shè)計(jì)的功能,只是時(shí)過(guò)境遷,現(xiàn)在的使用環(huán)境發(fā)生了很大的變化,人們并沒(méi)有及時(shí)的調(diào)整過(guò)去的老代碼,或者現(xiàn)在的新環(huán)境并沒(méi)有照顧過(guò)去的老接口。
            所以,我們今天看到的一個(gè)愚蠢的 bug,也許在歷史上的某一天,是一個(gè)有意而為之的神奇特性。我們應(yīng)該思考的不僅僅是這一刻的 bug 或者安全隱患本身,而是在軟件開(kāi)發(fā)這個(gè)極具創(chuàng)新的活動(dòng)中,如何有效的保證某個(gè)特意設(shè)計(jì)的功能不會(huì)變成 bug。
            總之,一個(gè)19年的bug,一直默默無(wú)聞,沒(méi)有被人發(fā)現(xiàn)、沒(méi)有給用戶帶來(lái)麻煩、造成損失。我想,時(shí)間證明了這個(gè)bug是個(gè)善良的bug,是個(gè)好bug,我寧愿將它升級(jí)成一個(gè)功能。即使不能如此,使用用戶在這些年的使用中也早就適應(yīng)了這個(gè)bug,能夠很好的與它和睦相處,已經(jīng)不把它當(dāng)成危險(xiǎn)的敵人了。事實(shí)上,在用戶的心里,它已經(jīng)升級(jí)進(jìn)化,蛻掉了bug的外殼。這樣的bug,還是應(yīng)該順其自然,不改為好。程序員朋友們,你說(shuō)呢?

          posted on 2014-12-03 13:41 順其自然EVO 閱讀(179) 評(píng)論(0)  編輯  收藏 所屬分類(lèi): 測(cè)試學(xué)習(xí)專(zhuān)欄

          <2014年12月>
          30123456
          78910111213
          14151617181920
          21222324252627
          28293031123
          45678910

          導(dǎo)航

          統(tǒng)計(jì)

          常用鏈接

          留言簿(55)

          隨筆分類(lèi)

          隨筆檔案

          文章分類(lèi)

          文章檔案

          搜索

          最新評(píng)論

          閱讀排行榜

          評(píng)論排行榜

          主站蜘蛛池模板: 育儿| 邳州市| 灵丘县| 突泉县| 桂东县| 广宁县| 龙川县| 交口县| 陇西县| 东山县| 米易县| 剑河县| 亚东县| 杂多县| 吉林省| 阜南县| 茌平县| 宜君县| 边坝县| 德阳市| 化州市| 红安县| 海门市| 宁安市| 凉城县| 裕民县| 化州市| 大安市| 布尔津县| 壶关县| 兴海县| 永定县| 图片| 如东县| 安顺市| 界首市| 旺苍县| 寻甸| 莲花县| 宝兴县| 凤翔县|