中國船舶重工集團公司第七一五研究所 趙旭瑞
針對目標識別軟件在黑盒測試時遇到的測試覆蓋范圍小、驗證不充分、測試執行效率低等問題,將主流的線性腳本、結構化腳本、數據驅動、關鍵字驅動等自動化測試方法應用其中。根據被測軟件的關鍵等級和測試條件,選擇適合的自動化測試方法,提升軟件測試水平,提高被測軟件的質量。
目標識別軟件主要實現從時域信號提取跟蹤目標特征信息,結合偵察結果、定位結果得出跟蹤目標分類結果及置信度。存在多個輸入設備時,還要實現多目標信息的關聯。軟件運行的網絡拓撲圖如圖1所示。主要的性能指標是對不同目標分類正確率的要求。

圖1 目標識別軟件網絡拓撲圖
對于常規采用黑盒方式的配置項級測試,測試過程主要內容為使用軟件開發組自己提供的幾個類型的目標信號作為輸入,經被測軟件特征分析及自動分類處理后,在顯控軟件上查看輸出結果。功能類測試用例的預期結果主要為分類結果與的目標類型一致;不同型號設備對同一目標的分類結果可進行融合判決。性能測試用例的預期結果主要為統計多次目標分類執行結果,計算出的分類正確率高于規定值。
在測試執行中,大量的測試規程都圍繞“模擬某類目標、查看預期分類結果”這項內容,以及排列組合不同類型目標得出統計結果。手動逐項操作并逐個對結果進行檢查是一種費時費力的做法,且難以保證記錄的準確性和條件覆蓋的全面性。將測試規程抽象化,用自動化測試的方法實現測試內容的重復和結果正確性的比對,可更高效全面地驗證被測軟件。隨著測試數據的豐富和測試技巧的提升,可逐步使用線性腳本、數據驅動、關鍵字驅動等一系列方法,實現自動化程度的提升。
線性腳本主要用來模擬手動執行測試時的動作序列,測試執行人員通過運行腳本便可一鍵執行一系列動作。對于目標識別軟件某個目標(或某幾個組合目標)分類的線性腳本在設計測試的成本和測試執行效率之間達到平衡,實現軟件測試水平的提升向驗證測試規程,可用圖2所示的流程搭建成線性腳本。

圖2 目標分類線性腳本流程圖
該方法是實現更繁雜腳本、更高層次自動化的基礎。優點是簡單易學,一些測試工具可以圖形化操作甚至通過錄屏來實現手動操作的流程轉化為腳本代碼,對于編程水平有限的使用者也可以輕松使用。缺點也很明顯,例如加載不同種類的目標、存在多個不同目標的組合時由于不同的約束條件和不同的操作步驟,將對應有多個不同腳本,腳本的數量會較多;重復多次加載模擬目標或者加載不同類型的模擬目標時,需要執行多次或多個腳本,對于性能測試的分類正確率中要求統計大量多次運行結果的場景,這種方法仍不夠高效。
結構化腳本方法在線性腳本方法的基礎上,引入了腳本庫,便于對線性腳本的重用。對于目標分類來說,可以將加載不同類型的模擬目標分別制成基礎腳本。為了多次運行時統計結果,將腳本輸出改為在識別正確時對應類型目標數加1,流程如圖3所示。將不同類型目標識別分類的腳本存入腳本庫中,在性能測試的分類正確率計算腳本中,便可組合調用,統計結果后計算出識別率。以基本的A、B兩類目標為例,共正身驗證100個樣本,則流程圖如圖4所示。

圖3 A類目標分類腳本

圖4 分類正確率計算腳本
結構化腳本通過重用減少修改腳本的工作量,也降低了新建腳本的難度。該方法的應用對腳本庫的管理和測試人員技能有一定要求,腳本應做好文檔化,測試人員也應具備一定的編輯能力。
數據驅動方法是指在線性腳本方法的基礎上,將測試輸入提取出來存為一個或多個單獨的數據文件,通過編輯測試輸入文件來控制測試的廣度和深度。此時在目標分類腳本的流程前增加“從數據文件中讀取目標信息”,數據文件中主要設定加載目標的種類、數量及順序,作為目標分類數據驅動的控制腳本,如圖5所示。性能測試的分類正確率便改為在目標分類驅動后增加計算識別率和驗證是否達標的流程,如圖6所示。需要增加測試的全面性和有效性則通過增加數據文件中的目標種類、目標數據的數值來實現。驗證“多輸入目標信息的關聯”功能在該方法下也會更容易實現自動化,只需要在目標分類流程中增加每輪識別的目標結果與數據文件中該輪模擬目標信息的比對即可。

圖5 目標分類數據驅動流程

圖6 分類正確率數據驅動流程
該方法大大減少增加新測試用例的成本,使測試人員不需要過多依賴技術測試分析師(TTA),更適用在關鍵點、關鍵區域進行更深入的測試。在管理輸入的數據文件并保證讀取接口的正確性方面需要投入更多精力。
關鍵字驅動方法是指在數據驅動方法的基礎上,將測試輸入的數據文件按具體業務提取出關鍵字,測試執行時通過選擇關鍵字來對被測軟件對應類別進行測試。目標識別軟件可應用此方法從需求的不同角度設置如“A型設備目標分類、B型設備目標分類、水面目標識別率、水下目標識別率”等關鍵字,更宏觀地驗證所關心的內容,而詳細的測試用例由關鍵字文件來自動生成。
該方法的目的是將測試的詳細步驟抽象,將測試用例的繁雜性隱藏在關鍵字中,使現場執行的難度進一步降低,同時也進一步降低新增測試項的成本。關鍵字的名稱應選擇對于測試人員和被測軟件有意義的字和詞,多用于表示與系統的高層業務交互。構建關鍵字驅動的前期需要投入較多精力,在復雜的大型系統中使用該方法會得到更大收益。
結束語:目標識別軟件通過使用線性腳本、結構化腳本、數據驅動、關鍵字驅動等一系列測試方法,可實現測試自動化程度的逐步提升。根據被測軟件的關鍵等級、規模、測試輸入數據的豐富程度、測試工具的功能等因素,選擇適合的自動化測試方法,在設計測試的成本和測試執行效率之間達到平衡,實現軟件開發的降本增效。