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