說說分析bug的一些心得

bug已經(jīng)成為程序員工作中的一部分穴墅,作為從事嵌入式軟件開發(fā)已有六年的我,經(jīng)手的bug也不少了斋枢。先說說自己對于bug的心態(tài)變化吧帘靡,剛開始工作的時候,自己還是很喜歡bug的杏慰。那時测柠,自己是負責維護別人的代碼,如果發(fā)現(xiàn)了bug缘滥,說明自己工作有成績轰胁;后來,自己開始碼代碼朝扼,這個時候測試人員告訴我有bug赃阀,自己就有些心煩,尤其是當領導知道了這個bug以后擎颖,就會感到很大壓力榛斯;再后來,經(jīng)手的bug變多了搂捧,也變得淡定多了驮俗,而且還逐漸建立自己分析bug的工具箱和分析流程;現(xiàn)在允跑,經(jīng)過幾年的工作王凑,積累了一些經(jīng)驗,開始在設計和編碼階段聋丝,就盡量考慮周全索烹,以減少bug的產(chǎn)生。

下面就說說自己分析bug的一些心得:

1. 建立一套分析bug用的工具箱

正所謂弱睦,“工欲善其事百姓,必先利其器”,分析bug有一套得心應手的工具很重要况木。我的工具箱里就有:網(wǎng)絡抓包工具(用來分析網(wǎng)絡相關問題的)垒拢,讀取、解析日志的工具火惊、獲取設備運行狀態(tài)的工具子库,另外,還配有解壓工具矗晃、UltraEditor等等小程序的安裝程序(因為有些測試用的電腦上沒有安裝這些軟件)仑嗅。我將這些工具放到一個文件中,并將其放在U盤中张症,一旦測試人員告知有bug存在仓技,我就揣著U盤過去。這個“竅門”的來歷緣于自己一段痛苦的經(jīng)歷俗他,自己有段時間膝蓋疼脖捻,特別討厭爬樓梯,但是當時測試人員在開發(fā)人員的樓下兆衅,因此地沮,常因為測試人員的電腦上沒有自己想要的工具嗜浮,自己不得已只能爬上爬下地用U盤拷貝工具。痛苦之下摩疑,就想出了上面的那個辦法危融,呵呵。

2. 建立一套分析bug的流程或步驟

bug產(chǎn)生后雷袋,測試人員告訴開發(fā)人員的都是現(xiàn)象吉殃,而開發(fā)人員要根據(jù)測試人員的現(xiàn)象描述去推測。我同事說楷怒,查bug就像是在“查案”蛋勺,一層一層抽絲剝繭地在分析“案情”,不能放過任何蛛絲馬跡鸠删。分析bug有的時候就好比在黑暗中行走一樣抱完,常常覺得完全無從下手。經(jīng)過幾次痛苦經(jīng)歷后刃泡,我逐漸建立一套分析bug的流程或步驟:

1. 獲取當前測試的版本信息乾蛤;讓測試人員通過版本檢測工具讀取當前測試的版本信息,然后截圖捅僵。此舉家卖,可立即確定是否由于版本不正確導致的問題;

2. 讀取設備的運行日志庙楚;讓測試人員讀取設備的操作日志和運行日志上荡,交由開發(fā)人員解析;

3. 通過設備運行監(jiān)控工具馒闷,獲取設備當前的運行狀態(tài)酪捡,然后截圖;

4. 通過抓包工具纳账,抓包并且將結(jié)果交由開發(fā)人員解析逛薇;(可選,只針對網(wǎng)絡相關的問題)

5. 將獲得的所有信息疏虫,放到一個文件夾中永罚,以bug現(xiàn)象和測試人員姓名命名該文件夾;

這樣的步驟或流程一個最大的好處就是卧秘,不會遺漏可用的信息呢袱。因此,除非是那種一眼就能定位原因的bug以外翅敌,對于所有bug我基本上都會按照上述去做的羞福,其實其目的也很簡單,在還不清楚問題具體情況的狀況下蚯涮,先盡可能地獲得系統(tǒng)的可以獲得的所有信息治专,這些信息會為后續(xù)分析提供了可參考的信息卖陵。這樣做只是麻煩一些,但是絕對沒有壞處张峰。曾經(jīng)就有幾個很難復現(xiàn)的bug泪蔫,就是由于缺少對應的日志信息,給我們分析問題原因帶來了極大的麻煩挟炬。當時,對于沒有及時獲取更多的信息嗦哆,非常之懊悔谤祖。

