吳 畏,盧道偉
(92941部隊,遼寧 葫蘆島 125001)
武器裝備軟件靶場測試方法研究
吳 畏,盧道偉
(92941部隊,遼寧 葫蘆島 125001)
隨著信息化裝備的大量列裝,裝備軟件的作用已經變得不可或缺和替代,其規模的不斷增大使得使用中出現問題的概率越來越大.武器裝備軟件的質量已經成為裝備質量的核心,因此裝備軟件測試自然而然成為武器裝備定型試驗中的重要組成部分.本文從靶場對武器裝備軟件測試的需求入手,研究探討了在靶場環境下進行軟件測試的試驗方法和測試步驟,并分析了軟件測試用例的設計準則,對靶場開展武器裝備軟件測試具有一定的指導意義.
武器裝備;軟件測試;靶場
隨著信息化裝備的大量列裝和武器裝備軟件規模的不斷擴大,武器系統的復雜性不斷增加,軟件出現問題的概率也越來越大;同時由于硬件技術的進步和元器件可靠性的提高,使得硬件故障相對減少,因此軟件故障正逐漸成為導致系統失效的主要因素.武器裝備軟件不同于普通的民用軟件,它必須具備高質量和高可靠性.一旦裝備軟件有故障或存在缺陷,就可能造成我們經濟的巨大損失,甚至直接造成裝備損害、還有可能導致對工作人的傷害,一旦戰爭中出現軟件故障導致武器使用無效則更會造成無法估量的嚴重后果.因而作為保證軟件質量關鍵手段的軟件測試,也越來越受到軍方的重視.
海軍靶場承擔著海軍各種新型武器系統的試驗、鑒定和驗收任務,武器裝備軟件是武器系統的重要成員,因此它的質量對武器系統的作戰效能有著舉足輕重的影響.由于武器裝備軟件本身的復雜性和不確定性,進行軟件測試的難度極大.盡管武器系統進靶場試驗前各種裝備軟件都經過了專業機構的測評,但在某種意義上那只是一種結構和邏輯上的評判,在相關軟件嵌入設備后整個系統聯動工作中勢必會出現一些工作不協調或功能不完備的問題.在以往武器系統靶場試驗中曾出現過不少由于軟件原因而導致整個武器系統試驗失敗的例子,因此對武器裝備軟件進行必要的測試已經成為靶場試驗的一項重要內容.
作為保障軟件質量最直接、最有效手段之一的軟件測試目前已成為軟件界重要的研究熱點.軟件測試技術實質上就是發現軟件中存在的B U G并不斷修復B U G的過程.其實現過程如圖1所示.

