沈云凌
(中國電子科技集團公司第七研究所,廣東 廣州 510310)
當今世界正在步入“軟件定義一切”[1]的智能時代,軟件在整個系統功能的占比高達60%,軟件開發和測試工作量的占比在整個系統開發周期中已超過一半,因此提升軟件的效能和質量的創新技術越來越受重視。軟件重用技術因能有效縮短軟件研發周期,提高軟件效能與質量,而備受關注。軟件測試作為軟件工程的重要實踐,軟件質量保障的關鍵階段,因此成為關注的熱點,而軟件測試重用也成為研究與發展的關鍵點。軟件測試重用可減少軟件測試工作量,提高軟件測試效率,在提升軟件測試質量的同時,也可進一步促進軟件的效能與質量。
本文根據工程實踐,分析軟件測試常見問題,并以軟件測試過程重用、軟件測試用例重用、軟件測試設計方法重用、軟件測試需求重用和軟件文檔模板、檢查項、表單、用詞表述重用的方式提出解決方案,同時展示軟件測試重用的應用驗證效果。
軟件測試是一個嚴謹、復雜,且存在大量重復性的工作。在軟件測試過程中存在一些常見的問題,影響軟件測試的效率與質量,具體如下:
常規的軟件測試過程包括測試需求分析、測試設計、測試執行和測試總結等階段,不同階段需出具《軟件測試需求規格說明》、《軟件測試計劃》、《軟件測試說明》、《軟件測試記錄》和《軟件測試報告》等測試技術文檔和記錄[2]。根據測試項目需遵循的測試文檔編制標準及規范的不同,需出具的測試文檔和記錄的格式、表述方式和數量等要求均有所不同。軟件測試項目與軟件開發項目一樣,為了保證項目的進度和質量,除了必不可少的技術過程也需有管理過程。常規的測試管理過程包括測試策劃、項目監督、風險管理、質量監督、質量保證和配置管理等,每個過程均有相應的表單用于記錄管理過程數據。且不同的測試項目可能遵循不同的測試標準和測試文檔編制規范,每個測試階段產生的文檔、記錄表單形式不統一,且數量繁多。
由于測試文檔及表單量大,文檔的內容要素多,且不同測試人員,其專業能力水平、日常表達用語習慣有所不同,在描述測試需求、設計測試用例、記錄軟件問題時,信息表述極易出現用詞不夠專業、不規范的情況。甚至出現同一項目或相同專業領域不同項目的文檔內或文檔之間用詞表述不一致的情況。
在軟件測試需求分析與設計時,測試人員需針對每一個軟件需求,選擇測試類型和設計方法,并形成測試項的測試準則。軟件需求、測試類型與設計方法,存在一對多或多對一的復雜關聯關系。不同的測試人員根據對測試類型、測試方法的理解與應用經驗不同,在測試分析與設計時的充分性及細化程度就各有不同,如此就難以避免測試準則的遺漏。測試分析與設計的遺漏,必會導致測試用例的遺漏,進而導致軟件問題的遺漏[3]。
通過對軟件測試過程常見問題的分析可得,軟件測試過程常見問題影響軟件測試效率和質量。針對這些問題,可以采用軟件測試重用作為解決方案,軟件測試重用思路如圖1所示。