將所有信息都放到一個文件夾中,是一個非常好的習慣老速,這樣所有與之相關的信息就非常好找粥喜,更不會出現(xiàn)混亂。另外橘券,上述步驟中额湘,我通常都會要截圖,一方面是自己不太相信測試人員的口述旁舰,另外一方面留下足夠的證據(jù)锋华,因為有的時候真是口說無憑啊。

3. 針對不同類型的bug箭窜,適當區(qū)別對待

開發(fā)人員有時候可能同時在分析好幾個bug毯焕,這就要對這些bug分輕重緩急了。我通常將bug按照復現(xiàn)難度分優(yōu)先級磺樱。越容易復現(xiàn)的bug優(yōu)先級越低纳猫,即使該bug的嚴重等級很高。因為能復現(xiàn)的bug竹捉,只要花時間總能夠分析出原因的芜辕,但是很難復現(xiàn)的bug就難說了。其實块差,bug分析和解決有50%取決于該bug能否復現(xiàn)侵续。因此,每當測試人員告訴一個新bug時憨闰,我收集了所有信息询兴,并且分析以后有個初步結(jié)論以后,我才會讓測試人員破壞環(huán)境起趾,讓他復現(xiàn)一下(復現(xiàn)bug可能會導致現(xiàn)象消失诗舰,但是不去復現(xiàn)也沒什么可做的了,畢竟所有的信息都收集完了)训裆。如果這個bug很難復現(xiàn)的話眶根,那么我會先推掉其他事情蜀铲,專心分析這個bug,否則拖得時間越久属百,越難找到原因记劝。

生命不息,bug不止族扰。面對bug厌丑,我們須保持良好的心態(tài),因為它們畢竟已經(jīng)成為我們工作生活的一部分了渔呵,以積極良好的心態(tài)面對它們的時候怒竿,我們也許就能找到比較好的方法解決它們了,^_^

【后記】

對于模塊很多扩氢,功能比較復雜的產(chǎn)品耕驰,一旦發(fā)生bug,一般很難確定bug的原因录豺。這個時候除了盡可能地收集現(xiàn)場信息以外朦肘,還一個分析方法。這個方法很簡單:首先列出會產(chǎn)生這個bug的所有原因双饥,無論列出的原因聽起來媒抠,多么不可能,也要列出來咏花,然后逐個去驗證和排除领舰,可以先從可能性最大或者最容易驗證(或排除)的入手。這個方法背后的邏輯是:

1. 面對一個很復雜的bug的時候迟螺,我們實際上面對的是一團漆黑冲秽,面對的是巨大的不確定性;

2. 人在面對不確定性的時候矩父,會本能地焦慮和慌張锉桑;

3. “列出會產(chǎn)生bug的所有原因”,實際上是給我們提供了一個“落腳點”窍株,讓我們在面對不確定性的時候民轴,覺得有事情可做,覺得有“可以入手”的地方球订,這樣我們在心理上就不會那么焦慮和慌張了后裸;

4. “無論列出的原因聽起來,多么不可能冒滩,也要列出來”微驶,目的是不去限制大家的思維,讓大家可以自由地思考和分析;

5. “逐個去驗證和排除每個原因”因苹,目的是盡可能地縮小問題原因的范圍苟耻;

6. “先從可能性最大或者最容易驗證或排除的入手”,這一點符合人類的行為習慣——先易后難扶檐。

這個方法不能百分之百地保證能夠找到bug的原因凶杖,但是它給分析bug提供了一個方向,指引我們的思維和行為款筑,為解決bug提供了一個“落腳點”智蝠。本人用這個方法幫助公司解決很多棘手的bug,卻發(fā)現(xiàn)了一個有趣的現(xiàn)象:產(chǎn)生bug的最終原因通常不是最開始列出來的那些奈梳,^_^杈湾。

