怎么樣的測(cè)試用例才算是好的用例 |
發(fā)布時(shí)間: 2012/9/15 18:08:58 |
雖然我是一名測(cè)試新人,但是我自認(rèn)為自己是一個(gè)很有想法的人,覺(jué)得測(cè)試用例對(duì)我來(lái)說(shuō)應(yīng)該不是什么問(wèn)題,誰(shuí)知道今天發(fā)生了一件事,讓我不得不重新審驗(yàn)一下自己的想法,以及最重要的一點(diǎn)是,我要搞清楚怎么樣的用例才算是好的用例。 話(huà)說(shuō)事情是這樣的,這次客戶(hù)有一些新的需求,比如說(shuō)原來(lái)的merchant ID改成merchant code, TID改成終端serial_no, 在屏幕上增加VAT的輸出(以前只有base amount的輸出),當(dāng)前時(shí)間增加秒級(jí)(之前只有日期,小時(shí),分),金額中增加貨幣,如以前是1000,現(xiàn)在變成1000元等。 按我的想法是新需求就增加新的用例,用例中重點(diǎn)體現(xiàn)這些新加入或修改的內(nèi)容是否正確,而按我們頭頭的想法卻是在舊的用例中修改,加入這些新的內(nèi)容。 先說(shuō)說(shuō)為什么我覺(jué)得是增加新的用例,而不是在舊內(nèi)容中更改,理由一,每次測(cè)試都應(yīng)該有一個(gè)測(cè)試重點(diǎn),不能每次都把所有的用例全都跑一遍,這樣測(cè)試人員會(huì)很累,像這次新增加或是修改的內(nèi)容應(yīng)該作為新的一次測(cè)試重點(diǎn),測(cè)試過(guò)程中只需要測(cè)這些新增或修改的內(nèi)容,以及新增或修改部分可能會(huì)影響到的功能,不相關(guān)的用例可以不跑,因此用例應(yīng)該體現(xiàn)出測(cè)試重點(diǎn)來(lái)。然而我們頭頭的意思是在原來(lái)的用例上修改,而且用例寫(xiě)完了還得全部再跑一次所有的用例,因此我覺(jué)得很悲劇。目前我們的用例沒(méi)有任何層次性,一個(gè)項(xiàng)目對(duì)應(yīng)一整套用例,如果有新需求就在原來(lái)的基礎(chǔ)上進(jìn)行修改,按頭頭的意思是如果不對(duì)原來(lái)的用例進(jìn)行修改,那么會(huì)導(dǎo)致后面的測(cè)試無(wú)法按照用例來(lái)跑,因?yàn)橛美桥f的。 好吧,我承認(rèn)我無(wú)法反駁這一點(diǎn),舊的用例無(wú)法跑,或是新入職的測(cè)試人員想通過(guò)測(cè)試用例了解測(cè)試過(guò)程時(shí)可能會(huì)令他們感覺(jué)很迷茫,這些用例都不對(duì)嘛!可是我也無(wú)法說(shuō)服自己每次增加一些新需求就得重新修改用例,純粹的copy->粘貼,沒(méi)有什么技術(shù)含量,感覺(jué)好浪費(fèi)時(shí)間,而且最重要的是下一次測(cè)試得全部測(cè)過(guò)一遍會(huì)讓我提不起干活的勁頭,如果有一個(gè)很直接的目標(biāo),那么很容易讓我有那種“OK,就是它了”的感覺(jué),然后很有干勁地直奔過(guò)去處理,但是假如有N多個(gè)目標(biāo),那么這樣只會(huì)讓我覺(jué)得提不起勁,感覺(jué)沒(méi)有了目標(biāo),因此最后的結(jié)果還是重點(diǎn)測(cè)一下新增或修改部分,對(duì)于其他大多敷衍了事。 理由二,在原有的用例上修改的話(huà)意味著我得從頭核對(duì)一次用例,看哪些需要修改就進(jìn)行修改,這樣我的工作量便增大了,這讓我這種以追求效率為目標(biāo)的人很難受,換另一句話(huà)來(lái)說(shuō)就是覺(jué)得浪費(fèi)時(shí)間,按頭頭的想法是預(yù)算中給了你一周的時(shí)間,工作量不成問(wèn)題,好吧,這點(diǎn),我也沒(méi)法反駁,確實(shí),時(shí)間是足夠的,但是問(wèn)題在于我們不能因?yàn)轭A(yù)算時(shí)間足夠就可以隨便浪費(fèi)時(shí)間,如果有多余的空閑時(shí)間我可以學(xué)習(xí)其他方面豈不是更好,不過(guò)這句話(huà)我可不敢跟頭頭說(shuō),人家請(qǐng)你來(lái)是干活的,可不是學(xué)習(xí)的。 理由三,在寫(xiě)舊的用例時(shí),輸出數(shù)據(jù)不是所有的數(shù)據(jù)都列出來(lái)的,而是只挑我認(rèn)為的重要的項(xiàng)才列出來(lái),其他數(shù)據(jù)略過(guò),當(dāng)初覺(jué)得merchant ID, TID不重要,根本就沒(méi)列出來(lái),而且當(dāng)前時(shí)間也不列出來(lái)的,現(xiàn)在必須加入這些,那么如果在舊用例上修改的話(huà),意味著每個(gè)相關(guān)的用例都得加上這些,又是一個(gè)copy->粘貼的過(guò)程,如果是增加新用例,我可以在一個(gè)用例中把這些信息包括進(jìn)去,這樣就省事多了,總的來(lái)說(shuō),還是時(shí)間問(wèn)題。按我的意思是這些東西并不是那么重要的,寫(xiě)一個(gè)用例來(lái)查看就可以了,沒(méi)必要在每個(gè)相關(guān)用例上都增加進(jìn)去,就算是以后新入職的人員寫(xiě)用例也是將其作為不重點(diǎn)信息,因此用例上沒(méi)有這些信息倒也不相干,既然如此,我增加一個(gè)用例來(lái)測(cè)試這些新增加/修改的內(nèi)容就OK了,但是按頭頭的意思,寫(xiě)用例時(shí)不需要把所有的項(xiàng)都列出來(lái),挑重點(diǎn)項(xiàng)列出來(lái)沒(méi)問(wèn)題,但是既然客戶(hù)提需求了,就必須把提到的都列出來(lái)了,而且他認(rèn)為這些新增加/修改的內(nèi)容不能作為一個(gè)測(cè)試點(diǎn)來(lái)看待,因此不能獨(dú)立成為一個(gè)用例。 我問(wèn)頭頭為啥不能作為一個(gè)測(cè)試點(diǎn),這次的測(cè)試我在測(cè)試過(guò)程中肯定要查看這些內(nèi)容是否正確的呀。而頭頭的回答是,只有與具體某個(gè)功能相聯(lián)系才能作為一個(gè)測(cè)試點(diǎn),不能說(shuō)你的測(cè)試點(diǎn)就是查看一下屏幕是否顯示正確,這不是一個(gè)測(cè)試點(diǎn),只是一個(gè)測(cè)試點(diǎn)中的一個(gè)環(huán)節(jié),聽(tīng)到這里我就開(kāi)始迷茫了,這跟我認(rèn)為的測(cè)試用例完全不是同一回事了。 在我看來(lái),用例是指導(dǎo)測(cè)試用的,那么用例就應(yīng)該體現(xiàn)我的測(cè)試過(guò)程,測(cè)試思想什么的,比如說(shuō)我測(cè)試的時(shí)候是這樣的,比如測(cè)試一個(gè)報(bào)表吧,有多個(gè)查詢(xún)條件,那么第一步我會(huì)先查看一下這些查詢(xún)條件的顯示是否正確,比如說(shuō)有彈出框選擇,那么選擇完后在輸入框中顯示的內(nèi)容是否跟我的選擇一致,這是一個(gè)測(cè)試點(diǎn),然后再是點(diǎn)擊查詢(xún)按鈕查詢(xún)出來(lái)的結(jié)果是不是按照我的查詢(xún)條件得出的結(jié)果,這又是一個(gè)測(cè)試點(diǎn),這里就包含了兩個(gè)測(cè)試點(diǎn),也就是說(shuō)至少需要兩個(gè)用例。然后按照頭頭的想法是報(bào)表的功能是查詢(xún)功能,那么只能是以某個(gè)查詢(xún)功能來(lái)寫(xiě)用例,像我所說(shuō)的第一個(gè)用例完全沒(méi)必要寫(xiě),第一個(gè)用例只是整個(gè)查詢(xún)過(guò)程的一個(gè)步驟,而不能作為一個(gè)測(cè)試點(diǎn)。 正是因?yàn)槲腋^頭理解的用例完全不一樣,于是我們的談話(huà)進(jìn)而提升到討論什么樣的用例是一個(gè)好的用例。 我剛做測(cè)試的時(shí)候,我的確是不懂怎么寫(xiě)用例,于是都是按照一個(gè)功能一個(gè)功能地去寫(xiě)用例,就是我們頭頭說(shuō)的那種,但是在測(cè)試過(guò)程中我就發(fā)現(xiàn)了一些現(xiàn)象,雖然每個(gè)功能都涉及到了,但是,1、有很多bug沒(méi)法找到相對(duì)應(yīng)的用例;2、有時(shí)候一個(gè)用例對(duì)應(yīng)N多個(gè)bug;3、有時(shí)候N多個(gè)用例對(duì)應(yīng)一個(gè)bug,即一個(gè)步驟錯(cuò)了,那么所有包含該步驟的用例都fail了。4、有些用例寫(xiě)得過(guò)于籠統(tǒng),無(wú)法指導(dǎo)測(cè)試過(guò)程,也無(wú)法體現(xiàn)你的測(cè)試思路。于是針對(duì)各個(gè)問(wèn)題,我的應(yīng)付是,對(duì)于1,找不到bug的時(shí)候我就想一下這個(gè)bug是怎么發(fā)現(xiàn)的,為啥用例沒(méi)有,大部分時(shí)候是因?yàn)槿鄙倬唧w的測(cè)試點(diǎn)造成的,于是我就給這些bug新增測(cè)試點(diǎn),對(duì)于2-4,總結(jié)了一下,大多也是因?yàn)闇y(cè)試點(diǎn)的問(wèn)題,于是我把用例改了,每個(gè)用例對(duì)應(yīng)一個(gè)具體的測(cè)試點(diǎn),針對(duì)有些很容易出現(xiàn)問(wèn)題的地方,增加多一些測(cè)試點(diǎn),這樣子把用例修改下來(lái)后,我發(fā)現(xiàn)無(wú)論是測(cè)試過(guò)程還是測(cè)試結(jié)果的執(zhí)行都省事了,因?yàn)闇y(cè)試標(biāo)題寫(xiě)的就是測(cè)試點(diǎn),這樣我在測(cè)試過(guò)程中不需要看用例的具體步驟,我就知道該怎么測(cè)了,就按照測(cè)試點(diǎn)跑一遍就OK,當(dāng)然了,這需要你對(duì)系統(tǒng)熟悉了之后做的,如果不熟悉,還得看看步驟怎么操作的。在執(zhí)行測(cè)試結(jié)果的時(shí)候也很省事,我只要對(duì)應(yīng)一下哪個(gè)測(cè)試點(diǎn)出了問(wèn)題,就給它一個(gè)fail,沒(méi)問(wèn)題的就給它pass.如果像之前的用例那樣,如果是某個(gè)步驟錯(cuò)了,凡是含有該步驟的用例我都得給它一個(gè)fail,因此在執(zhí)行的時(shí)候還得一個(gè)一個(gè)去看,好煩人地說(shuō)。 結(jié)果我跟我們頭頭這么一說(shuō),這下子就出問(wèn)題了,他覺(jué)得我做事的方法不對(duì),做事不是這么做的,用例也不是這么寫(xiě)的,然后說(shuō)了很多理由云云。 我問(wèn)他說(shuō)“一個(gè)好的用例不是應(yīng)該是一個(gè)能發(fā)現(xiàn)bug的用例么?”在我看來(lái),“不管白用例黑用例,能測(cè)出bug的用例就是好用例”,他說(shuō)是,但是不能為了發(fā)現(xiàn)bug而修改用例,因?yàn)閷?xiě)用例之前是不知道哪里會(huì)出現(xiàn)bug的,所以只能根據(jù)功能點(diǎn)來(lái)寫(xiě),把每個(gè)功能點(diǎn)涉及了就行了,你發(fā)現(xiàn)了bug之后再來(lái)修改用例,是因?yàn)槟阒肋@么做會(huì)出現(xiàn)這個(gè)bug,但是這個(gè)過(guò)程就不對(duì)之類(lèi)的云云。 針對(duì)上面測(cè)試過(guò)程中出現(xiàn)的4點(diǎn)問(wèn)題,對(duì)于1,他覺(jué)得既然是因?yàn)閱?wèn)題出現(xiàn)在有些缺少的項(xiàng)中,那么就去修改用例,加上出現(xiàn)的bug的項(xiàng)就OK,沒(méi)必要增加新的測(cè)試點(diǎn);對(duì)于2-4,他認(rèn)為這不是問(wèn)題,還是原來(lái)的話(huà),只要每個(gè)功能點(diǎn)涉及到了就行了,不需要過(guò)于詳細(xì),他認(rèn)為我寫(xiě)的用例過(guò)于詳細(xì)了,測(cè)試點(diǎn)過(guò)多。 談話(huà)談到這里,我已經(jīng)徹底無(wú)法接受了,我認(rèn)為的用例的編寫(xiě)方法跟我們頭頭完全不一樣,我無(wú)法接受他的想法,更無(wú)法否認(rèn)自己的做法,心底下我覺(jué)得我的用例并沒(méi)有問(wèn)題,而且做得很對(duì),但是我們頭頭要求我按照他的想法去修改我的用例,于是我很糾結(jié)~~~ 本文出自:億恩科技【mszdt.com】 服務(wù)器租用/服務(wù)器托管中國(guó)五強(qiáng)!虛擬主機(jī)域名注冊(cè)頂級(jí)提供商!15年品質(zhì)保障!--億恩科技[ENKJ.COM] |