易成榮 鄒勁松
(重慶水利電力職業技術學院 電氣工程系,重慶 永川 402160)
隨著軟件規?;彤a業化發展,軟件的復雜程度越來越高,軟件的功能變得也越來越強大。與此同時,軟件產品滲透到國民經濟生活的各個領域,其質量也自然受到前所未有的關注。長期以來,我國軟件企業一直被軟件質量問題所困擾。其中一個重要因素是對軟件測試的忽視。
在軟件測試過程中,測試用例的選擇對軟件測試的成敗起著至關重要的作用,測試用例設計的基本目的是確定一組最有可能發現某個錯誤或某類錯誤的測試數據,最終實現系統對某個功能的測試。測試用例設計過程約占整個測試過程的60%。故測試用例設計人員必須用最少量的測試用例,來發現最大量的可能性錯誤,所以其測試用例的優劣將直接影響測試的質量和效果。因時間和費用的問題不可能進行窮舉測試。提高測試效率、降低測試成本,是測試用例的設計者的目標或努力方向[1]。
軟件測試是發現并指出軟件 (包含軟件經過建模、需求、設計等階段所產生的大量輸出工作及程序代碼)中存在的缺陷的過程,該過程指明和標注問題存在的正確位置,詳細記錄導致問題出現的操作步驟,即存儲當時的錯誤狀態以便測試后問題能夠準確再現,并跟蹤軟件開發人員對軟件缺陷修復的進展情況[2]圖1 給出了軟件測試的四個步驟,即單元測試、集成測試、確認測試和系統測試[3]。
軟件復用是指“為了復用目的而設計的軟件”的過程[4]。軟件復用強調復用的目的,它是一種系統化的方法,為了復用而進行設計,為了復用而開發,并且要高效地組織和管理這些復用的軟件產品,方便人們檢索和使用。
軟件測試復用指在兩次或多次不同的軟件測試過程中反復使用相同或相似的測試思想來組織和跟蹤測試的過程。它的宗旨是保證對測試對象的測試不再采用一切“從原點開始”的模式,而是在已有的測試工作的基礎上,充分利用過去軟件測試過程中積累的測試策略、測試思想和測試經驗等,最終實現對軟件測試過程中可復用成分最大程度的復用。
軟件測試的復用主要包括測試策略、測試工具、測試流程、測試數據、測試結果和測試用例等復用。其中,測試用例作為軟件測試的核心內容,它的復用也就成為整個軟件測試復用工作的關鍵環節。表1 列出了軟件復用可能的資源并作簡要說明,其中所列出的可復用項目不是完整的,需要一定的補充[5]。
測試用例的復用就是指測試工程師在執行一項新的測試工作時,通過直接調用或修改現有的、適合此項測試的測試用例,并將它們運用其中的過程。即測試用例要實現復用必須具備三個條件,(1)必須存在可復用的測試用例;(2)所復用的用例必須有用;(3)測試工程師必須知道如何去復用測試用例。測試用例是測試工作的指導,是軟件測試必須遵守的準則,更是軟件測試質量穩定的根本保障。

2.2.1 組織和編寫具有很強可復用性的測試用例
在軟件測試中用到的任何一個測試用例,只要它的開發不涉及已有的用例,就將它作為一個新的基類似的測試用例。在上述情況下,我們可以建立兩種用例類:一種是基于基類的抽象型用例類,它提煉了將要表達的概念;另一種是抽象型類的派生類即具體型用例類,它具體去實現基類的思想。在不同的軟件應用系統的開發過程中,根據不同的場景去應用抽象型用例類,從而提高了測試用例的復用度。

2.2.2 可適應性測試用例
開發一個軟件產品,一般會發布多個版本,伴隨著測試用例的不斷維護,測試用例也需要不斷完善并與產品功能、特性的變化保持一致,最終使測試用例和產品版本相關聯,這時需要對以前的測試用例做適應性修改。具體的操作如下:測試人員可以在已有的復用測試用例庫中尋找具有類似功能的用例,通過對其進行繼承和修改,漸進式地設計出新的測試用例。如果新用例將要成為已有用例的子用例,那么它應當繼承了這個已有用例的所有屬性和方法。同時,新的用例還可以對需要追加的屬性以及必需的方法作局部的定義或者將幾個現存用例的特性組合起來開發出另一個新用例。
2.2.3 復制式的引用測試用例