圖1 軟件測試過程
目前靶場在軟件測試方面起步較晚,軟件測試知識及測試工具的使用都剛剛起步.雖然在進靶場測試之前,也對武器系統的軟件的功能進行了測試,也驗證了其可行性,但是武器裝備軟件隨同武器系統交付靶場進行試驗,僅僅是軟件開始發揮作用,在武器試驗、使用過程中還存在著軟件修正的問題,軟件的最終狀態還需要在靶場進行大量的試驗才能最終確定.因此,武器系統定型裝備部隊前,靶場必須從用戶的角度對其進行系統測試.
靶場進行的武器系統試驗,大多是周期短、時間緊的任務,可對武器裝備軟件進行測試的時間系數比較低,所以靶場對武器裝備軟件進行比較全面、深入的測試時比較困難的,而只能對其進行基本功能的測試.不僅要在脫離硬件設備的環境中進行測試,還要在硬件設備上運行并檢測軟件.在同一武器系統中,往往同時使用了多種智能芯片,且操作系統、編程語言等也不盡相同,這些都成了限制靶場對武器裝備進行軟件測試的不利因素.因而如何對武器裝備軟件進行系統的、有效的測試業已成為靶場研究的重點.
靶場試驗中對武器裝備軟件進行測試的過程時比較復雜的,在測試之前要在預知整個項目的預定目標和可能的實際條件的前提下,要認真規劃系統地測試過程,而且要在試驗的過程中,及時進行調整和細化測試計劃在項目的實際情況和發生變化的情況下.
3.1 測試方法
由于武器系統在進場試驗前,研制單位已經對武備軟件進行了大量的測試,其功能的實現基本得到驗證.所以,靶場主要是對武器裝備軟件的功能和性能進行測試.這種方法是黑盒測試.
3.2 功能測試
它是在武器系統各組成部分進行系統聯動過程中和聯動之后,用一系列合理的、不合理的、臨界的數據值和數據類型,對武器裝備軟件進行測試,用來驗證武器系統能否在飽和和極值、滿負荷的情況下能否正常運行.它不僅要考慮武器系統各組成部分之間的相互作用,還要考慮武器系統的作戰使用環境.針對不同的武器系統,其測試的具體內容可能有所不同,但是都可以歸為界面、數據、操作、邏輯、接口等幾個方面.靶場對武器系統進行功能測試主要采用以下幾種測試方法:
a.等價劃分法
把輸入空間劃分為幾個“等價區間”,其中“等價區間”是指互不相交的一組子集,這些子集的并是整個集合(輸入空間).由于每個子集是由等價關系決定的,因此子集元素都有一個共同點,所以每個“等價區間”中只需測試一個典型值,這樣基于相對較少的測試案例就可以完整覆蓋整個輸入空間,很大程度上減少了測試重復性.
等價區間有如下特征:
記(A,B)是函數f(x)的一個等價區間,在(A,B)中取任意值x1進行測試,如果f(x1)錯誤,那么f(x)在整個(A,B)區間都出錯;如果f(x1)正確,那么f(x)在整個(A,B)區間都正確.
b.邊界值分析法
在某個變量范圍的邊界上,對獨立的輸入/輸出進行驗證,看其輸出是否正確.其基本思想是使用在最小值、略高于最小值、正常值、略低于最大值和最大值處取輸入變量值作為測試數據,對其輸出進行分析,它是對等價劃分法的補充.例如,假設A和B是某輸入空間的邊界值,那么除了典型值外還要用A和B作為輸入對系統進行測試.
c.錯誤推測法
這種測試是針對有經驗的測試工作人員推測出可能存在的錯誤來進行測試.它是在軟件測試基礎較差情況下的一種有效的測試方法,能使測試者快速、容易地切入,體會到軟件使用的難易程度,但是難以知道測試的覆蓋率.
錯誤推測法的基本思想是:某處發現了缺陷,則可能會隱藏更多的缺陷,在實際操作中,列出軟件中所有可能的錯誤和容易發生的特殊情況,然后依據測試者的經驗作出選擇.
(2)性能測試
性能測試即測試系統軟件處理事務的速度,一是為了檢驗武器系統性能是否符合研制任務書的要求,二是為了得到某些性能數據供軟件設計人員及靶場參考.
(3)系統測試
系統測試是將武器裝備軟件作為一個元素,在不同的作戰環境中,與武器裝備的其它元素(包括某些支持軟件、硬件設備、數據和人員等)組合在一起,對整個武器系統進行全面的測試,這樣既可以確保武器系統各組成部分能單獨的受到檢驗,又能確保在系統各部分協調工作環境下也能夠正常運行.
在系統測試這個過程中不僅可以發現設計和編碼的錯誤,還可以驗證系統確實能提供研制任務書中指定的功能,系統的動態特性也符合預定的要求.系統測試過程如圖2.

