文/孫龑 胡玉露
隨著軍用軟件在信息裝備中發(fā)揮的作用越來越大,對于軍用軟件質(zhì)量的關(guān)注度也越來越高。為了規(guī)范我國軍用軟件的開發(fā),相關(guān)部門頒發(fā)了GJB5000A-2008《軍用軟件研制能力成熟度模型》。面對更高的要求,如何依照體系高效地開展軟件測試工作,成為每一個測試工程師必須面對的難題。
基于軟件測試V模型(參見圖 1)的軟件測試過程中,將軟件測試劃分為四個級別,分別是單元測試、部件測試、配置項測試(合格性測試)、系統(tǒng)測試。而在配置項測試和系統(tǒng)測試過程中,涉及的數(shù)據(jù)量大,數(shù)據(jù)種類多,通過人工整理的方式不僅會耗費大量時間,而且容易造成數(shù)據(jù)不一致的問題。本文基于某型機軟件測試工作,依據(jù)GJB5000A體系文件的相關(guān)要求,對配置項測試和系統(tǒng)測試中所需要的數(shù)據(jù)進行了研究,依據(jù)數(shù)據(jù)之間的關(guān)系建立數(shù)學(xué)模型,并通過Excel VBA的手段制作了軟件測試數(shù)據(jù)自動生成工具,實現(xiàn)了該數(shù)據(jù)模型。通過這兩個測試過程中數(shù)據(jù)的自動生成,實現(xiàn)了測試效率的提升。
在某型機軟件測試工作中,基于GJB5000A-2008《軍用軟件研制能力成熟度模型》和GJB438B-2009《軍用軟件開發(fā)文檔通用要求》,配置項測試和系統(tǒng)測試過程中各需完成12個表格、150項數(shù)據(jù)的收集和整理:
圖1:軟件測試V模型
(1)項目基本信息表:包括14項數(shù)據(jù),分別是項目標(biāo)識、軟件標(biāo)識、測試級別、進入測試的軟件版本、被測軟件名稱、版本日期、默認用例設(shè)計人、默認用例設(shè)計日期、默認用例執(zhí)行人、默認用例執(zhí)行日期、默認故障嚴(yán)重等級、默認故障解決人、默認故障解決日期、默認故障解決結(jié)論。
(2)需求與測試項的映射關(guān)系表:包括5項數(shù)據(jù),分別是測試項名稱、測試項章節(jié)號、測試項標(biāo)識、需求章節(jié)號、需求章節(jié)名稱。
(3)測試用例表:包括17項數(shù)據(jù),分別是用例編號、測試類型、正常/異常、測試項名稱、測試項標(biāo)識、用例標(biāo)識號、測試說明、用例描述、測試步驟、預(yù)期結(jié)果、設(shè)計人、設(shè)計日期、測試日期、測試結(jié)果及現(xiàn)象、測試結(jié)論、故障現(xiàn)象描述、測試人。
(4)測試用例個數(shù)統(tǒng)計表:包括39項數(shù)據(jù),分別是各種測試類型下正常/異常測試用例個數(shù)。
(5)用例到需求的映射表:包括6項數(shù)據(jù),分別是測試用例標(biāo)識、測試項名稱、測試項章節(jié)號、測試項標(biāo)識、需求章節(jié)號、需求名稱。
(6)需求到用例的映射表:包括6項數(shù)據(jù),分別是相關(guān)測試用例標(biāo)識、測試項名稱、測試項章節(jié)號、測試項標(biāo)識、需求章節(jié)號、需求名稱。
(7)測試說明到測試用例的映射表:包括7項數(shù)據(jù),分別是需求內(nèi)容、相關(guān)測試用例標(biāo)識、測試項名稱、測試項章節(jié)號、測試項標(biāo)識、需求章節(jié)號、需求名稱。
(8)測試用例到測試說明的映射表:包括7項數(shù)據(jù),分別是需求內(nèi)容、相關(guān)測試用例標(biāo)識、測試項名稱、測試項章節(jié)號、測試項標(biāo)識、需求章節(jié)號、需求名稱。
(9)測試故障匯總表:包括18項數(shù)據(jù),分別是故障標(biāo)識號、被測軟件名稱、被測軟件標(biāo)識、版本及日期、測試項名稱、用例標(biāo)識、測試級別、測試類型、故障類型、故障嚴(yán)重等級、故障描述、報告人、報告日期、處理意見及方法、解決人、解決日期、回歸測試方法、結(jié)論。
(10)影響性分析表:包括10項數(shù)據(jù),分別是分析序號、更改依據(jù)、更改描述、受影響/新增測試項、受影響/新增測試用例、測試類型、重用用例個數(shù)及比率、新設(shè)計用例個數(shù)及比率、執(zhí)行用例個數(shù)及比率、未通過用例個數(shù)及比率。
(11)故障個數(shù)統(tǒng)計表:包括16項數(shù)據(jù),分別是4種不同故障類型下不同等級的故障個數(shù)。
(12)用例執(zhí)行情況表:包括5項數(shù)據(jù),分別是用例個數(shù)、百分比、執(zhí)行用例個數(shù)、未執(zhí)行用例個數(shù)、未通過用例個數(shù)。
由于軟件測試工作的特殊性,在配置項測試和系統(tǒng)測試的數(shù)據(jù)整理過程中,存在如下難點:
(1)數(shù)據(jù)量大:需整理12個數(shù)據(jù)表共計150項數(shù)據(jù),整理工作非常繁重。
(2)數(shù)據(jù)存在關(guān)聯(lián),難以維護:整理的數(shù)據(jù)中存在關(guān)聯(lián)性,導(dǎo)致表格中的數(shù)據(jù)不能獨立存在,當(dāng)某一個表格的數(shù)據(jù)發(fā)生變化時,其余表格數(shù)據(jù)必須進行同步更新,否則就會出現(xiàn)前后不一致。
(3)表格填寫規(guī)范較多,培訓(xùn)成本較高:為保證數(shù)據(jù)格式的統(tǒng)一性,表格填寫過程中需要對數(shù)據(jù)進行統(tǒng)一化規(guī)定,測試負責(zé)人需要經(jīng)過相關(guān)的學(xué)習(xí)和培訓(xùn)才能掌握對應(yīng)的填寫規(guī)范,培訓(xùn)成本較高。
2.1.1 數(shù)據(jù)類型的劃分
對12個數(shù)據(jù)表150項數(shù)據(jù)進行研究,依據(jù)數(shù)據(jù)特性及關(guān)聯(lián)關(guān)系可將數(shù)據(jù)劃分為四類:
(1)填寫數(shù)據(jù):項目基本信息數(shù)據(jù),必須通過手工填寫。
(2)設(shè)計數(shù)據(jù):經(jīng)過設(shè)計后填入的數(shù)據(jù),必須通過手工填寫。
(3)部分統(tǒng)計數(shù)據(jù):即依據(jù)填寫數(shù)據(jù)和設(shè)計數(shù)據(jù),通過固定的映射關(guān)系和計算可以得到該項數(shù)據(jù)中大部分內(nèi)容的數(shù)據(jù)。
(4)完全統(tǒng)計數(shù)據(jù):即依據(jù)填寫數(shù)據(jù)和設(shè)計數(shù)據(jù),通過固定的映射關(guān)系和計算可以得到該項數(shù)據(jù)中全部內(nèi)容的數(shù)據(jù)。
根據(jù)以上類別,將150項數(shù)據(jù)進行劃分為填寫數(shù)據(jù)18項、設(shè)計數(shù)據(jù)12項、部分統(tǒng)計數(shù)據(jù)20項、完全統(tǒng)計數(shù)據(jù)100項:
(1)項目基本信息表:填寫數(shù)據(jù)14項;其余數(shù)據(jù)無。
(2)需求與測試項的映射關(guān)系表:設(shè)計數(shù)據(jù)5項;其余數(shù)據(jù)無。
(3)測試用例表:填寫數(shù)據(jù)1項,包括故障現(xiàn)象描述;設(shè)計數(shù)據(jù)7項,包括測試類型、正常/異常、測試項名稱、測試說明、用例描述、測試步驟、預(yù)期結(jié)果;部分統(tǒng)計數(shù)據(jù)6項,包括設(shè)計人、設(shè)計日期、測試日期、測試結(jié)果及現(xiàn)象、測試結(jié)論、測試人員;完全統(tǒng)計數(shù)據(jù)3項,包括用例編號、測試項標(biāo)識、用例標(biāo)識號。
(4)測試用例個數(shù)統(tǒng)計表:完全統(tǒng)計數(shù)據(jù)39項;其余數(shù)據(jù)無。
(5)用例到需求的映射表:完全統(tǒng)計數(shù)據(jù)6項;其余數(shù)據(jù)無。
(6)需求到用例的映射表:完全統(tǒng)計數(shù)據(jù)6項,其余數(shù)據(jù)無。
(7)測試說明到測試用例的映射表:完全統(tǒng)計數(shù)據(jù)7項,其余數(shù)據(jù)無。
(8)測試用例到測試說明的映射表:完全統(tǒng)計數(shù)據(jù)7項,其余數(shù)據(jù)無。
(9)測試故障匯總表:填寫數(shù)據(jù)3項,包括故障類型、處理意見及方法、結(jié)論;部分統(tǒng)計數(shù)據(jù)6項,包括故障嚴(yán)重等級、報告人、報告日期、解決人、解決日期、回歸測試方法;完全統(tǒng)計數(shù)據(jù)9項,包括故障編號、被測軟件名稱、被測軟件標(biāo)識、版本及日期、測試項名稱、用例標(biāo)識、測試級別、測試類型、故障描述;填寫數(shù)據(jù)無。
(10)影響性分析表:部分統(tǒng)計數(shù)據(jù)7項,包括受影響/新增測試項、受影響/新增測試用例、測試類型、重用個數(shù)及比率、新設(shè)計個數(shù)及比率、執(zhí)行個數(shù)及比率、未通過個數(shù)及比率;完全統(tǒng)計數(shù)據(jù):3項,包括序號、更改依據(jù)、更改描述;其余數(shù)據(jù)無。
(11)故障個數(shù)統(tǒng)計表:完全統(tǒng)計數(shù)據(jù)16項;其余數(shù)據(jù)無。
(12)用例執(zhí)行情況表:部分統(tǒng)計數(shù)據(jù)1項,包括未執(zhí)行用例個數(shù);完全統(tǒng)計數(shù)據(jù)4項,包括測試類型、用例個數(shù)、百分比、執(zhí)行用例個數(shù)、未通過用例個數(shù)。
2.1.2 映射關(guān)系的建立
完成對150項數(shù)據(jù)的分類,建立填寫數(shù)據(jù)、設(shè)計數(shù)據(jù)與部分統(tǒng)計數(shù)據(jù)、完全統(tǒng)計數(shù)據(jù)之間的關(guān)系,經(jīng)過研究,將表格內(nèi)數(shù)據(jù)關(guān)系主要分為如下四類:
(1)直接映射關(guān)系:即源數(shù)據(jù)和目標(biāo)數(shù)據(jù)之間的數(shù)值相同,例如項目基本信息表中的默認用例設(shè)計人與測試用例表中的設(shè)計人為直接映射關(guān)系。
(2)計算映射關(guān)系:即源數(shù)據(jù)經(jīng)過直接計算得到目標(biāo)數(shù)據(jù)的值,例如測試用例表中的測試結(jié)果及現(xiàn)象與測試用例表中的故障現(xiàn)象描述。
(3)直接統(tǒng)計映射關(guān)系:即目標(biāo)數(shù)據(jù)經(jīng)過某一個表格中的某幾項源數(shù)據(jù)經(jīng)過統(tǒng)計計算得到。
(4)間接統(tǒng)計映射關(guān)系:即目標(biāo)數(shù)據(jù)經(jīng)過某幾個表格的某幾項源數(shù)據(jù)經(jīng)過統(tǒng)計計算得到。
圖2:間接統(tǒng)計映射關(guān)系的目標(biāo)數(shù)據(jù)自動生成流程
圖3:數(shù)學(xué)模型(軟件測試數(shù)據(jù)自動生成工具)流程
表1:某型號某軟件維護性測試項目信息
表2:自動生成數(shù)據(jù)和人工統(tǒng)計數(shù)據(jù)的效率比較
表3:比較所用計算機配置信息
圖4:宏列表
基于上述研究,本文采用Excel作為基礎(chǔ)制作數(shù)據(jù)自動生成工具,對數(shù)據(jù)之間的映射關(guān)系進行實現(xiàn)。Excel中自帶開發(fā)工具VBA,VBA可以直接對Excel表格進行編程,對不同的數(shù)據(jù)表編制不同的數(shù)據(jù)宏,建立表格中的目標(biāo)數(shù)據(jù)(部分統(tǒng)計數(shù)據(jù)、完全統(tǒng)計數(shù)據(jù))與源數(shù)據(jù)之間的映射。使用工具時,在完成源數(shù)據(jù)的填寫后,執(zhí)行對應(yīng)表格的數(shù)據(jù)宏,完成目標(biāo)數(shù)據(jù)的自動生成,四種映射關(guān)系下的目標(biāo)數(shù)據(jù)自動生成總流程如圖 2所示。
為保證數(shù)據(jù)符合GJB5000A和軟件測試的要求,在數(shù)學(xué)模型的設(shè)計中將數(shù)據(jù)約束通過如下方式來實現(xiàn):
(1)對于填寫數(shù)據(jù)和設(shè)計數(shù)據(jù):通過選項的形式或在工具中規(guī)定好填寫格式,以確保規(guī)范填寫。
(2)對于部分統(tǒng)計數(shù)據(jù)和完全統(tǒng)計數(shù)據(jù):將數(shù)據(jù)規(guī)范通過映射關(guān)系來實現(xiàn),通過計算、統(tǒng)計、拼接生成符合規(guī)范的目標(biāo)數(shù)據(jù)。
通過格式化的輸入約束和依據(jù)規(guī)范的自動生成,保證了數(shù)據(jù)填寫的規(guī)范性,無需進行過多的記憶和培訓(xùn)。
在實現(xiàn)數(shù)學(xué)模型之外,為保證源數(shù)據(jù)和目標(biāo)數(shù)據(jù)的準(zhǔn)確性,在本工具中增加了合法性檢查機制:
(1)對于空數(shù)據(jù)的檢查:檢查源數(shù)據(jù)的值是否為空。
(2)對于數(shù)據(jù)格式的檢查:檢查源數(shù)據(jù)的格式是否正確。
(3)對于映射關(guān)系的檢查:檢查映射關(guān)系是否正確。
在加入合法性檢查機制后,數(shù)學(xué)模型(軟件測試數(shù)據(jù)自動生成工具)的基本流程如圖3所示。
為準(zhǔn)確驗證軟件測試數(shù)據(jù)自動生成工具的工作效率,在某型機某軟件系統(tǒng)測試過程中,對自動生成數(shù)據(jù)和人工統(tǒng)計數(shù)據(jù)的效率進行了比較。本項目的基本信息如表1所示。自動生成數(shù)據(jù)和人工統(tǒng)計數(shù)據(jù)的效率如表2所示。在本次比較中所使用的計算機基本配置信息如表3所示。
根據(jù)比較可以得出,在本次系統(tǒng)測試的數(shù)據(jù)整理過程中,通過工具的使用,相較于人工整理數(shù)據(jù),效率提升了95.66%,達到了提升測試效率的目的。
當(dāng)某個表格某項數(shù)據(jù)進行了修改后,只需在工具中重新執(zhí)行對應(yīng)的宏(參見圖 4),即可實現(xiàn)所有表格的數(shù)據(jù)更新,保證了數(shù)據(jù)的一致性,避免了因人工統(tǒng)計而產(chǎn)生的遺漏。
本文通過對GJB5000A體系下軟件測試中配置項測試和系統(tǒng)測試的數(shù)據(jù)整理過程進行了研究,對所需整理的數(shù)據(jù)建立了數(shù)學(xué)模型。利用Excel VBA技術(shù)編寫軟件測試數(shù)據(jù)自動生成工具實現(xiàn)了該模型,并在該模型中增加了數(shù)據(jù)合法性檢查機制。與原有的人工整理測試數(shù)據(jù)相比,實現(xiàn)了如下創(chuàng)新:
(1)提升了軟件測試效率。借助該Excel VBA工具,測試人員僅需填寫30項數(shù)據(jù),其余120項數(shù)據(jù)均可自動生成,減少了人工記錄、整理的工作量。
(2)確保了數(shù)據(jù)的一致性。在測試數(shù)據(jù)自動生成的過程中,表格的數(shù)據(jù)源統(tǒng)一,當(dāng)使用者修改數(shù)據(jù)后,利用工具進行表格的重新生成即可實現(xiàn)數(shù)據(jù)的同步更新,保證了數(shù)據(jù)的一致性。
(3)降低了培訓(xùn)成本。在實現(xiàn)的Excel VBA工具中,將體系文件所規(guī)定的命名規(guī)則和約束通過自動化的方式實現(xiàn),無需人工記憶掌握,節(jié)省了人員培訓(xùn)成本。