圖1 軟件測試重用思路
軟件測試重用的內容可一般包括測試過程重用、文檔模板及表單重用、測試語言表述及專業領域名詞術語重用、測試需求分析重用、測試設計重用和測試用例重用等。在組織組織內,軟件測試重用的實現分兩部分開展,在管理過程方面應從過程、模板表單到用詞表述等方面實現測試重用,在技術實施方面應由下至上,從點到面實現測試重用。軟件測試重用可參考如下過程實現。
過程管理與控制是工程的基石,測試過程的重用應占首位。積累并分析歷史測試過程數據,遵循各測試標準的同時,梳理各類測試來源、測試環境和測試需求的特點,結合測試技術過程和測試管理過程,建立多個可重用的測試生命周期模型,形成可重用的規范化測試技術和測試管理流程。在測試過程重用實施時持續收集各類測量分析數據以實現測試過程的持續改進。
針對不同的委托方、文檔編寫標準,定制相應的測試技術和測試管理過程文檔模板及表單,形成可重用的文檔模板集和表單集。
按專業領域建立測試標準用詞數據庫,標準的用詞表述包括各專業領域術語、軟件測試問題的表述、軟件問題分析的內容。按文檔的章節要素建立測試文檔樣例庫,并在文檔模板中以樣例的形式呈現。標準用詞和表述樣例的重用,可增加測試數據的專業性與易理解性,減少不同測試人員之間表述的差異,提升文檔的質量及測試效率,更便于軟件測試資產的積累與查詢,有利于軟件測試的持續改進。
按測試技術和管理過程分類建立檢查項庫。檢查項庫內容包括合同評審、質量監督、質量保證、配置管理、測試評審、文檔審查、代碼審查等內容。除了按過程分類,也可按被查文檔或活動進行分類。代碼審查的檢查項可按照編程語言及相關標準分類。組織將各個過程中常用的檢查項匯編成相應的檢查表,以減少重用檢查項時的工作量。測試人員使用時可根據每個測試項目的需要對檢查表進行裁剪式重用。
與測試管理類的重用實現不同,測試技術的重用實現采用從點到面、從下至上的循序漸進方式更具有可操作性。由于測試用例是測試問題發現過程中最直接的最小單元,軟件測試用例設計的質量關系到軟件測試的科學性、完整性、有效性和效率,是軟件測試項目工作的重中之重,所以軟件測試用例的重用是具備測試數據資產組織在測試技術重用步伐中的第一步。
軟件測試用例設計時,需要針對軟件測試項的類型和特點,確定其測試類型,采用適當的設計方法,并對測試環境、測試資源、風險等約束條件進行綜合考慮。依據測試用例對測試輸入的要求,測試輸入數據的數據類型、輸入方法等進行設計,當有測試需要時,編寫測試執行所需要的測試驅動模塊、樁模塊或測試支持軟件等[4]。
可重用的軟件測試用例的設計可通過對各個專業領域的產品及其測試需求的歷史數據進行分析,綜合考慮按專業領域、測試類型、設計方法等因素,結合各類軟件產品及功能項的特點實現,并建立測試用例重用庫。也可從分析軟件測試的典型問題開始,在完成每一個測試項目時,識別、收集并分析典型問題,將發現問題的用例進行綜合分析并設計成可重用測試用例。測試用例重用離不開測試數據資產的積累與分析,多個重用點齊頭并進形成可重用測試用例的方法更優。
軟件測試設計的重用可在軟件測試用例重用的基礎上開展并實現[5]。軟件測試設計的重用點較多,可從以下幾個重用點實現測試設計重用。
不同的軟件測試標準有不同的測試類型術語。在GJB/Z 141-2004《軍用軟件測試指南》中描述為功能測試、性能測試、接口測試、人機交互界面測試、強度測試、余量測試、安全性測試、恢復性測試、邊界測試、安裝性測試、容量測試等測試類型[6];在GB/T 25000.51-2016《系統與軟件工程 系統與軟件質量要求和評價(SQuaRE)第51部分:就緒可用軟件產品(RUSP)的質量要求和測試細則》中則描述為功能性、性能效率、兼容性、易用性、可靠性、信息安全性、維護性、可移植性的質量特性[7]的術語。兩者同宗同源關系密切且具有關聯關系,涵蓋的測試內容也存在一定的差異。針對常用此兩類標準的組織,測試類型和質量特性可作為軟件測試設計的重用點。優先選擇與可重用測試用例相關,且可重用度較高的測試類型及質量特性的設計內容,并按專業領域分類編制可重用測試設計,如邊界測試、人機交互界面、安全性測試、恢復性測試、性能測試等測試類型[6]的測試設計樣例,易用性、性能效率等質量特性[7]的可重用測試設計樣例。
軟件測試設計的重用可從歷史測試項目中的高頻功能項著手實現。組織內,通過對歷史測試項目的梳理往往會發現不同的項目間,包括同領域或不同領域的測試項目往往會出現一些相同或相似的功能項,而且該功能項的測試需求出現頻度高,此類高頻功能項作為測試設計的重用具有更大的意義,能大大節省測試設計的成本并提高測試設計效率。高頻功能項也具有相同或相似的測試項、測試類型,甚至連測試設計方法也相同,因此可將高頻功能項的測試設計進行可重用測試設計以實現測試設計重用。
軟件測試設計的重用也可按設計方法進行設計重用。雖然不同領域不同產品的測試任務測試需求不同,但經過測試需求分析分解為測試項后,其所使用的測試方法基本類似。將不同的測試設計方法結合產品領域需求設計形成各類可重用的測試設計方法,在測試設計時,可有效減少測試設計的工作量,對測試設計經驗相對較少的測試設計人員的測試效率提升尤為明顯。
針對已發現的關鍵、嚴重及典型軟件問題的用例進行測試設計重用設計,也是測試設計重用的重點方案。關鍵、嚴重及典型的軟件問題是軟件項目開發過程中的項目需求分析、設計甚至編碼等過程中出現頻度較高,或對項目質量有重要影響的軟件問題。結合歷史測試項目提取典型軟件問題,分析并設計相關的測試設計內容形成可重用測試設計,對同類型項目,甚至不同領域的相近項目的測試效能提升具有較大意義。
典型的測試項可設計形成可重用的軟件測試需求實現軟件測試需求分析的重用。高頻功能項的測試項,發現關鍵、嚴重及典型軟件問題的測試項,常用的測試類型對應的測試項,或結合對歷史測試數據綜合分析的結果提取的測試項均可列為典型的測試項。針對典型測試項,結合組織內常用的測試標準及文檔編制模板設計并編制可重用軟件測試需求分析重用樣例以實現軟件測試需求分析重用。
所屬測試團隊通過對3個不同領域的測試任務進行測試過程重用,同步開展軟件測試用例重用應用驗證。軟件測試設計是軟件測試核心工作,是測試質量的關鍵,軟件測試工作量占比較大[8]。因此,本次軟件測試重用應用驗證,主要通過采集軟件測試設計工時作為測量分析數據,分析重用應用驗證效果。應用驗證項目的基本信息和重用驗證數據如表1所示。

