避免測(cè)試用例設(shè)計(jì)的五大誤區(qū)
1、能發(fā)現(xiàn)到目前為止沒有發(fā)現(xiàn)的缺陷的用例是好的用例:
首先要申明,其實(shí)這句話是十分有道理的,但我發(fā)現(xiàn)很多人都曲解了這句話的原意,一心要設(shè)計(jì)出發(fā)現(xiàn)“難于發(fā)現(xiàn)的缺陷”而陷入盲目的片面中去,忘記了測(cè)試的目的所在,這是十分可怕的。我傾向于將測(cè)試用例當(dāng)作一個(gè)集合來認(rèn)識(shí),對(duì)它的評(píng)價(jià)也只能對(duì)測(cè)試用例的集合來進(jìn)行,測(cè)試本身是一種“V&;V”的活動(dòng),測(cè)試需要保證以下兩點(diǎn):
* 程序做了它應(yīng)該做的事情
* 程序沒有做它不該做的事情
因此,作為測(cè)試實(shí)施依據(jù)的測(cè)試用例,必須要能完整覆蓋測(cè)試需求,而不應(yīng)該針對(duì)單個(gè)的測(cè)試用例去評(píng)判好壞。
2、測(cè)試用例應(yīng)該詳細(xì)記錄所有的操作信息,使一個(gè)沒有接觸過系統(tǒng)的人員也能進(jìn)行測(cè)試;
不知道國(guó)內(nèi)有沒有公司真正做到這點(diǎn),或者說,不知道有國(guó)內(nèi)沒有公司能夠?qū)⒚總€(gè)測(cè)試用例都寫得如此詳細(xì)。在我的測(cè)試經(jīng)歷中,對(duì)測(cè)試用例描述的詳細(xì)和復(fù)雜程度也曾有過很多的彷徨。寫得太簡(jiǎn)單吧,除了自己沒人能夠執(zhí)行,寫得太詳細(xì)吧,消耗在測(cè)試用例維護(hù)(別忘了,測(cè)試用例是動(dòng)態(tài)的,一旦測(cè)試環(huán)境、需求、設(shè)計(jì)、實(shí)現(xiàn)發(fā)生了變化,測(cè)試用例都需要相應(yīng)發(fā)生變化)上的時(shí)間實(shí)在是太驚人,在目前國(guó)內(nèi)大部分軟件公司的測(cè)試資源都不足的情況下,恐怕很難實(shí)現(xiàn)。但我偏偏就能遇到一些這樣的老總或者是項(xiàng)目負(fù)責(zé)人,甚至是測(cè)試工程師本身,全然不顧實(shí)際的資源情況,一定要寫出“沒有接觸過系統(tǒng)的人員也能進(jìn)行測(cè)試”的用例。
在討論這個(gè)問題之前,我們可以先考慮一下測(cè)試的目的。測(cè)試的目的是盡可能發(fā)現(xiàn)程序中存在的缺陷,測(cè)試活動(dòng)本身也可以被看作是一個(gè)Project,也需要在給定的資源條件下盡可能達(dá)成目標(biāo),根據(jù)我個(gè)人的經(jīng)驗(yàn),大部分的國(guó)內(nèi)軟件公司在測(cè)試方面配備的資源都是不足夠的,因此我們必須在測(cè)試計(jì)劃階段明確測(cè)試的目標(biāo),一切圍繞測(cè)試的目標(biāo)進(jìn)行。
除了資源上的約束外,測(cè)試用例的詳細(xì)程度也需要根據(jù)需要確定。如果測(cè)試用例的執(zhí)行者、測(cè)試用例設(shè)計(jì)者、測(cè)試活動(dòng)相關(guān)人對(duì)系統(tǒng)了解都很深刻,那測(cè)試用例就沒有必要太詳細(xì)了,文檔的作用本來就在于溝通,只要能達(dá)到溝通的目的就OK。
在我擔(dān)任測(cè)試經(jīng)理的項(xiàng)目中,在測(cè)試計(jì)劃階段,一般給予測(cè)試設(shè)計(jì)30% - 40%左右的時(shí)間,測(cè)試設(shè)計(jì)工程師能夠根據(jù)項(xiàng)目的需要自行確定用例的詳細(xì)程度,在測(cè)試用例的評(píng)審階段由參與評(píng)審的相關(guān)人對(duì)其把關(guān)。
3、測(cè)試用例設(shè)計(jì)是一勞永逸的事情;
這句話擺在這里,我想沒有一個(gè)人會(huì)認(rèn)可,但在實(shí)際情況中,卻經(jīng)常能發(fā)現(xiàn)這種想法的影子。我曾經(jīng)參與過一個(gè)項(xiàng)目,軟件需求和設(shè)計(jì)已經(jīng)變更了多次,但測(cè)試用例卻沒有任何修改。導(dǎo)致的直接結(jié)果是新加入的測(cè)試工程師在執(zhí)行測(cè)試用例時(shí)不知所措,間接的后果是測(cè)試用例成了廢紙一堆,開發(fā)人員在多次被無效的缺陷報(bào)告打擾后,對(duì)測(cè)試人員不屑一顧。
這個(gè)例子可能有些極端,但測(cè)試用例與需求和設(shè)計(jì)不同步的情況在實(shí)際開發(fā)過程中確是屢見不鮮的,測(cè)試用例文檔是“活的”文檔,這一點(diǎn)應(yīng)該被測(cè)試工程師牢記。
4、測(cè)試用例不應(yīng)該包含實(shí)際的數(shù)據(jù);
測(cè)試用例是“一組輸入、執(zhí)行條件、預(yù)期結(jié)果”、毫無疑問地應(yīng)該包括清晰的輸入數(shù)據(jù)和預(yù)期輸出,沒有測(cè)試數(shù)據(jù)的用例最多只具有指導(dǎo)性的意義,不具有可執(zhí)行性。當(dāng)然,測(cè)試用例中包含輸入數(shù)據(jù)會(huì)帶來維護(hù)、與測(cè)試環(huán)境同步之類的問題,關(guān)于這一點(diǎn),《Effective Software Test》一書中提供了詳細(xì)的測(cè)試用例、測(cè)試數(shù)據(jù)的維護(hù)方法,可以參考。
5、測(cè)試用例中不需要明顯的驗(yàn)證手段;
我見過很多測(cè)試工程師編寫的測(cè)試用例中,“預(yù)期輸出”僅描述為程序的可見行為,其實(shí),“預(yù)期結(jié)果”的含義并不只是程序的可見行為。例如,對(duì)一個(gè)訂貨系統(tǒng),輸入訂貨數(shù)據(jù),點(diǎn)擊“確定”按鈕后,系統(tǒng)提示“訂貨成功”,這樣是不是一個(gè)完整的用例呢?是不是系統(tǒng)輸出的“訂貨成功”就應(yīng)該作為我們唯一的驗(yàn)證手段呢?顯然不是。訂貨是否成功還需要查看相應(yīng)的數(shù)據(jù)記錄是否更新,因此,在這樣的一個(gè)用例中,還應(yīng)該包含對(duì)測(cè)試結(jié)果的顯式的驗(yàn)證手段:在數(shù)據(jù)庫中執(zhí)行查詢語句進(jìn)行查詢,看查詢結(jié)果是否與預(yù)期的一致。
posted on 2014-08-07 10:43 順其自然EVO 閱讀(170) 評(píng)論(0) 編輯 收藏