15.12本章討論
15.12.1韓昭候
果凍:韓昭候真過(guò)分!我很好心地幫助別的同事,沒有功勞也有苦勞,他怎么能說(shuō)“甚于寒”?這樣我的心都寒了。
阿亨:果凍,你不是有“各司其職”的筆記么,好好看看。
九條:謝謝你的幫助,你如果急需驗(yàn)證某些問題,可以告訴我,我會(huì)安排盡量早日完成。
15.12.2測(cè)試經(jīng)驗(yàn)交流
測(cè)試進(jìn)行一段時(shí)間后,大家發(fā)現(xiàn)阿毛報(bào)告的bug 比較多,九條其次,小燕最少。阿亨讓測(cè)試人員交流一下各自的經(jīng)驗(yàn)。
阿毛:我的原則是“如果問題看起來(lái)像一個(gè)bug,那我就要報(bào)告這個(gè)bug”。寧可多報(bào)一千,也不放過(guò)一個(gè)。這個(gè)原則也導(dǎo)致了我的bug 有不少被歸為“As Design”。
阿亨:“As Design”也不是什么壞事,至少我們明確了Design 是什么。這樣以后就有依據(jù)了。
小燕:我發(fā)現(xiàn)了一個(gè)問題,都是先跑去找開發(fā)人員商量是什么情況?;蛘咦约貉芯?,想找到問題的根源,再報(bào)告。
九條:小燕的做法,似乎越界到了開發(fā)人員的職責(zé)范圍了。我們的職責(zé)就是找到足夠多的bug,讓開發(fā)人員有事可干。
阿亨:可以選定一個(gè)典型用戶(Persona),然后按照典型人物的思路和看問題的角度,把整個(gè)系統(tǒng)的各項(xiàng)功能都經(jīng)歷一遍。如果有什么你覺得典型用戶不滿意的,那就可以考慮開一個(gè)bug。我有時(shí)知道這個(gè)功能的設(shè)計(jì)想法,但是在測(cè)試的時(shí)候沒必要替別人考慮太多,要把自己當(dāng)成用戶,而不是設(shè)計(jì)者。
阿毛:測(cè)試的時(shí)候,要各個(gè)角度都試試看,一些犄角旮旯也得用一些隨機(jī)的數(shù)據(jù)去搗搗亂。黑箱、白箱都可以換著玩。就像對(duì)軟件一竅不通的用戶在使用軟件一樣。
阿亨:阿毛的這一個(gè)經(jīng)驗(yàn),用正式的語(yǔ)言描述就是:保證測(cè)試方法的多樣化。
九條:我拿到一個(gè)測(cè)試任務(wù),就想:這個(gè)功能最可能出問題的會(huì)是在什么地方?然后就集中火力,在容易出問題的地方測(cè)試。比如如果一個(gè)產(chǎn)品的標(biāo)題長(zhǎng)度規(guī)定是32個(gè)字符,那我就測(cè)試31,32,33個(gè)字符,看看在這種邊界條件下是否會(huì)出問題。
阿毛:測(cè)試的時(shí)候還要舉一反三,看到產(chǎn)品標(biāo)題字段出了問題,我就會(huì)檢查一下別的字段有沒有類似的問題。
阿亨:對(duì),我們要注重從產(chǎn)品的風(fēng)險(xiǎn)出發(fā),進(jìn)行測(cè)試。還有,我們要根據(jù)當(dāng)前的產(chǎn)品特性來(lái)決定測(cè)試的策略,不必強(qiáng)求一律,舉一反三很重要。
阿毛:有時(shí)候我測(cè)試自己負(fù)責(zé)的功能比較多了,我就想和別人換一換,有點(diǎn)新鮮感。不料小燕拒絕了我的交換請(qǐng)求,說(shuō)是沒經(jīng)過(guò)領(lǐng)導(dǎo)批準(zhǔn),是侵官之害。我只好和九條交換。
阿亨:我批準(zhǔn)這樣的交換,關(guān)鍵是找到bug。我們都是同一類工作人員,在事先安排好的情況下,不存在“侵官之害”的問題。
小燕:我發(fā)現(xiàn)隨著bug 的增多,我又要驗(yàn)證以前的bug,又要發(fā)現(xiàn)新的bug,工作量越來(lái)越大,你們都怎么辦?
九條:我一般都把一些比較穩(wěn)定的測(cè)試寫成自動(dòng)測(cè)試,這樣就減輕了我手工測(cè)試的壓力。
15.12.3傳說(shuō)中的拐點(diǎn)
小飛:我聽說(shuō)在軟件項(xiàng)目中,有這樣一個(gè)拐點(diǎn)存在——在這一點(diǎn)之前,新的bug產(chǎn)生的數(shù)量大于bug解決的數(shù)量;在這一點(diǎn)之后,bug的解決數(shù)量大于新的bug 產(chǎn)生的數(shù)量。這樣bug的曲線就向下移動(dòng)。我們移山項(xiàng)目的拐點(diǎn)到了么?
阿超:我也聽說(shuō)過(guò),不過(guò)我們不能等待拐點(diǎn)的到來(lái),對(duì)于我們這樣的日期驅(qū)動(dòng)的項(xiàng)目,拐點(diǎn)必須在發(fā)布日之前的若干時(shí)間發(fā)生,如果我們的bug 數(shù)量還是繼續(xù)向上攀升,我們無(wú)法保證以后曲線會(huì)像懸崖一樣掉下來(lái)。我們就得主動(dòng)讓拐點(diǎn)發(fā)生,例如推遲一些bug,砍掉一些功能,等等。
15.12.1韓昭候
果凍:韓昭候真過(guò)分!我很好心地幫助別的同事,沒有功勞也有苦勞,他怎么能說(shuō)“甚于寒”?這樣我的心都寒了。
阿亨:果凍,你不是有“各司其職”的筆記么,好好看看。
九條:謝謝你的幫助,你如果急需驗(yàn)證某些問題,可以告訴我,我會(huì)安排盡量早日完成。
15.12.2測(cè)試經(jīng)驗(yàn)交流
測(cè)試進(jìn)行一段時(shí)間后,大家發(fā)現(xiàn)阿毛報(bào)告的bug 比較多,九條其次,小燕最少。阿亨讓測(cè)試人員交流一下各自的經(jīng)驗(yàn)。
阿毛:我的原則是“如果問題看起來(lái)像一個(gè)bug,那我就要報(bào)告這個(gè)bug”。寧可多報(bào)一千,也不放過(guò)一個(gè)。這個(gè)原則也導(dǎo)致了我的bug 有不少被歸為“As Design”。
阿亨:“As Design”也不是什么壞事,至少我們明確了Design 是什么。這樣以后就有依據(jù)了。
小燕:我發(fā)現(xiàn)了一個(gè)問題,都是先跑去找開發(fā)人員商量是什么情況?;蛘咦约貉芯?,想找到問題的根源,再報(bào)告。
九條:小燕的做法,似乎越界到了開發(fā)人員的職責(zé)范圍了。我們的職責(zé)就是找到足夠多的bug,讓開發(fā)人員有事可干。
阿亨:可以選定一個(gè)典型用戶(Persona),然后按照典型人物的思路和看問題的角度,把整個(gè)系統(tǒng)的各項(xiàng)功能都經(jīng)歷一遍。如果有什么你覺得典型用戶不滿意的,那就可以考慮開一個(gè)bug。我有時(shí)知道這個(gè)功能的設(shè)計(jì)想法,但是在測(cè)試的時(shí)候沒必要替別人考慮太多,要把自己當(dāng)成用戶,而不是設(shè)計(jì)者。
阿毛:測(cè)試的時(shí)候,要各個(gè)角度都試試看,一些犄角旮旯也得用一些隨機(jī)的數(shù)據(jù)去搗搗亂。黑箱、白箱都可以換著玩。就像對(duì)軟件一竅不通的用戶在使用軟件一樣。
阿亨:阿毛的這一個(gè)經(jīng)驗(yàn),用正式的語(yǔ)言描述就是:保證測(cè)試方法的多樣化。
九條:我拿到一個(gè)測(cè)試任務(wù),就想:這個(gè)功能最可能出問題的會(huì)是在什么地方?然后就集中火力,在容易出問題的地方測(cè)試。比如如果一個(gè)產(chǎn)品的標(biāo)題長(zhǎng)度規(guī)定是32個(gè)字符,那我就測(cè)試31,32,33個(gè)字符,看看在這種邊界條件下是否會(huì)出問題。
阿毛:測(cè)試的時(shí)候還要舉一反三,看到產(chǎn)品標(biāo)題字段出了問題,我就會(huì)檢查一下別的字段有沒有類似的問題。
阿亨:對(duì),我們要注重從產(chǎn)品的風(fēng)險(xiǎn)出發(fā),進(jìn)行測(cè)試。還有,我們要根據(jù)當(dāng)前的產(chǎn)品特性來(lái)決定測(cè)試的策略,不必強(qiáng)求一律,舉一反三很重要。
阿毛:有時(shí)候我測(cè)試自己負(fù)責(zé)的功能比較多了,我就想和別人換一換,有點(diǎn)新鮮感。不料小燕拒絕了我的交換請(qǐng)求,說(shuō)是沒經(jīng)過(guò)領(lǐng)導(dǎo)批準(zhǔn),是侵官之害。我只好和九條交換。
阿亨:我批準(zhǔn)這樣的交換,關(guān)鍵是找到bug。我們都是同一類工作人員,在事先安排好的情況下,不存在“侵官之害”的問題。
小燕:我發(fā)現(xiàn)隨著bug 的增多,我又要驗(yàn)證以前的bug,又要發(fā)現(xiàn)新的bug,工作量越來(lái)越大,你們都怎么辦?
九條:我一般都把一些比較穩(wěn)定的測(cè)試寫成自動(dòng)測(cè)試,這樣就減輕了我手工測(cè)試的壓力。
15.12.3傳說(shuō)中的拐點(diǎn)
小飛:我聽說(shuō)在軟件項(xiàng)目中,有這樣一個(gè)拐點(diǎn)存在——在這一點(diǎn)之前,新的bug產(chǎn)生的數(shù)量大于bug解決的數(shù)量;在這一點(diǎn)之后,bug的解決數(shù)量大于新的bug 產(chǎn)生的數(shù)量。這樣bug的曲線就向下移動(dòng)。我們移山項(xiàng)目的拐點(diǎn)到了么?
阿超:我也聽說(shuō)過(guò),不過(guò)我們不能等待拐點(diǎn)的到來(lái),對(duì)于我們這樣的日期驅(qū)動(dòng)的項(xiàng)目,拐點(diǎn)必須在發(fā)布日之前的若干時(shí)間發(fā)生,如果我們的bug 數(shù)量還是繼續(xù)向上攀升,我們無(wú)法保證以后曲線會(huì)像懸崖一樣掉下來(lái)。我們就得主動(dòng)讓拐點(diǎn)發(fā)生,例如推遲一些bug,砍掉一些功能,等等。