文/孫龑 胡玉露
隨著軍用軟件在信息裝備中發揮的作用越來越大,對于軍用軟件質量的關注度也越來越高。為了規范我國軍用軟件的開發,相關部門頒發了GJB5000A-2008《軍用軟件研制能力成熟度模型》。面對更高的要求,如何依照體系高效地開展軟件測試工作,成為每一個測試工程師必須面對的難題。
基于軟件測試V模型(參見圖 1)的軟件測試過程中,將軟件測試劃分為四個級別,分別是單元測試、部件測試、配置項測試(合格性測試)、系統測試。而在配置項測試和系統測試過程中,涉及的數據量大,數據種類多,通過人工整理的方式不僅會耗費大量時間,而且容易造成數據不一致的問題。本文基于某型機軟件測試工作,依據GJB5000A體系文件的相關要求,對配置項測試和系統測試中所需要的數據進行了研究,依據數據之間的關系建立數學模型,并通過Excel VBA的手段制作了軟件測試數據自動生成工具,實現了該數據模型。通過這兩個測試過程中數據的自動生成,實現了測試效率的提升。
在某型機軟件測試工作中,基于GJB5000A-2008《軍用軟件研制能力成熟度模型》和GJB438B-2009《軍用軟件開發文檔通用要求》,配置項測試和系統測試過程中各需完成12個表格、150項數據的收集和整理:

圖1:軟件測試V模型
(1)項目基本信息表:包括14項數據,分別是項目標識、軟件標識、測試級別、進入測試的軟件版本、被測軟件名稱、版本日期、默認用例設計人、默認用例設計日期、默認用例執行人、默認用例執行日期、默認故障嚴重等級、默認故障解決人、默認故障解決日期、默認故障解決結論。
(2)需求與測試項的映射關系表:包括5項數據,分別是測試項名稱、測試項章節號、測試項標識、需求章節號、需求章節名稱。
(3)測試用例表:包括17項數據,分別是用例編號、測試類型、正常/異常、測試項名稱、測試項標識、用例標識號、測試說明、用例描述、測試步驟、預期結果、設計人、設計日期、測試日期、測試結果及現象、測試結論、故障現象描述、測試人。
(4)測試用例個數統計表:包括39項數據,分別是各種測試類型下正常/異常測試用例個數。
(5)用例到需求的映射表:包括6項數據,分別是測試用例標識、測試項名稱、測試項章節號、測試項標識、需求章節號、需求名稱。
(6)需求到用例的映射表:包括6項數據,分別是相關測試用例標識、測試項名稱、測試項章節號、測試項標識、需求章節號、需求名稱。
(7)測試說明到測試用例的映射表:包括7項數據,分別是需求內容、相關測試用例標識、測試項名稱、測試項章節號、測試項標識、需求章節號、需求名稱。
(8)測試用例到測試說明的映射表:包括7項數據,分別是需求內容、相關測試用例標識、測試項名稱、測試項章節號、測試項標識、需求章節號、需求名稱。
(9)測試故障匯總表:包括18項數據,分別是故障標識號、被測軟件名稱、被測軟件標識、版本及日期、測試項名稱、用例標識、測試級別、測試類型、故障類型、故障嚴重等級、故障描述、報告人、報告日期、處理意見及方法、解決人、解決日期、回歸測試方法、結論。
(10)影響性分析表:包括10項數據,分別是分析序號、更改依據、更改描述、受影響/新增測試項、受影響/新增測試用例、測試類型、重用用例個數及比率、新設計用例個數及比率、執行用例個數及比率、未通過用例個數及比率。
(11)故障個數統計表:包括16項數據,分別是4種不同故障類型下不同等級的故障個數。
(12)用例執行情況表:包括5項數據,分別是用例個數、百分比、執行用例個數、未執行用例個數、未通過用例個數。
由于軟件測試工作的特殊性,在配置項測試和系統測試的數據整理過程中,存在如下難點:
(1)數據量大:需整理12個數據表共計150項數據,整理工作非常繁重。
(2)數據存在關聯,難以維護:整理的數據中存在關聯性,導致表格中的數據不能獨立存在,當某一個表格的數據發生變化時,其余表格數據必須進行同步更新,否則就會出現前后不一致。
(3)表格填寫規范較多,培訓成本較高:為保證數據格式的統一性,表格填寫過程中需要對數據進行統一化規定,測試負責人需要經過相關的學習和培訓才能掌握對應的填寫規范,培訓成本較高。
2.1.1 數據類型的劃分
對12個數據表150項數據進行研究,依據數據特性及關聯關系可將數據劃分為四類:
(1)填寫數據:項目基本信息數據,必須通過手工填寫。
(2)設計數據:經過設計后填入的數據,必須通過手工填寫。
(3)部分統計數據:即依據填寫數據和設計數據,通過固定的映射關系和計算可以得到該項數據中大部分內容的數據。
(4)完全統計數據:即依據填寫數據和設計數據,通過固定的映射關系和計算可以得到該項數據中全部內容的數據。
根據以上類別,將150項數據進行劃分為填寫數據18項、設計數據12項、部分統計數據20項、完全統計數據100項:
(1)項目基本信息表:填寫數據14項;其余數據無。
(2)需求與測試項的映射關系表:設計數據5項;其余數據無。
(3)測試用例表:填寫數據1項,包括故障現象描述;設計數據7項,包括測試類型、正常/異常、測試項名稱、測試說明、用例描述、測試步驟、預期結果;部分統計數據6項,包括設計人、設計日期、測試日期、測試結果及現象、測試結論、測試人員;完全統計數據3項,包括用例編號、測試項標識、用例標識號。
(4)測試用例個數統計表:完全統計數據39項;其余數據無。
(5)用例到需求的映射表:完全統計數據6項;其余數據無。
(6)需求到用例的映射表:完全統計數據6項,其余數據無。
(7)測試說明到測試用例的映射表:完全統計數據7項,其余數據無。
(8)測試用例到測試說明的映射表:完全統計數據7項,其余數據無。
(9)測試故障匯總表:填寫數據3項,包括故障類型、處理意見及方法、結論;部分統計數據6項,包括故障嚴重等級、報告人、報告日期、解決人、解決日期、回歸測試方法;完全統計數據9項,包括故障編號、被測軟件名稱、被測軟件標識、版本及日期、測試項名稱、用例標識、測試級別、測試類型、故障描述;填寫數據無。
(10)影響性分析表:部分統計數據7項,包括受影響/新增測試項、受影響/新增測試用例、測試類型、重用個數及比率、新設計個數及比率、執行個數及比率、未通過個數及比率;完全統計數據:3項,包括序號、更改依據、更改描述;其余數據無。
(11)故障個數統計表:完全統計數據16項;其余數據無。
(12)用例執行情況表:部分統計數據1項,包括未執行用例個數;完全統計數據4項,包括測試類型、用例個數、百分比、執行用例個數、未通過用例個數。
2.1.2 映射關系的建立
完成對150項數據的分類,建立填寫數據、設計數據與部分統計數據、完全統計數據之間的關系,經過研究,將表格內數據關系主要分為如下四類:
(1)直接映射關系:即源數據和目標數據之間的數值相同,例如項目基本信息表中的默認用例設計人與測試用例表中的設計人為直接映射關系。
(2)計算映射關系:即源數據經過直接計算得到目標數據的值,例如測試用例表中的測試結果及現象與測試用例表中的故障現象描述。
(3)直接統計映射關系:即目標數據經過某一個表格中的某幾項源數據經過統計計算得到。
(4)間接統計映射關系:即目標數據經過某幾個表格的某幾項源數據經過統計計算得到。

