<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    qileilove

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

    修復(fù)bug的12個(gè)關(guān)鍵步驟

    boss:那么,你需要多長(zhǎng)時(shí)間來(lái)修復(fù)這個(gè)bug?
      沒有經(jīng)驗(yàn)的程序員:給我一個(gè)小時(shí)?最多兩個(gè)小時(shí)?我能馬上搞定它!
      有經(jīng)驗(yàn)的程序員:這么說(shuō)吧,釣到一條魚要多久我就要多久?!
      要多少時(shí)間才能修復(fù)bug,事先是很難知道的,特別是如果你和這些代碼還素不相識(shí)的話,情況就更加撲朔迷離了。James Shore在《The Art of Agile 》一書中,明確指出要想修復(fù)問題得先知道問題的所在。而我們之所以無(wú)法準(zhǔn)確估計(jì)時(shí)間是因?yàn)槲覀儾恢佬枰嗑貌拍馨l(fā)現(xiàn)癥結(jié)的所在,只有清楚這一點(diǎn),我們才能合理估計(jì)修復(fù)bug所需要花費(fèi)的時(shí)間。不過(guò),這個(gè)時(shí)候恐怕黃花菜都涼了。 Steve McConnell曾說(shuō)過(guò):
      “發(fā)現(xiàn)問題—理解問題—這就是程序員90%的工作。”
      很多bug都只需改動(dòng)某一行代碼即可。但是需要投入大量時(shí)間的是,后面還得指出怎么樣才是正確的——就像我們?cè)卺烎~的時(shí)候,得知道往哪里下誘餌,什么時(shí)候魚兒容易上鉤等等。話說(shuō)bug有四種類型:第一種易尋易修復(fù),第二種難尋易修復(fù),第三種易尋難修復(fù),第四種難尋難修復(fù)。最悲劇的就是最后一型的,不但“尋尋覓覓,凄凄涼涼戚戚”,哪怕終于千辛萬(wàn)苦滴水穿石,也只能在那邊不由自主地抓耳撓腮,無(wú)奈嘆一句“路漫漫其修遠(yuǎn)兮”??梢赃@么說(shuō),除非是新鮮出爐的代碼,不然讓你找bug就跟瞎子摸象一樣——糊里糊涂,不知道歸屬于哪種bug類型。
      查找和修復(fù)bug
      你知道“查找和修復(fù)bug”意味著什么嗎?沒錯(cuò),就是調(diào)試!不斷的調(diào)試,無(wú)數(shù)次的調(diào)試!Paul Butcher通過(guò)大量工作,總結(jié)出以下結(jié)構(gòu)化的步驟:
      1.明確目的。仔細(xì)查閱異常報(bào)告,確定是否是個(gè)bug,找出各種有用的信息發(fā)現(xiàn)問題的癥結(jié),予以重現(xiàn)。再次檢查是否與報(bào)告發(fā)生重復(fù)。如果發(fā)生重復(fù),那看看曾經(jīng)的相關(guān)人員是如何處理的。
      2.準(zhǔn)備工作——找出正確的代碼,用排除法清理工作區(qū)域。
      3.匹配測(cè)試環(huán)境。如果客戶正在操作計(jì)算機(jī)配置,那么此過(guò)程可以跳躍。
      4.明確代碼的用途,確?,F(xiàn)有測(cè)試工具一切正常。
      5.好了,現(xiàn)在可以出發(fā)釣魚去咯——重現(xiàn)和診斷錯(cuò)誤。如果你不能做到重現(xiàn),那你就不能證明你已經(jīng)完成修復(fù)工作。
      6.編寫測(cè)試案例,或者通過(guò)現(xiàn)成的測(cè)試案例來(lái)捕獲bug。
      7.進(jìn)入修復(fù)模式——請(qǐng)務(wù)必確保不會(huì)影響到其他任何部分。但是,在開展修復(fù)工作之前,可能你還要包攬重構(gòu)工作,因?yàn)橹挥羞@樣,你才能無(wú)所顧忌地?fù)v鼓代碼。而且事后回歸測(cè)試,還能確保你不會(huì)加入任何新的bug。
      8.整理代碼。通過(guò)一步一步重構(gòu),讓你的代碼更易于理解,更安全。
      9.找別人來(lái)審查一下,當(dāng)局者迷旁觀者清。
      10.再次檢查此修復(fù)過(guò)程。
      11.試著不從主線出發(fā),以檢查這些bug是否會(huì)影響其他支線。合并這些變化,處理代碼中的差異,回顧所有的審查和測(cè)試等工作。
      12.思考。好好想一想哪里錯(cuò)了以及為什么錯(cuò)了?為什么你的修復(fù)會(huì)起效?這種類型的bug還會(huì)出現(xiàn)在哪里?在《 The Pragmatic Programmer》一書中,Andy Hunt 和Dave Thomas也如是指出“如果一個(gè)bug需要耗費(fèi)你很多時(shí)間,那么一定要好好弄清楚原因”。此外,還需要思考的是,怎么做才能吸取經(jīng)驗(yàn)教訓(xùn),將來(lái)在類似的問題上不再栽跟頭?以及,我們采用的方法、使用的工具是否還有可以改進(jìn)的地方?以及這些bug的影響和嚴(yán)重程度。
      找到bug,還是修復(fù)bug,哪個(gè)需要更多時(shí)間?
      或許建立一個(gè)測(cè)試環(huán)境、重現(xiàn)問題和測(cè)試bug所需的時(shí)間,要遠(yuǎn)遠(yuǎn)多于找到bug和修復(fù)bug的時(shí)間。不過(guò)對(duì)于一小部分顯而易見的bug,找到它們很簡(jiǎn)單——不過(guò)修復(fù)起來(lái)可能就不盡如人意了。
      在《Making Software》一書中,有一章主要是探討“大部分的軟件漏洞的來(lái)源”,Dewayne Perry分析認(rèn)為,相較于修復(fù),發(fā)現(xiàn)bug(包括理解bug和重現(xiàn)bug)所需時(shí)間更長(zhǎng)。有研究表明,大多數(shù)的bug(差不多有3/4)既易于發(fā)現(xiàn)又易于修復(fù):5天或許更少(這是基于大規(guī)模實(shí)時(shí)系統(tǒng)通過(guò)重量級(jí)SDLC、大量審查和測(cè)試得出的數(shù)據(jù))。但是也有很惡心的bug,即便你可以輕輕松松揪到它,還是還得“嘔心瀝血”才能修復(fù)好。
      發(fā)現(xiàn)/修復(fù)修復(fù)時(shí)間<=5天修復(fù)時(shí)間>5天
      能重現(xiàn)問題72.5%18.4%
      難以重現(xiàn)或根本沒法重現(xiàn)5.9%3.2%
      所以如果你打賭說(shuō)你能很快修復(fù)bug,大多數(shù)情況下你還真沒說(shuō)錯(cuò)。不過(guò)當(dāng)你打賭輸了的時(shí)候,那么,嘿嘿,就意味著你有大麻煩了。
      所以,下次,boss再問什么時(shí)候能修復(fù)bug,別再傻乎乎地回答“馬上就能搞定”了。

    posted on 2014-11-21 10:50 順其自然EVO 閱讀(198) 評(píng)論(0)  編輯  收藏


    只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。


    網(wǎng)站導(dǎo)航:
     
    <2014年11月>
    2627282930311
    2345678
    9101112131415
    16171819202122
    23242526272829
    30123456

    導(dǎo)航

    統(tǒng)計(jì)

    常用鏈接

    留言簿(55)

    隨筆分類

    隨筆檔案

    文章分類

    文章檔案

    搜索

    最新評(píng)論

    閱讀排行榜

    評(píng)論排行榜

    主站蜘蛛池模板: 亚洲人成在线播放网站| 一级毛片免费观看| 亚洲av无码片区一区二区三区| 亚洲国模精品一区| 国产精品视频永久免费播放| 国产成人AV免费观看| 国产成人亚洲精品91专区高清| youjizz亚洲| 亚洲精品成人网站在线播放| 国产av无码专区亚洲av桃花庵| 免费看国产一级片| 免费看AV毛片一区二区三区| 99久久综合国产精品免费| 免费女人高潮流视频在线观看| 你懂的在线免费观看| 国产精品hd免费观看| 免费无码专区毛片高潮喷水| 亚洲精品无码国产片| 亚洲视频在线观看2018| 亚洲男女性高爱潮网站| 中文字幕亚洲精品资源网| 亚洲AV成人片色在线观看高潮| 亚洲五月综合缴情在线观看| 亚洲视频在线一区二区| 亚洲福利视频一区二区| 免费中文字幕在线| 波多野结衣免费视频观看| 日本不卡高清中文字幕免费| 特级淫片国产免费高清视频| 女人被免费视频网站| 色www永久免费视频| 日韩一区二区在线免费观看 | 亚洲国产精品无码久久久秋霞2| 2048亚洲精品国产| 亚洲视频在线一区二区| 亚洲中文字幕日产乱码高清app | 羞羞视频网站免费入口| 一区二区三区免费电影| 丝瓜app免费下载网址进入ios| 国产精品偷伦视频观看免费| 免费看又黄又无码的网站 |