摘 要: 軟件測試是確保軟件質(zhì)量的可靠手段,是軟件開發(fā)過程中必不可少的重要環(huán)節(jié)。本文提出了面向復(fù)用的測試用例設(shè)計(jì)過程,為測試用例復(fù)用提供了實(shí)現(xiàn)策略。測試用例的復(fù)用對于縮短軟件開發(fā)周期和降低軟件開發(fā)成本具有極其重要的意義。
關(guān)鍵詞: 軟件測試 測試用例 復(fù)用技術(shù)
1.引言
隨著軟件工程領(lǐng)域的拓展,在軟件產(chǎn)業(yè)飛速發(fā)展的今天,軟件測試成為保證軟件質(zhì)量的重要手段。測試用例的選擇對于軟件測試的成敗起著決定性作用,因此如何設(shè)計(jì)最少的測試用例實(shí)現(xiàn)最大的測試覆蓋成為自動化測試領(lǐng)域中的主要研究對象。測試用例是確定一組最有可能發(fā)現(xiàn)錯誤的測試數(shù)據(jù)和流程,實(shí)現(xiàn)系統(tǒng)對某個功能的測試[1]。而測試用例的設(shè)計(jì)與測試人員的個人經(jīng)驗(yàn)息息相關(guān),不同測試人員的個人經(jīng)驗(yàn)和書寫格式的差異導(dǎo)致了測試的盲目性,以至于產(chǎn)生較高的后期維護(hù)費(fèi)用。測試用例的復(fù)用技術(shù)一方面是為了解決由測試人員經(jīng)驗(yàn)不足帶來的問題,同時(shí)還避免了在設(shè)計(jì)測試用例中的重復(fù)勞動,有效地提高了測試效率。
2.軟件測試
2.1軟件測試的定義
軟件測試(Software Testing)是根據(jù)軟件開發(fā)各階段的規(guī)格說明和程序的內(nèi)部結(jié)構(gòu)而精心設(shè)計(jì)一批測試用例(包含輸入數(shù)據(jù)及其預(yù)期的輸出結(jié)果),并用這些測試用例去運(yùn)行程序,以發(fā)現(xiàn)程序錯誤的過程[2]。
2.2軟件測試的目的
Glenford J.Myers就軟件測試的目的提出了以下觀點(diǎn):
2.2.1測試是程序的執(zhí)行過程,目的在于發(fā)現(xiàn)錯誤;
2.2.2一個好的測試用例在于能發(fā)現(xiàn)至今為止尚未發(fā)現(xiàn)的錯誤的用例;
2.2.3一個成功的測試是指揭示了至今為止尚未發(fā)現(xiàn)的錯誤的測試。
測試的目的花費(fèi)最小的代價(jià)找出軟件中潛在的各種錯誤和缺陷,通過修正各種錯誤和缺陷來提高軟件質(zhì)量,回避因軟件潛在錯誤和隱患帶來的商業(yè)風(fēng)險(xiǎn)[3]。
3.軟件測試用例的復(fù)用
3.1軟件測試用例的復(fù)用
軟件測試復(fù)用可以理解為在兩次或多次不同的軟件測試過程中重復(fù)使用相同或相近的測試資源來組織測試的過程[4]。軟件測試的復(fù)用主要包括測試流程的復(fù)用、測試方法的復(fù)用和測試用例的復(fù)用。其中測試用例的復(fù)用是測試復(fù)用中的關(guān)鍵技術(shù)。所謂測試用例復(fù)用是指對一個軟件已執(zhí)行的測試用例,將其不同程度地應(yīng)用于該軟件新階段的測試中或其他軟件的測試中??蓮?fù)用的測試用例具有通用性、獨(dú)立性、有效性、標(biāo)準(zhǔn)化和完整性的特點(diǎn)[5]。
3.2可復(fù)用測試用例的設(shè)計(jì)
測試用例能否成功被復(fù)用很大程度上取決于測試用例的獨(dú)立性,即能否獨(dú)立地應(yīng)用于不同的應(yīng)用場合和應(yīng)用環(huán)境。在實(shí)際應(yīng)用當(dāng)中,很多測試用例之間存在著相互的關(guān)聯(lián)。有的測試用例的運(yùn)行環(huán)境要取決于另外測試用例的執(zhí)行狀態(tài),當(dāng)它所依賴的環(huán)境變化或失效時(shí),而與之相關(guān)聯(lián)的其他測試用例的復(fù)用屬性也可能隨之消失。那么如何設(shè)計(jì)不依靠軟件運(yùn)行環(huán)境具有較高獨(dú)立性、與其他測試用例減少關(guān)聯(lián)且具有統(tǒng)一輸入輸出接口的可復(fù)用的測試用例就成為問題的關(guān)鍵所在。
測試用例是面向不同應(yīng)用對象的,與被測試軟件具有很高的耦合性。為了使得設(shè)計(jì)的測試用例能夠?qū)崿F(xiàn)成功復(fù)用,在測試用例的設(shè)計(jì)上采取如下步驟。
3.2.1共性分析
首先應(yīng)該對被測軟件進(jìn)行共性分析,同一應(yīng)用領(lǐng)域的軟件有相似的需求,分析其諸如工作流程或功能相同等共同特點(diǎn),并根據(jù)他們的共性挖掘可復(fù)用因素。
3.2.2測試用例統(tǒng)一建模
根據(jù)可復(fù)用因素,設(shè)計(jì)合適的測試策略,對測試用例的設(shè)計(jì)做出統(tǒng)一的建模組織,設(shè)計(jì)統(tǒng)一的結(jié)構(gòu)和輸入輸出接口。
3.2.3設(shè)計(jì)可復(fù)用的測試用例
為了盡可能地降低測試用例與被側(cè)軟件的相關(guān)性,在設(shè)計(jì)測試用例時(shí)應(yīng)該盡量對其進(jìn)行通用化處理,同時(shí)應(yīng)保持測試用例的功能單一性。測試用例和40a1ff8538dd359c95c23766b83acf19b4a50d65b9f88dd765f75747fb6c3beb被測軟件的高耦合性決定了測試用例的復(fù)用大多只在同一軟件的回歸測試或版本升級測試中成功實(shí)現(xiàn),而很難在不同應(yīng)用領(lǐng)域的軟件測試中使用。
3.2.4測試用例的測評
設(shè)計(jì)好測試用例之后,組織測試人員和評審專家根據(jù)功能需求將測試用例應(yīng)用于被測軟件的測試中,確保測試用例的正確性。改變軟件運(yùn)行環(huán)境或測試數(shù)據(jù)后是否能得出合理的測試結(jié)果,分析異常和邊界情況的測試結(jié)果。
3.2.5完善測試用例
根據(jù)測試結(jié)果分析測試用例是否覆蓋并測試了全部的共性需求,進(jìn)一步完善或糾正測試用例。
3.2.6測試用例入庫
將通過測評和完善后的可復(fù)用測試用例根據(jù)其屬性和功能分門別類并按照一定的組織結(jié)構(gòu)放入測試用例數(shù)據(jù)庫中。
3.3可復(fù)用測試用例的管理
測試人員要對用例數(shù)據(jù)庫進(jìn)行統(tǒng)一有效管理,提供測試用例的功能屬性、運(yùn)行環(huán)境、測試方法和項(xiàng)目來源以供測試人員以后的查詢和使用[6]。管理人員要及時(shí)刪除冗余,避免重復(fù)用例出現(xiàn)。隨著軟件技術(shù)的發(fā)展和測試用例數(shù)目的不斷增加,對那些不再具備復(fù)用價(jià)值的測試用例移入其他數(shù)據(jù)庫,以便提高搜索和使用效率。
4.結(jié)語
軟件測試的復(fù)用是目前測試領(lǐng)域研究的熱點(diǎn)問題,而設(shè)計(jì)可復(fù)用的測試用例又是實(shí)現(xiàn)測試復(fù)用技術(shù)的關(guān)鍵。本文介紹軟件測試用例復(fù)用的同時(shí),在理論上給出了可復(fù)用測試用例設(shè)計(jì)的思想和具體方法。在實(shí)踐中,實(shí)際存在的問題往往比我們可以預(yù)想到的更多、更復(fù)雜,在不同領(lǐng)域和不同功能的軟件中實(shí)現(xiàn)測試復(fù)用的難度更大,需要我們在不??偨Y(jié)經(jīng)驗(yàn)的基礎(chǔ)上還要靈活運(yùn)用,合理有效管理,才能使測試復(fù)用技術(shù)進(jìn)一步發(fā)展,提高測試效率,更好地服務(wù)于軟件產(chǎn)業(yè)。
參考文獻(xiàn):
?。?]張玉彬,謝康林.測試用例的設(shè)計(jì)和復(fù)用[J].計(jì)算機(jī)應(yīng)用與軟件,2008,25,(1):23-24.
?。?]繆靜.基于Web應(yīng)用的測試研究與應(yīng)用[D].成都.電子科技大學(xué),2005.
?。?]趙中芳.基于CBR的測試用例復(fù)用模型的研究與應(yīng)用[D].青島:中國海洋大學(xué),2008.
?。?]卜國峰,孫志剛,丁小良.軟件測試用例的復(fù)用研究[J].四川兵工學(xué)報(bào).第30卷第5期,2009.5:34-35.
?。?]尹平.可復(fù)用測試用例研究[J].計(jì)算機(jī)應(yīng)用,2010,5:41-43.
[6]Jehada Dalla,Paul Sorenson.Reusing class based test cases for testing object oriented frame work interface classes[J].Research and practice,2005,17,(3):169-196.