在實(shí)際軟件項(xiàng)目測試過程中,由于對(duì)軟件測試用例的作用和設(shè)計(jì)方法的理解不同,測試人員(特別是剛從事軟件測試的新人)對(duì)軟件測試用例存在不少錯(cuò)誤的認(rèn)識(shí),給實(shí)際軟件測試帶來了負(fù)面影響,本文對(duì)這些認(rèn)識(shí)誤區(qū)進(jìn)行列舉和剖析。
誤區(qū)之一:測試輸入數(shù)據(jù)設(shè)計(jì)方法等同于測試用例設(shè)計(jì)方法
現(xiàn)在一些測試書籍和文章中講到軟件測試用例的設(shè)計(jì)方法,經(jīng)常有這樣的表述:測試用例的設(shè)計(jì)方法包括:等價(jià)類、邊界值、因果圖、錯(cuò)誤推測法、場景設(shè)計(jì)法等。這種表述是很片面的,這些方法只是軟件功能測試用例設(shè)計(jì)中如何確定測試輸入數(shù)據(jù)的方法,而不是測試用例設(shè)計(jì)的全部內(nèi)容。
這種認(rèn)識(shí)的不良影響可能會(huì)使不少人認(rèn)為測試用例設(shè)計(jì)就是如何確定測試的輸入數(shù)據(jù),從而掩蓋了測試用例設(shè)計(jì)內(nèi)容的豐富性和技術(shù)的復(fù)雜性。如果測試用例設(shè)計(jì)人員把這種認(rèn)識(shí)拿來要求自己,則害了自己;拿來教人,則害了別人;拿來指導(dǎo)測試,則害了測試團(tuán)隊(duì)。聽起來似乎是“小題大做”,但是絕不是“危言聳聽”。
無疑,對(duì)于軟件功能測試和性能測試,確定測試的輸入數(shù)據(jù)很重要,它決定了測試的有效性和測試的效率。但是,測試用例中輸入數(shù)據(jù)的確定方法只是測試用例設(shè)計(jì)方法的一個(gè)子集,除了確定測試輸入數(shù)據(jù)之外,測試用例的設(shè)計(jì)還包括如何根據(jù)測試需求、設(shè)計(jì)規(guī)格說明等文檔確定測試用例的設(shè)計(jì)策略、設(shè)計(jì)用例的表示方法和組織管理形式等問題。
在設(shè)計(jì)測試用例時(shí),需要綜合考慮被測軟件的功能、特性、組成元素、開發(fā)階段(里程碑)、測試用例組織方法(是否采用測試用例的數(shù)據(jù)庫管理)等內(nèi)容。具體到設(shè)計(jì)每個(gè)測試用例而言,可以根據(jù)被測模塊的最小目標(biāo),確定測試用例的測試目標(biāo);根據(jù)用戶使用環(huán)境確定測試環(huán)境;根據(jù)被測軟件的復(fù)雜程度和測試用例執(zhí)行人員的技能確定測試用例的步驟;根據(jù)軟件需求文檔和設(shè)計(jì)規(guī)格說明確定期望的測試用例執(zhí)行結(jié)果。
誤區(qū)之二:強(qiáng)調(diào)測試用例設(shè)計(jì)得越詳細(xì)越好
在確定測試用例設(shè)計(jì)目標(biāo)時(shí),一些項(xiàng)目管理人員強(qiáng)調(diào)測試用例“越詳細(xì)越好”。具體表現(xiàn)在兩個(gè)方面:盡可能設(shè)計(jì)足夠多的設(shè)計(jì)用例,測試用例的數(shù)量閱讀越好;測試用例盡可能包括測試執(zhí)行的詳細(xì)步驟,達(dá)到“任何一個(gè)人都可以根據(jù)測試用例執(zhí)行測試”,追求測試用例越詳細(xì)越好。
這種做法和觀點(diǎn)最大的危害就是耗費(fèi)了很多的測試用例設(shè)計(jì)時(shí)間和資源,可能等到測試用例設(shè)計(jì)、評(píng)審?fù)瓿珊螅艚o實(shí)際執(zhí)行測試的時(shí)間所剩無幾了。因?yàn)楫?dāng)前軟件公司的項(xiàng)目團(tuán)隊(duì)在規(guī)劃測試階段,分配給測試的時(shí)間和人力資源是有限的,而軟件項(xiàng)目的成功要堅(jiān)持“質(zhì)量、時(shí)間、成本”的最佳平衡,沒有足夠多的測試執(zhí)行時(shí)間,就無法發(fā)現(xiàn)更多的軟件缺陷,測試質(zhì)量更無從談起了。
編寫測試用例的根本目的是有效地找出軟件可能存在的缺陷,為了達(dá)到這個(gè)目的,需要分析被測試軟件的特征,運(yùn)用有效的測試用例設(shè)計(jì)方法,盡量使用較少的測試用例,同時(shí)滿足合理的測試需求覆蓋,從而達(dá)到“少花時(shí)間多辦事”的效果。
測試用例中的測試步驟需要詳細(xì)到什么程度,主要取決于測試用例的“最終用戶”(即執(zhí)行這些測試用例的人員),以及測試用例執(zhí)行人員的技能和產(chǎn)品熟悉程度。如果編寫測試用例的人員也是測試用例執(zhí)行人員,或者測試用例的執(zhí)行人員深刻了解被測軟件,測試用例就沒有必要太詳細(xì)。而如果是測試新人執(zhí)行測試用例,或者軟件測試外包給獨(dú)立的第三方公司,那么測試用例的執(zhí)行步驟最好足夠詳細(xì)。
誤區(qū)之三:追求測試用例設(shè)計(jì)“一步到位”
現(xiàn)在軟件公司都意識(shí)到了測試用例設(shè)計(jì)的重要性了,但是一些人認(rèn)為設(shè)計(jì)測試用例是一次性投入,測試用例設(shè)計(jì)一次就“萬事大吉”了,片面追求測試設(shè)計(jì)的“一步到位”。
這種認(rèn)識(shí)造成的危害性使設(shè)計(jì)出的測試用例缺乏實(shí)用性,或者誤導(dǎo)測試用例執(zhí)行人員,誤報(bào)很多不是軟件缺陷的“Bug”,這樣的測試用例在測試執(zhí)行過程中“形同虛設(shè)”,難免淪為“垃圾文檔”的地步。
“唯一不變的是變化”。任何軟件項(xiàng)目的開發(fā)過程都處于不斷變化過程中,用戶可能對(duì)軟件的功能提出新需求,設(shè)計(jì)規(guī)格說明相應(yīng)地更新,軟件代碼不斷細(xì)化。設(shè)計(jì)軟件測試用例與軟件開發(fā)設(shè)計(jì)并行進(jìn)行,必須根據(jù)軟件設(shè)計(jì)的變化,對(duì)軟件測試用例進(jìn)行內(nèi)容的調(diào)整,數(shù)量的增減,增加一些針對(duì)軟件新增功能的測試用例,刪除一些不再適用的測試用例,修改那些模塊代碼更新了的測試用例。
軟件測試用例設(shè)計(jì)只是測試用例管理的一個(gè)過程,除此之外,還要對(duì)其進(jìn)行評(píng)審、更新、維護(hù),以便提高測試用例的“新鮮度”,保證“可用性”。因此,軟件測試用例也要堅(jiān)持“與時(shí)俱進(jìn)”的原則。
誤區(qū)之四:讓測試新人設(shè)計(jì)測試用例
在與測試同行交流的過程中,不少剛參加測試工作的測試新人經(jīng)常詢問的一個(gè)問題是:“怎么才能設(shè)計(jì)好測試用例?”。因?yàn)樗ㄋ﹤円郧皬膩頉]有設(shè)計(jì)過測試用例,面對(duì)大型的被測試軟件感到“老虎吃天,無從下口”。
讓測試新人設(shè)計(jì)測試用例是一種高風(fēng)險(xiǎn)的測試組織方式,它帶來的不利后果是設(shè)計(jì)出的測試用例對(duì)軟件功能和特性的測試覆蓋性不高,編寫效率低,審查和修改時(shí)間長,可重用性差。
軟件測試用例設(shè)計(jì)是軟件測試的中高級(jí)技能,不是每個(gè)人(尤其是測試新人)都可以編寫的,測試用例編寫者不僅要掌握軟件測試的技術(shù)和流程,而且要對(duì)被測軟件的設(shè)計(jì)、功能規(guī)格說明、用戶試用場景以及程序/模塊的結(jié)構(gòu)都有比較透徹的理解。
因此,實(shí)際測試過程中,通常安排經(jīng)驗(yàn)豐富的測試人員進(jìn)行測試用例設(shè)計(jì),測試新人可以從執(zhí)行測試用例開始,隨著項(xiàng)目進(jìn)度的不斷進(jìn)展,測試人員的測試技術(shù)和對(duì)被測軟件的不斷熟悉,可以積累測試用例的設(shè)計(jì)經(jīng)驗(yàn),編寫測試用例。
聯(lián)系客服