“出錯了”和報告Bug的藝術(shù)
“出錯了?!?/p>
沒有那句話能像“出錯了”一樣讓程序員/開發(fā)者如此沮喪,心里翻江倒海,怒火一點即燃,還要死掉一大片腦細胞。
這句生硬的開場白通常標志著讓開發(fā)者恐懼的長時間排錯工作要開始了。
在我的職業(yè)生涯中,我就進行過好幾次這樣的對話:
“出錯了?!薄笆裁闯鲥e了?”“網(wǎng)站?!薄熬W(wǎng)站什么地方出錯了?”“我不確定。你把它弄好就是了。“
對于很多的非技術(shù)人員來說,這句話在邏輯推理方面簡直滴水不漏。畢竟,他的工作不是測試網(wǎng)站,所以指出哪里出錯也不是他的職責。
但是,他發(fā)出了一個非常模糊的錯誤報告,意味著他決定承擔起責任,報告一個需要修復(fù)的錯誤,同時,他也讓修復(fù)過程變得耗時而混亂。
Bug:程序員的肉中刺
愛也好,恨也罷,bug是所有軟件中不可避免的一部分。很多bug可以在程序員好幾小時的試錯中找到并修復(fù)。對于一名工程師,如果沒有花大量時間去和問題提交者交談,進行枯燥乏味的反復(fù)嘗試以復(fù)現(xiàn)問題,他就不可能推斷出問題到底是什么。修復(fù)bug的工作量很大。
“出錯了”這樣一句模糊的報告簡直可以是任何情況——網(wǎng)站可能宕機,注冊頁面可能出錯了,某個應(yīng)用可能在你不知不覺時把用戶的裸體拍下來并用電子郵件發(fā)給他們的朋友們——就是沒有辦法搞清楚是何種情況。
驚喜!你是質(zhì)量管理員
即使進行了最嚴格的質(zhì)量保證(QA)測試,還是會不時有漏網(wǎng)的bug。對于小型團隊以及個人開發(fā)者,通常根本沒有任何正規(guī)的質(zhì)量保證測試——這使得客戶、經(jīng)理或是員工都要承擔一部分質(zhì)量保證工作職責。
作為一名和軟件開發(fā)者一起工作的非技術(shù)人員,你總要在一定程度上扮演質(zhì)量保證測試員的角色——無論這是否包括在你的崗位描述中。接受你的新職責對你有百利而無一害。當嚴重的bug影響了工作,讓整個團隊面色凝重,你若能幫助尋找bug,會讓bug更快地得到解決。
報告Bug的正確方式
現(xiàn)在說說如何撰寫一份bug報告,它可以幫助縮小問題的范圍,可以讓你的開發(fā)者高興,還可以讓你的軟件盡快正常運行。
一份優(yōu)秀的bug報告應(yīng)該包括以下部分:
1)概述
出了什么問題?總結(jié)一下,不超過10個字。
2)定位
哪里出了問題?如果是一個網(wǎng)站,把網(wǎng)址復(fù)制粘貼下來。如果不是,給出發(fā)生問題的窗口名稱。
3)軟件的運行環(huán)境是什么?
你是用的PC還是MAC?Firefox還是Chrome?iPad還是iPhone?iOS還是安卓?軟件的版本是什么?你安裝了什么瀏覽器插件?后臺有哪些奇怪的軟件在運行?
4)描述問題。
詳細描述發(fā)生的問題。
5)列出問題復(fù)現(xiàn)的步驟。
描述問題發(fā)生前你做的每一個步驟。例如:“1)打開瀏覽器;2)訪問www.mysite.com;3)點擊“登錄”按鈕”
6)期待情況以及實際情況
要寫出當你執(zhí)行了上述步驟后你期待發(fā)生什么,以及實際發(fā)生了什么。例如:“期待情況:顯示登錄表單。實際情況:一幅圖片顯示出來,上面有一只泰迪熊和一句話『網(wǎng)站故障,請耐心等待。』”
7)提出修復(fù)建議
你認為你知道如何搞定這個問題?太好了!為工程師節(jié)省點時間,讓他們少些困擾,把你關(guān)于應(yīng)該如何解決問題的想法寫下來吧。
8)截屏!
如果你能看見問題的場景,將它截屏并附在報告中。有時,這是你在bug報告中提交的最重要的一件事。如果你能在截圖上標示以指明問題,那就更好了。截屏取決于你使用的何種電腦或設(shè)備。如果無法截屏,用你的手機對屏幕拍照并發(fā)送出去。
9)優(yōu)先級
優(yōu)先級具有主觀性,對于bug報告者總是覺得任何事都是最最重要。但是為了公平,先深呼吸一下,再考慮問題究竟有多重要。下列條目對你有所幫助。
1.極度重要:“停下其他事,馬上修復(fù)此問題!?。?!”
2.重要:“需要盡快解決?!?br />3.一般:“快點修復(fù),但如果不能馬上解決也可以?!?br />4.不重要:“如果有必要,這個問題可以推后處理?!?br />5.極不重要:“這個想法或建議應(yīng)該暫緩執(zhí)行,以后再說?!?/p>
讓工程師們愛上你
如果你發(fā)現(xiàn)了錯誤——不管它看起來多么嚇人,停下你手里的事,后退一步,寫一份合適的bug報告吧。
如果你的開發(fā)者建有問題追蹤系統(tǒng),你應(yīng)該登錄上去,但如果你沒有登上去(或是找不到),你可以發(fā)出電郵或是開始寫一個文檔。如果你經(jīng)歷了很多的bug,嘗試著建立一個電子表格將它們?nèi)苛谐鰜聿⒎职l(fā)出去。不要只是給工程師們打電話或是發(fā)給他們一行字的短信。對你發(fā)現(xiàn)的bug建檔之后再發(fā)出警報,工程師們會利用你的報告來確定問題的優(yōu)先級,并在修復(fù)過程中將其作為參考。
所以,現(xiàn)在你在檢查開發(fā)者推出的全新軟件或是讓你氣都喘不上來的東西時,你知道怎樣可以修復(fù)得更快、更高效,還不會打擊到你的工程師們。你成為了團隊里有用的一份子,而不是半點線索都不能提供的局外人,而且也許在這一過程中你學到的東西可以讓你成為一位軟件內(nèi)行呢。
原文鏈接:?Ron Whitman???翻譯:?伯樂在線?-?toolate