圖2:間接統計映射關系的目標數據自動生成流程

圖3:數學模型(軟件測試數據自動生成工具)流程

表1:某型號某軟件維護性測試項目信息

表2:自動生成數據和人工統計數據的效率比較

表3:比較所用計算機配置信息

圖4:宏列表
基于上述研究,本文采用Excel作為基礎制作數據自動生成工具,對數據之間的映射關系進行實現。Excel中自帶開發工具VBA,VBA可以直接對Excel表格進行編程,對不同的數據表編制不同的數據宏,建立表格中的目標數據(部分統計數據、完全統計數據)與源數據之間的映射。使用工具時,在完成源數據的填寫后,執行對應表格的數據宏,完成目標數據的自動生成,四種映射關系下的目標數據自動生成總流程如圖 2所示。
為保證數據符合GJB5000A和軟件測試的要求,在數學模型的設計中將數據約束通過如下方式來實現:
(1)對于填寫數據和設計數據:通過選項的形式或在工具中規定好填寫格式,以確保規范填寫。
(2)對于部分統計數據和完全統計數據:將數據規范通過映射關系來實現,通過計算、統計、拼接生成符合規范的目標數據。
通過格式化的輸入約束和依據規范的自動生成,保證了數據填寫的規范性,無需進行過多的記憶和培訓。
在實現數學模型之外,為保證源數據和目標數據的準確性,在本工具中增加了合法性檢查機制:
(1)對于空數據的檢查:檢查源數據的值是否為空。
(2)對于數據格式的檢查:檢查源數據的格式是否正確。
(3)對于映射關系的檢查:檢查映射關系是否正確。
在加入合法性檢查機制后,數學模型(軟件測試數據自動生成工具)的基本流程如圖3所示。
為準確驗證軟件測試數據自動生成工具的工作效率,在某型機某軟件系統測試過程中,對自動生成數據和人工統計數據的效率進行了比較。本項目的基本信息如表1所示。自動生成數據和人工統計數據的效率如表2所示。在本次比較中所使用的計算機基本配置信息如表3所示。
根據比較可以得出,在本次系統測試的數據整理過程中,通過工具的使用,相較于人工整理數據,效率提升了95.66%,達到了提升測試效率的目的。
當某個表格某項數據進行了修改后,只需在工具中重新執行對應的宏(參見圖 4),即可實現所有表格的數據更新,保證了數據的一致性,避免了因人工統計而產生的遺漏。
本文通過對GJB5000A體系下軟件測試中配置項測試和系統測試的數據整理過程進行了研究,對所需整理的數據建立了數學模型。利用Excel VBA技術編寫軟件測試數據自動生成工具實現了該模型,并在該模型中增加了數據合法性檢查機制。與原有的人工整理測試數據相比,實現了如下創新:
(1)提升了軟件測試效率。借助該Excel VBA工具,測試人員僅需填寫30項數據,其余120項數據均可自動生成,減少了人工記錄、整理的工作量。
(2)確保了數據的一致性。在測試數據自動生成的過程中,表格的數據源統一,當使用者修改數據后,利用工具進行表格的重新生成即可實現數據的同步更新,保證了數據的一致性。
(3)降低了培訓成本。在實現的Excel VBA工具中,將體系文件所規定的命名規則和約束通過自動化的方式實現,無需人工記憶掌握,節省了人員培訓成本。