這個方法的靈感來自于美劇《豪斯醫(yī)生》。豪斯醫(yī)生在面對每一個疑難雜癥的時候颈嚼,都會集合助手毛秘,一一列出任何可能的病因饭寺,然后逐個驗證和排除阻课。而且我發(fā)現(xiàn)的那個現(xiàn)象,這個美劇中也有艰匙,就是最終的病因通常不是他們最開始列出來的限煞,這也許是編劇故意制造的戲劇化效果吧,哈哈员凝。

【參考文獻】:

1.?美劇《豪斯醫(yī)生》

最后編輯于
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末署驻,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子健霹,更是在濱河造成了極大的恐慌旺上,老刑警劉巖,帶你破解...
    沈念sama閱讀 212,383評論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件糖埋,死亡現(xiàn)場離奇詭異宣吱,居然都是意外死亡,警方通過查閱死者的電腦和手機瞳别,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,522評論 3 385
  • 文/潘曉璐 我一進店門征候,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人祟敛,你說我怎么就攤上這事疤坝。” “怎么了馆铁?”我有些...
    開封第一講書人閱讀 157,852評論 0 348
  • 文/不壞的土叔 我叫張陵跑揉,是天一觀的道長。 經(jīng)常有香客問我埠巨,道長畔裕,這世上最難降的妖魔是什么衣撬? 我笑而不...
    開封第一講書人閱讀 56,621評論 1 284
  • 正文 為了忘掉前任,我火速辦了婚禮扮饶,結(jié)果婚禮上具练,老公的妹妹穿的比我還像新娘。我一直安慰自己甜无,他們只是感情好扛点,可當我...
    茶點故事閱讀 65,741評論 6 386
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著岂丘,像睡著了一般陵究。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上奥帘,一...
    開封第一講書人閱讀 49,929評論 1 290
  • 那天铜邮,我揣著相機與錄音,去河邊找鬼寨蹋。 笑死松蒜,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的已旧。 我是一名探鬼主播秸苗,決...
    沈念sama閱讀 39,076評論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼运褪!你這毒婦竟也來了惊楼?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,803評論 0 268
  • 序言:老撾萬榮一對情侶失蹤秸讹,失蹤者是張志新(化名)和其女友劉穎檀咙,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體璃诀,經(jīng)...
    沈念sama閱讀 44,265評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡弧可,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,582評論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了文虏。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片侣诺。...
    茶點故事閱讀 38,716評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖氧秘,靈堂內(nèi)的尸體忽然破棺而出年鸳,到底是詐尸還是另有隱情,我是刑警寧澤丸相,帶...
    沈念sama閱讀 34,395評論 4 333
  • 正文 年R本政府宣布搔确,位于F島的核電站,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏膳算。R本人自食惡果不足惜座硕,卻給世界環(huán)境...
    茶點故事閱讀 40,039評論 3 316
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望涕蜂。 院中可真熱鬧华匾,春花似錦、人聲如沸机隙。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,798評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽有鹿。三九已至旭旭,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間葱跋,已是汗流浹背持寄。 一陣腳步聲響...
    開封第一講書人閱讀 32,027評論 1 266
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留娱俺,地道東北人稍味。 一個月前我還...
    沈念sama閱讀 46,488評論 2 361
  • 正文 我出身青樓,卻偏偏與公主長得像矢否,于是被迫代替她去往敵國和親仲闽。 傳聞我的和親對象是個殘疾皇子脑溢,可洞房花燭夜當晚...
    茶點故事閱讀 43,612評論 2 350

推薦閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 171,838評論 25 707
  • 文章來自:http://blog.csdn.net/mj813/article/details/52451355 ...
    好大一只鵬閱讀 9,189評論 2 126
  • vim編輯器 vim模式: 編輯-->輸入: 輸入-->編輯: 編輯-->末行: 末行-->編輯: 一 打開文件 ...
    阿錚OnMyWay閱讀 1,046評論 0 6
  • 抗癌防癌蔬菜排行: 01: 茶 98.7% 02: 生地瓜 94.4% 03: 蘆筍 93.9 % ...
    張學偉閱讀 250評論 0 0
  • 好希望有一個人屑彻,如驕陽下迎面吹來的清風验庙,如干旱時突然下起的傾盆大雨,如汪洋大海里的一座燈塔社牲,出現(xiàn)在這里粪薛,出現(xiàn)在我...
    Dawnkerwin閱讀 264評論 0 0