圖2 系統測試過程
一些常用的系統測試方法有以下幾種:
(1)恢復測試(RecoveryTesting):用來檢測系統的恢復能力.使用不同方法,使軟件強制性出現錯誤,不能在正常條件下運行,觀察其恢復能力.
(2)強度測試(StressTesting):在檢測系統能力的實際限度時是在不正常頻率、資源或數據量的方式下對系統進行運行,檢測出最高值.
(3)性能測試(PerformanceTesting):目的是用于測試集成系統中軟件的運行性能.任意階段的過程檢測都可以進行性能檢測,但是要想檢查一個系統地真正性能,必須要求系統地所有元素都組合在一起時才能檢測得到.而且它往往要和上一個性能進行結合運行.我們要在系統中安裝測量儀表或為度量性能而設置的軟件來記錄測試到的性能.
(4)安全測試(SecurityTesting):主要用來驗證安裝在系統內的保護機制能夠在實際作戰環境中使系統能夠免受外界的非法入侵和干擾.檢驗系統是否有安全保密的漏洞的途徑是設置一些測試用例來來盡可能突破系統的安全保密措施.
考慮到武器裝備軟件的高質量、高可靠性,靶場在對武器裝備軟件進行測試的過程中,通常采用多種方法的組合,要對所有合法的輸入和可能的不合法的輸入進行測試,以考驗武器裝備軟件在各種惡劣、極限條件下是否能正常運行.
3.3 測試步驟
在對裝備軟件進行測試的時候,我們要對POCERM模型進行參考.該模型將軟件測試過程劃分為如下幾項工作:包括測試計劃的擬定、測試大綱的編制、測試用例的生成、測試的實施、軟件問題報告SPR(SoftwareProblemReports)和結果報告的生成和軟件測試過程的管理等.
3.3.1 測試大綱的制定
測試大綱是是比較重要的,靶場也是根據測試大綱來測試武器裝備軟件的,它詳細說明了針對系統的每一項功能所要求完成的基本測試項目和完成標準在每一次測試中.它是靶場從用戶的角度細化和展開被測對象的功能和特性,是對系統功能在規格說明書中定義的認識,經過一系列的細化展開而制作的.
3.3.2 測試計劃編寫
由于靶場能夠對系統軟件進行測試的時間極短,因此測試人員要針對整體項目的預算目標與可能發生的現實條件,對項目系統的檢測過程提前進行合理的計劃,而且根據整個項目的具體情況應該在系統測試過程中做出相應的調整.一般而言,軟件測試的計劃總的來說有3個層次:
a.整體測試計劃.確定要被測試的對象和目標;確定測試所需要的階段;確定測試人員、硬件設施與軟件資源以及測試進度等一些方面的計劃;標定軟件測試的方法、測試的水準及所需的開發環境和測試工具等內容.
b.具體測試計劃.針對每一個子環節(系統)的需要,應該進行詳細的制定測試工作的計劃,包括測試任務的制定,策略的擬定,任務的分配以及進度的安排等內容.
c.測試員的測試計劃.測試員的測試計劃是總體項目組成的一部分,也是系統在測試過程中檢查實際情況的重要依據與保障.由第二步測試計劃所制定的測試員的測試計劃,該計劃包括了測試員在每輪測試中所要記錄的實驗內容,測試的強度以及工作的強度等內容.
3.3.3 測試實施
做好上述準備后,靶場可以實施對武器裝備軟件的測試,主要是檢測系統軟件能否滿足系統研制任務書的功能和性能要求,為后續的試驗提供依據.在性能測試階段,主要針對軟件的接口性能進行測試.在功能測試階段,主要檢查武器裝備軟件對作戰過程中各種功能實現的情況,以及軟件的健壯性.
3.3.4 測試報告編寫
在測試的過程當中應該把測試的項目和結果加以詳細記錄并分析與總結,最后在整個項目測試結束后進行完成《軟件可靠性測試報告》的編寫.
軟件測試的首要核心任務就是生成并執行軟件的測試實例,它的主要目的在于檢測發現并排除在軟件投入運行之前所產生的錯誤,并為客戶提供一個質量高,可靠性好的軟件產品,該方法也是提高軟件產品質量的可靠手段之一.測試的用例即針對在軟件的測試過程中所有可能發生的存在的目標,行為,結果及環境的方面的描述.對于特定和組合的功能編寫測試方案并制定文檔,用例的選擇既要有一般性,又要有特殊情況,應全盤考慮各種所能出現或發生的情況.
4.1 測試用例描述
規范化的測試用例描述在軟件測試與評估中具有重要的作用,這是因為這種描述是設計與選取測試用例集的第一步,這種描述是否完整、權威、規范化與可理解性,則決定了該測試用例能否被軟件研制人員、操作人員和試驗鑒定人員所理解接受.
以下八點是典型的測試用例應該包括的詳細信息:(1)將要測試的目標是什么;(2)需要測試那些功能;(3)在什么樣環境及條件下測試;(4)測試的時間;(5)測試輸入是什么;(6)按什么步驟來測試;(7)預期的輸出是什么;(8)評價輸出結果的準則.
表1為測試用例的一般描述.測試用例對所測試項功能的測試要點、概要描述、測試系統輸入數據、預期產生結果、測試預置條件、測試說明及影響范圍都已經明確.測試用例的核心內容是測試輸入數據和預期產生的結果,測試輸入數據應當全面覆蓋測試功能.所測試的數據應當包括:錯誤測試數據30%,邊界測試數據30%,正確測試數據40%.而預期結果就是對每個測試輸入數據進行定量地準確地描述.