?
在以往的軟件開發中,已經將大量的測試用例收集到測試用例庫中,并且根據測試用例的類類型進行了合理的分類,這時測試工程師可以根據需要到測試用例共享庫中進行檢索。這種方法最快捷和高效。
為了實現測試用例的復用,就必須對測試用例的設計進行統一的規范,進行行之有效的用例創建管理。在用例的創建過程中,測試經理對用例設計做出統一的建模組織,使所有的測試用例具備統一的結構、統一的輸入、輸出接口,這樣即使以后軟件運行環境發生變化,對原有用例稍作修改就可以再次利用,這些具有統一結構的用例就是可復用的測試用例。要實現用例的復用,可采取以下策略:
首先,基于復用的目的,對所使用的測試用例進行統一的建模組織,。有效地將測試用例收集到測試用例庫中,并按照用例各自的屬性特點進行多級合理的分類、組織、存儲。那些采用不同方式描述的測試用例,將會各自實現不同程度的復用。
其次,對共享測試用例庫中的測試用例實行有效管理。通過提供有助于復用的多種查詢方式,確保測試用例的復用程度。對不同類別的測試用例進行復用頻率統計,為測試人員提供有效的復用信息,在保證軟件測試質量的前提下提高效率。
最后,對共享測試用例庫中的測試用例具體實現復用。通過檢索出所需的測試用例,得到測試用例的信息,針對不同用途的測試用例采用不同的復用方式進行復用[6]。
從圖2 可以看出,測試用例的復用有三條路徑,待測軟件、已測軟件和復用式測試軟件,恰恰對應了上文所講的三種提高測試用例復用的途徑。首先,對待測軟件進行分析,接著開始用例的設計并注入測試復用的思路;其次產生相應的測試方法,根據該測試方法進行軟件測試,生成測試結果。對一個軟件的測試所產生的各種測試資源要作為可復用的素材,必須進行對其提煉和抽象,使其與被測項目的相關程度降到最低,在待測軟件路徑上所生成的測試方法和測試結果數據要進行抽象,產生可復用的測試用例要存入共享測試用例庫中。其次,對已測軟件進行分析,深度挖掘各種可能的復用機會并開始用例的提取;接著對測試用例進行可復用性的修改,然后交由測試組長進行審核驗證并進行類型劃分,最終添加至共享測試用例庫中。最后,復用式測試軟件指當測試工程師進行軟件測試時,到測試用例共享庫中查找具有類似功能的測試用例的過程;當我們找到功能類似的測試用例時,結合目前的測試項目對測試用例進行剖析,如果完全能勝任目前的測試任務就直接用到測試中去,否則進行相應的適應性修改,直至滿足要求并應用到測試中去,最后對經過適應性修改的測試用例進行入庫。
通過大量的工程實踐,不難發現測試用例的復用具有以下優點和難點。其優點如下:(1)提高軟件測試的效率;(2)縮短軟件測試的周期;(3)提高軟件測試的可靠性;(4)降低軟件測試的費用;(5)部分解決測試人員的經驗欠缺。但是要真正實現測試用例復用的困難也是不可忽視的,若不能較好地解決以下問題,必將使得軟件測試工作事倍功半。其難點如下:(1)測試用例數據庫的維護問題;(2)測試用例劃分的標準;(3)測試用例的版本管理問題;(4)測試用例可復用度量問題;(5)被測軟件之間的差異;(6)管理因素、法律因素、人的因素和教育因素等。
本文介紹了涉及軟件測試用例復用的相關概念并給出了軟件測試用例的復用模型。首先,描述了軟件測試的相關基本概念,主要有軟件、軟件測試復用、測試用例復用;其次,說明了提高測試用例復用的途徑、測試用例的復用策略和給出了測試用例的復用模型;最后,根據工程實踐總結了測試用例復用的優點和難點。
[1]胡正芳.測試用例復用技術研究:[碩士學位論文].哈爾濱:哈爾濱工程大學,2009.
[2]張大方,李瑋。軟件測試技術與管理[M].長沙:湖南大學出版社,2007.
[3]柳純錄,黃子河。軟件評測師教程.清華大學出版社。2005:1-221頁.
[4]Will T.Confessions of a used program sales maninstitutionalizing software reuse[M].New York:Addison wesley Publishing Co.,1995.
[5]邵正隆,白曉穎,趙沖沖.面向復用的測試設計模型的研究與實現.小型微型計算機系統.2006,27(11):2150:2155頁
[6]卜國峰,孫志剛,丁小良.軟件測試用例的復用研究[J].四川兵工學報,2009,5(30)