Posted on 2006-11-02 22:59
neter 閱讀(269)
評(píng)論(0) 編輯 收藏 引用 所屬分類:
軟件測(cè)試初探
你有沒(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é)果:崩潰
在這個(gè)例子中,測(cè)試人員記錄在發(fā)現(xiàn)錯(cuò)誤之前他所作的一切,但是他沒(méi)有檢查是不是每個(gè)步驟都是必要的,例如從yahoo.com閱讀新聞。
如果你只寫(xiě)下那些產(chǎn)生錯(cuò)誤必不可少的步驟,開(kāi)發(fā)人員將很少告訴你他們不能夠重現(xiàn)錯(cuò)誤,同樣錯(cuò)誤什么委員會(huì)也會(huì)很少?zèng)Q定“沒(méi)有人將會(huì)做到那個(gè)程度!”
但是如果每個(gè)步驟都是必須的,怎么辦呢?如果錯(cuò)誤只在你執(zhí)行了一些看上去沒(méi)有關(guān)系的步驟后出現(xiàn)了,那么在bug report中記錄下這些步驟。你可以在那些看上去沒(méi)有邏輯關(guān)系的步驟后寫(xiě)上“必須的步驟”,或者你可以在bug report的開(kāi)始部分加上注釋:“注意-這里的每一個(gè)步驟都是重現(xiàn)錯(cuò)誤的必要步驟。
編寫(xiě)清晰的步驟同樣可以在驗(yàn)證修復(fù)過(guò)程中提供幫助,特別是在另一個(gè)測(cè)試人員做驗(yàn)證的時(shí)候。
解釋錯(cuò)誤的影響,不只是癥狀
一些bug report是令人誤解的。從錯(cuò)誤的表層看是無(wú)傷大雅的,但是如果在你檢查錯(cuò)誤的牽連時(shí),你發(fā)現(xiàn)它是一個(gè)非常嚴(yán)重的問(wèn)題。如果你在錯(cuò)誤審核委員會(huì),你會(huì)擁護(hù)先修改哪一個(gè)錯(cuò)誤呢?
1.? 關(guān)于“一個(gè)令人討厭的對(duì)話框阻止關(guān)閉應(yīng)用程序”的報(bào)告
2.? 關(guān)于“在退出時(shí)應(yīng)用程序中止了” 的報(bào)告
這兩個(gè)是同一個(gè)錯(cuò)誤。差異完全在于測(cè)試人員如何編寫(xiě)bug report。
在此提到的“令人討厭的對(duì)話框”是指Windows操作系統(tǒng)中顯示不能退出進(jìn)程的窗口(“這個(gè)Windows應(yīng)用程序不能響應(yīng)結(jié)束任務(wù)的請(qǐng)求。。。”)。測(cè)試人員在試圖關(guān)閉機(jī)器而不是退出應(yīng)用程序時(shí)發(fā)現(xiàn)這個(gè)問(wèn)題。應(yīng)用程序沒(méi)有等待來(lái)自用戶的輸入,因此退出失敗是沒(méi)有原因的。實(shí)際上,這個(gè)癥狀指出了更深的問(wèn)題-在第一個(gè)關(guān)于“令人討厭的對(duì)話框”的bug report被推遲修復(fù)時(shí)幾乎要遺漏的問(wèn)題。
這個(gè) “令人討厭的對(duì)話框”的bug report存在著兩個(gè)問(wèn)題。首先,它不精確。如果測(cè)試人員在步驟中包括了“令人討厭的對(duì)話框”中的文字,決策者可以認(rèn)識(shí)到對(duì)話框是一個(gè)嚴(yán)重的問(wèn)題而不是一個(gè)微小的干擾。第二,這份報(bào)告沒(méi)有指出錯(cuò)誤的其他隱藏的問(wèn)題:應(yīng)用程序被中止了。
結(jié)論
我們都想把自己的工作變得與眾不同。我們想知道是因?yàn)槲覀兣Φ墓ぷ鞫沟密浖淖罱K版本更好。我們用來(lái)溝通錯(cuò)誤的能力在我們是否有盡我們希望多地影響軟件的最終版本中是決定因素。
因此當(dāng)你編寫(xiě)bug report時(shí),記住你的聽(tīng)眾,選擇一個(gè)好的標(biāo)題,清楚的記錄步驟并解釋錯(cuò)誤的影響。你的bug report將會(huì)因?yàn)槟慊ㄔ谒厦娴母裢馀Χ茫⑶矣懈嗟腻e(cuò)誤被修復(fù)。最終將達(dá)到我們期望的結(jié)果-使錯(cuò)誤在傷害用戶之前得到修復(fù)。