表1 測試用例一般描述
4.2 測試用例設計準則
通常來說,測試用例的含義是指通過向被測系統提供的輸入數據、操作或各種環境設置而進行一次測試,它對軟件測試的執行過程進行控制,它的設計與生成是依據測試大綱對其中每個測試項目的進一步實例化.大體上講,測試過程的控制也是測試用例的一種.通過測試大綱對每個測試項目的實例化促使測試用力的設計與生成.不少著名的論著歸納了幾條基本準則關于設計測試用例的各種規則和策略,如下:
a)測試用例的代表性:能夠代表并包含各種合法的和非法的、邊界的和越界的、合理的和不合理,反常的輸入數據、操作和環境設置等;
b)測試結果的可再現性:即系統的執行結果對同樣的測試用例,應當是一致的.
c)測試結果的可判定性:即可判定測試執行結果的正確性,每一測試用例都會有與其對應的期望結果;
4.3 測試用例設計方法
生成和執行軟件測試用例是軟件測試的核心任務.測試用例設計的基本目的是確定一組最有可能發現某個錯誤或某類錯誤的測試數據,以實現對系統的某個功能的測試.根據靶場對武器裝備軟件進行測試的狀態,靶場對軟件測試用例的設計方法可采用以下幾種方法:等價劃分法、邊界值分析法、錯誤推測法.
一般而言,要想查出程序中的所有錯誤,需要在對軟件系統進行測試時,把所有可能的輸入都作為測試情況使用,才能到達目的.但是,在靶場對整個武器裝備軟件而言,那就有所不同,要求輸入不僅僅包括用戶通過人機交互接口進行的操作,還包括對武器系統產生的影響而形成的輸入,從而導致了靶場軟件測試用例設計的復雜性.這就要求對測試用例要進行精心的設計,把軟件測試用例設計和武器系統試驗方案設計的互動結合,我們只利用大量數據中的少量的測試數據,并綜合分析試驗后采集的數據,以便使測試效果達到最佳.除此之外我們還要結合多組模擬仿真,被測軟件部分的外圍信號來源通過軟件模擬來獲得,這樣能夠設計在環境模擬基礎上的各種測試用例.
隨著武器裝備的不斷發展,對武器裝備軟件質量要求的也不斷提高,軟件測試作為軟件質量保證的關鍵步驟,越來越受到人們的重視.作為承擔著海軍各種新型武器系統的試驗、鑒定和驗收任務的靶場,應當盡快有效地組織專門的高素質的測試隊伍,選擇適宜的方法進行測試,是對不同新型的武器裝備軟件進行全方位測試的有效途徑,并利用在測試過程中獲得的真實有效的數據,對武器裝備軟件進行客觀的評估,以提高武器系統試驗鑒定的質量,降低武器系統裝備部隊后的安全隱患.
〔1〕劉超,金茂忠.軟件測試過程的基本模型POCERM[J].北京航空航天大學學報,1997(23).
〔2〕Beizer,B.Software testing techniques[M].New York:Van No strand Reinhold Co,Inc,1990.
〔3〕Myers G.The art of software testing[M].New York: John Wiley&Sons,Inc,1979.
〔4〕軟件測試方法和技術[M].清華大學出版社,2005.
〔5〕豐彥.軟件測試的系統測試方法[J].引進與咨詢,2005(3).
TP311.52
A
1673-260 X(2013)10-0027-03