表1 軟件測試重用應用驗證項目情況
結合歷史項目的測試數據進行綜合對比分析得出,應用軟件測試重用項目的測試設計效率提升率約為45%,具體項目的應用效率提升情況如圖2 所示。由應用驗證效果可見,應用軟件測試重用可有效減少軟件測試工作量,提高軟件測試效率和質量,從而促進軟件研發全生命周期效能與質量的提升。

圖2 軟件測試重用應用驗證效果
以某通信傳輸軟件測試任務驗證情況為例,在進行測試過程重用的基礎上,開展軟件測試用例重用的重用應用驗證。2020年設計的2964個測試用例中,應用了719個重用測試用例,在項目測試周期短、項目進度緊張的情況下,進一步提升了測試效能和質量。與2017年的同類軟件測試項目相比,測試設計效率提升率約42%,測試效率與質量明顯提升,客戶滿意度高。
通過軟件測試重用的應用及驗證效果分析,可見軟件測試重用的實現能有效提高軟件測試的效率與質量,從而促進軟件的效能及質量,實現軟件測試重用的好處可見一斑。軟件測試重用內容多種多樣,可單獨實施,也可多項內容并駕齊驅,具體實現以實際項目需要為準。隨著軟件測試重用應用的深入,對軟件測試效率和質量的提升也會越來越明顯。當前軟件測試重用已越來越受重視,其實現與應用也會越來越廣泛。