编写优秀Bug报告的艺术 ----转载自CSDN(imlogic的专栏)
(翻譯)編寫(xiě)優(yōu)秀Bug報(bào)告的藝術(shù)
? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?----------http://blog.csdn.net/imlogic/
前言
在99年的Quality week上的一次演講中,微軟的一個(gè)測(cè)試經(jīng)理,Roger Sherman指出了由于“不可重現(xiàn)”導(dǎo)致bug關(guān)閉的主要原因。這是一個(gè)非常可惜的情況,因?yàn)檫@樣的bug report浪費(fèi)了緊張的開(kāi)發(fā)計(jì)劃中的寶貴時(shí)間,增加了對(duì)產(chǎn)品質(zhì)量完全是無(wú)關(guān)緊要的事情,同時(shí)導(dǎo)致了在開(kāi)發(fā)人員和測(cè)試之間的挫敗感和差的感覺(jué)。有時(shí),bug report是由于短暫的或隨機(jī)的事件,測(cè)試和開(kāi)發(fā)之間不一致的工具和配置,或者在測(cè)試的環(huán)境下對(duì)正確的行為的模糊定義而產(chǎn)生的,但是許多的由于不可重現(xiàn)而被關(guān)閉的測(cè)試報(bào)告是因?yàn)槊枋霾磺逦?#xff0c;被誤解,或者只是文字的錯(cuò)誤。
幸運(yùn)的是,我學(xué)習(xí)到一些能夠引起管理層注意,更清楚的和開(kāi)發(fā)人員溝通并得到修復(fù)的編寫(xiě)優(yōu)秀bug report的訣竅。這些技巧不僅僅提供了是在被修復(fù)的問(wèn)題的比例方面得到了可靠的回報(bào),而且在同開(kāi)發(fā)人員和管理層的通過(guò)中也得到了回報(bào)。在我管理的項(xiàng)目中使用這種方法編寫(xiě)bug report,8份bug report中大約只有一個(gè)沒(méi)有被修復(fù)。
這篇文章的思想只有當(dāng)你的報(bào)告針對(duì)的測(cè)試執(zhí)行過(guò)程是專業(yè)的質(zhì)量工作才可以發(fā)揮作用。聰明地執(zhí)行完整的測(cè)試包是產(chǎn)生可靠的測(cè)試狀況信息的基礎(chǔ)的其中一個(gè)因素。在許多的測(cè)試文獻(xiàn)中廣泛地介紹了多種多樣的關(guān)于如何構(gòu)建這樣的測(cè)試包的方法。選擇和你質(zhì)量風(fēng)險(xiǎn)管理需求相一致的技術(shù)并且使之適應(yīng)你的具體情況,敏捷地監(jiān)督已計(jì)劃的測(cè)試的執(zhí)行過(guò)程,這樣你就可以擁有可靠的測(cè)試執(zhí)行過(guò)程。
另外一個(gè)關(guān)鍵的因素-bug report,卻沒(méi)有得到太多的關(guān)注。這是非常令人遺憾的,因?yàn)閮?yōu)秀的bug report對(duì)反映測(cè)試小組真實(shí)的和可理解的工作質(zhì)量同測(cè)試本身一樣都是非常重要的。試想一下:如果你不能用開(kāi)發(fā)人員能夠理解的術(shù)語(yǔ)和能夠用于調(diào)試的方法給開(kāi)發(fā)人員解釋一個(gè)錯(cuò)誤,他怎么能夠修復(fù)問(wèn)題呢?如果你不能夠在bug report中提出象“保險(xiǎn)桿標(biāo)簽”(bumper sticker)一樣的錯(cuò)誤總結(jié)來(lái)引起管理層的注意,你又如何讓他們關(guān)心你們發(fā)現(xiàn)的問(wèn)題呢?
Bug report的核心是對(duì)錯(cuò)誤的描述。表格1中是一個(gè)關(guān)于好和差的錯(cuò)誤描述的例子。編寫(xiě)好的bug report是一種好的藝術(shù)形式。采用以下的10條技巧可以幫助你的小組提高編寫(xiě)bug report的質(zhì)量:
組織Structure:測(cè)試人員應(yīng)該采用深思熟慮的,小心謹(jǐn)慎的方法執(zhí)行測(cè)試,并且做詳盡的記錄。這樣可以促使他們對(duì)測(cè)試下的系統(tǒng)有很好的認(rèn)識(shí)。當(dāng)錯(cuò)誤發(fā)生的時(shí)候,一個(gè)有組織的測(cè)試人員能夠知道最早出現(xiàn)問(wèn)題的地方。
重現(xiàn)Reproduce:測(cè)試人員在編寫(xiě)bug report之前必須在檢查問(wèn)題是否可重現(xiàn)。如果錯(cuò)誤不可再重現(xiàn),仍然應(yīng)該寫(xiě)下來(lái),但是必須說(shuō)明問(wèn)題的偶然性。一個(gè)好的處理原則就是在編寫(xiě)bug report之前反復(fù)嘗試3次。
隔離Isolate:在嘗試編寫(xiě)bug report之前,必須試著隔離錯(cuò)誤。可以采用改變一些變量的方法,如系統(tǒng)的配置,它可能可以改變錯(cuò)誤的癥狀。這些信息可以為開(kāi)發(fā)人員著手調(diào)試提供思路。
歸納Generalize:在測(cè)試人員發(fā)現(xiàn)了一個(gè)已隔離的,可重現(xiàn)的問(wèn)題后,應(yīng)該對(duì)問(wèn)題進(jìn)行歸納。同一個(gè)問(wèn)題是否出現(xiàn)在其他的模塊或其他的地方?同一個(gè)故障是否有更加嚴(yán)重的問(wèn)題?
對(duì)比Compare:如果測(cè)試人員以前曾經(jīng)驗(yàn)證過(guò)現(xiàn)在出錯(cuò)的測(cè)試用例,那么他就應(yīng)該檢查以前的測(cè)試結(jié)果以檢查相同的條件是否通過(guò)以前的測(cè)試。如果是的話,那么這個(gè)問(wèn)題就象是一個(gè)回歸的錯(cuò)誤。注意由于同一測(cè)試條件有可能出現(xiàn)在多個(gè)測(cè)試用例中,這個(gè)步驟就不僅僅只是檢查一個(gè)測(cè)試用例在以前的多個(gè)結(jié)果。
總結(jié)Summarize:在bug report的第一行寫(xiě)上錯(cuò)誤的總結(jié)是非常關(guān)鍵的。測(cè)試人員要花些時(shí)間思考已發(fā)現(xiàn)的錯(cuò)誤對(duì)客戶有何影響。這不僅僅要求測(cè)試人員編寫(xiě)的報(bào)告要能夠吸引讀者,使和管理層的溝通清晰,還要能夠幫助設(shè)置錯(cuò)誤修復(fù)的優(yōu)先級(jí)別。
精簡(jiǎn)Condense:在bug report的初稿完成后,測(cè)試人員應(yīng)該反復(fù)閱讀它,集中剔除那些沒(méi)有關(guān)系的步驟或詞語(yǔ)。隱含的或模糊的說(shuō)明和那些由于對(duì)沒(méi)有任何關(guān)系的細(xì)節(jié)或者那些在重現(xiàn)錯(cuò)誤過(guò)程中不需要的步驟而消磨報(bào)告歡迎程度的無(wú)窮嘮叨都不是bug report的目標(biāo)。
消除歧義Disambiguate:測(cè)試人員在精簡(jiǎn)空話的同時(shí)或其之后隨即應(yīng)該再仔細(xì)檢查報(bào)告是否有會(huì)產(chǎn)生誤解的地方。測(cè)試人員應(yīng)該盡量避免使用模糊的,會(huì)產(chǎn)生歧義的和主觀的詞語(yǔ)。目標(biāo)是使用能夠表述事實(shí),清楚的,不會(huì)產(chǎn)生爭(zhēng)執(zhí)的詞語(yǔ)。
中立Neutralize:如文中所述,作為壞消息的傳遞人,和善地提交消息是一個(gè)挑戰(zhàn)。如同所有的錯(cuò)誤總結(jié)一樣,獨(dú)立的bug report在措辭方面應(yīng)該保持公正。攻擊開(kāi)發(fā)人員,指責(zé)潛在的錯(cuò)誤,企圖詼諧或使用挖苦將引起開(kāi)發(fā)人員的憎惡,并且使注意力從“提高產(chǎn)品質(zhì)量”這個(gè)大的目標(biāo)上轉(zhuǎn)移開(kāi)了。謹(jǐn)慎的測(cè)試人員只用Bug report來(lái)描述事實(shí)。
檢查Review:一旦測(cè)試人員感覺(jué)bug report是他能夠編寫(xiě)的最好版本,他應(yīng)該將報(bào)告再給一個(gè)或多個(gè)同行進(jìn)行檢查。他的同事們也應(yīng)該給出一些建議,為了澄清問(wèn)題不斷地提問(wèn),如果適當(dāng)?shù)脑?#xff0c;甚至可以挑戰(zhàn)“錯(cuò)誤成災(zāi)”的結(jié)論。在允許的時(shí)間里,測(cè)試小組應(yīng)該盡可能提交最好的bug report。
以上10條技巧可以幫助你和你的小組提交準(zhǔn)確簡(jiǎn)潔的,徹底校訂的,精心構(gòu)思的,高質(zhì)量的技術(shù)文檔。測(cè)試小組應(yīng)該集中編寫(xiě)bug report的任務(wù),測(cè)試組長(zhǎng)和經(jīng)理應(yīng)該讓測(cè)試組成員清楚地認(rèn)識(shí)到編寫(xiě)優(yōu)秀的bug report是一項(xiàng)首要的工作任務(wù)。衡量?jī)?yōu)秀的bug report的質(zhì)量指標(biāo)應(yīng)該包括如下:
o? ?? ???對(duì)管理層來(lái)說(shuō),是清晰明了的,特別是在概要這一級(jí);
o? ?? ???對(duì)于開(kāi)發(fā)部門(mén)是有用的,主要是給出能夠讓開(kāi)發(fā)人員高效地調(diào)試問(wèn)題的相關(guān)信息
o? ?? ???可以很快的將bug從“Opened”狀態(tài)轉(zhuǎn)變成“Closed”狀態(tài),減少為得到更多的信息從開(kāi)發(fā)人員打回的差的bug report并導(dǎo)致測(cè)試人員返工的時(shí)間。
改進(jìn)bug報(bào)告的流程是需要花費(fèi)一些時(shí)間的,但是也給予了效果顯著的回報(bào)。首先,簡(jiǎn)單的流程改進(jìn)了測(cè)試小組和高層、平行管理層之間的溝通,增強(qiáng)小組的信任度,名望和鼓勵(lì)管理層給測(cè)試投資更多的資源。第二,平穩(wěn)地遞交報(bào)告給開(kāi)發(fā)人員促進(jìn)了測(cè)試和開(kāi)發(fā)人員之間積極的關(guān)系。第三,更短的bug生命周期是更加有效的,在時(shí)間上之前花費(fèi)在編寫(xiě)優(yōu)秀bug report上的時(shí)間和后期由于返工差的bug report花費(fèi)的時(shí)間相抵消。這些回報(bào)幫助開(kāi)發(fā)流程通過(guò)有效的溝通和高效率的流程獲得更好的產(chǎn)品質(zhì)量。
[[i] Last edited by eatmouse on 2005-6-1 at 08:44 [/i]]
===
這里還有一篇,參考下。
| 你有沒(méi)有為了要更多的信息而被返回 bug report 的經(jīng)歷呢?有沒(méi)有碰到過(guò)你發(fā)現(xiàn)的一個(gè)非常嚴(yán)重的錯(cuò)誤被推遲到下一個(gè)版本才去修復(fù)的情況呢? 你提交的每一個(gè) bug report 都是和項(xiàng)目組就正在測(cè)試中的軟件質(zhì)量問(wèn)題的一種書(shū)面溝通方式。通常,你用于溝通程序錯(cuò)誤的能力-不是體現(xiàn)在錯(cuò)誤本身的內(nèi)在嚴(yán)重程度-而是體現(xiàn)在確定這個(gè)錯(cuò)誤是否需要修復(fù)。 如果這是一個(gè)可怕的想法,你可能會(huì)想, “ 等等!我討厭寫(xiě)作,我并不擅長(zhǎng)寫(xiě)作。怎么樣才能夠通過(guò)編寫(xiě) bug report 來(lái)決定錯(cuò)誤的命運(yùn)呢? ” 它要吸引大家相信錯(cuò)誤是為他們說(shuō)話的-任何一個(gè)頭腦正常的人都應(yīng)該主動(dòng)地查看一個(gè)特定的錯(cuò)誤是足夠可怕的以致要被修復(fù)。不幸的是,事實(shí)并不是這樣。 但是好消息是:有效的和軟件開(kāi)發(fā)人員、項(xiàng)目組溝通的能力不是由你在高校英語(yǔ)課程中的表現(xiàn)所決定的。 這不是關(guān)于用有趣的詞語(yǔ)編寫(xiě)流暢散文,也不是關(guān)于優(yōu)秀語(yǔ)法和拼寫(xiě)的方法。它是有關(guān)僅用能夠表達(dá)你觀點(diǎn)的詞語(yǔ)明白地表述錯(cuò)誤的方法。太多地話將會(huì)使你的觀點(diǎn)陷入茫然無(wú)措中。太少地話又會(huì)使他人用自己的假設(shè)去填補(bǔ)隔閡-通常是對(duì)軟件有害的部分。如果你不是很確信是什么樣的錯(cuò)誤,那么不管你的 bug report 寫(xiě)得怎么好,也沒(méi)有人知道那是什么樣的錯(cuò)誤。 這篇文章主要討論你現(xiàn)在能夠開(kāi)始著手提高人們傾聽(tīng)你發(fā)現(xiàn)的錯(cuò)誤的機(jī)會(huì)的 4 個(gè)方法。 ?? ? ? ? 了解你的聽(tīng)眾 毋庸置疑,任何寫(xiě)作課都會(huì)告訴你必須了解你是為誰(shuí)編寫(xiě) bug report 。 每份 bug report 至少有兩個(gè)聽(tīng)眾:必須要修復(fù)錯(cuò)誤的人和決定錯(cuò)誤命運(yùn)的人或團(tuán)體。有時(shí)一個(gè)人會(huì)同時(shí)負(fù)責(zé)這兩份工作,但是仍然是兩個(gè)不同的聽(tīng)眾,只是一起發(fā)生在同一個(gè)人身上罷了。 你的第一個(gè)聽(tīng)眾-那個(gè)必須修復(fù)錯(cuò)誤的人需要清楚,明確的步驟以重現(xiàn)錯(cuò)誤。信息越多越好。針對(duì)這個(gè)目的,我們稱這個(gè)人為 “ 開(kāi)發(fā)人員 ” 。開(kāi)發(fā)人員需要關(guān)于我們操作了什么和我們看見(jiàn)了什么的準(zhǔn)確信息。 你的第二個(gè)聽(tīng)眾-決定錯(cuò)誤命運(yùn)的人或團(tuán)體需要知道如果不修復(fù)此錯(cuò)誤的后果。這個(gè)聽(tīng)眾需要精練的語(yǔ)句以抓住他們的注意力并且引發(fā)對(duì)錯(cuò)誤的相關(guān)連問(wèn)題的討論。基于這個(gè)目的,我們稱他為 “ 錯(cuò)誤審核委員會(huì) ” 。在使錯(cuò)誤得以修復(fù)的過(guò)程中你的角色是幫助錯(cuò)誤審核委員會(huì)了解不修復(fù)錯(cuò)誤的風(fēng)險(xiǎn)遠(yuǎn)遠(yuǎn)超過(guò)修復(fù)錯(cuò)誤可能發(fā)生的風(fēng)險(xiǎn)。 你越了解你的開(kāi)發(fā)人員和錯(cuò)誤審核委員會(huì)如何工作,你就越可以根據(jù)他們的需要裁減你的 bug report 。盡力在私底下設(shè)法了解你的聽(tīng)眾。如果你能夠出席錯(cuò)誤審核委員會(huì)會(huì)議,嘗試這樣做。你將學(xué)習(xí)到許多關(guān)于你的聽(tīng)眾是如何思考的知識(shí)。 ?? ? ? ? 選擇一個(gè)好的標(biāo)題 一般把用于描述錯(cuò)誤的短句稱為錯(cuò)誤的標(biāo)題或描述。這是 bug report 中最重要的部分。錯(cuò)誤審核委員會(huì)成員經(jīng)常通過(guò)它來(lái)決定錯(cuò)誤是否可以推遲修復(fù)。如果標(biāo)題沒(méi)有力度,委員會(huì)成員可能認(rèn)為它是不值得花費(fèi)太多的時(shí)間。(畢竟,在接下來(lái)的 2 個(gè)小時(shí)里還有 145 個(gè)以上的錯(cuò)誤要審核。) 以下是一些示例: 好的 : 超時(shí)后在退出時(shí)崩潰了 太長(zhǎng)的 : 在數(shù)據(jù)庫(kù)不可用后你又保存記錄的更改 , 然后從文件菜單中選擇退出時(shí)程序崩潰了 不足夠的信息 : 程序崩潰了 太模糊 : 當(dāng)數(shù)據(jù)庫(kù)離線時(shí)出現(xiàn)問(wèn)題 標(biāo)題變成了一種給項(xiàng)目組提供檢查和調(diào)查錯(cuò)誤的方法。和數(shù)據(jù)相比,人們更容易記詞語(yǔ)。人們更愿意記得 “ 在 windows2000 下不能夠安裝 ” 的錯(cuò)誤,而不是類似 “ # 23423” 錯(cuò)誤,而且在以后人們還會(huì)利用這些關(guān)鍵詞搜索錯(cuò)誤。 編寫(xiě)一個(gè)好的,簡(jiǎn)明的錯(cuò)誤標(biāo)題是不容易的。和編寫(xiě) bug report 的其他部分相比,應(yīng)該多花些時(shí)間構(gòu)造理想的錯(cuò)誤標(biāo)題。要確信標(biāo)題是足夠短以便能夠在顯示錯(cuò)誤的屏幕上和由缺陷跟蹤系統(tǒng)生成的報(bào)表中顯示完全(不會(huì)折行)。標(biāo)題不必是完美的語(yǔ)法,而應(yīng)簡(jiǎn)短并一針見(jiàn)血。 ?? ? ? ? 書(shū)寫(xiě)清楚,明確的步驟 你提交給開(kāi)發(fā)人員的步驟應(yīng)該提供如何產(chǎn)生錯(cuò)誤的信息,這樣錯(cuò)誤就能夠被發(fā)現(xiàn)并且修復(fù)。它也需要給錯(cuò)誤審核委員會(huì)提供錯(cuò)誤發(fā)生的環(huán)境。 唯一正確 : 1 .運(yùn)行客戶端 2 .找出一個(gè)記錄 3 .更改記錄但不存盤(pán) 4 .使數(shù)據(jù)庫(kù)服務(wù)器脫機(jī) 5 .嘗試保存記錄 6 .收到一個(gè)超時(shí)的錯(cuò)誤 7 .退出客戶端 結(jié)果:崩潰 馬虎的(有很大空間讓人產(chǎn)生誤解的 ): 使數(shù)據(jù)庫(kù)服務(wù)器脫機(jī),保存,然后退出,崩潰了。 太多冗余的信息(不能夠指出什么是引發(fā)錯(cuò)誤的最關(guān)鍵原因) 1 .運(yùn)行客戶端 2 .為輸入新的條目查詢數(shù)據(jù)庫(kù) 3 .打開(kāi)一個(gè)瀏覽器 4 .在 yahoo.com 上瀏覽新聞 5 .關(guān)閉瀏覽器 6 .選擇一個(gè)條目 7 .把種類從 “ 蔬菜 ” 更改到 “ 水果 ” 8 .使數(shù)據(jù)庫(kù)服務(wù)器脫機(jī) 9 .嘗試保存記錄 10 .收到一個(gè)超時(shí)的錯(cuò)誤 11 .退出客戶端 結(jié)果:崩潰 |
總結(jié)
以上是生活随笔為你收集整理的编写优秀Bug报告的艺术 ----转载自CSDN(imlogic的专栏)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 微软总裁:比尔盖茨人生简介和名言
- 下一篇: profiler 对表跟踪