劉 飛,蒲海峰,李柯達,謝菁珠,李 平,任文真
(中國兵器工業第203研究所,西安 710065)
?
一種彈載嵌入式軟件數學模型測試方法的設計與實現*
劉 飛,蒲海峰,李柯達,謝菁珠,李 平,任文真
(中國兵器工業第203研究所,西安 710065)
為解決彈載嵌入式軟件中數學模型測試存在輸入不可控、通用性低等問題,文中基于彈載嵌入式軟件中數學模型的獨立性提出了一種新的測試方法。首先,提取數學模型代碼,開發驅動程序和樁程序來實現數據的輸入;其次,依據數學模型相關文檔,利用Matlab進行模型搭建;最后,將提取出的數學模型代碼的輸出與Matlab搭建的模型輸出進行對比,得到測試結果。在實際測試中,測試結果準確,表明該方法具有有效性和通用性。
彈載嵌入式軟件;數學模型;軟件測試
由于導彈系統日益復雜,彈載嵌入式軟件的復雜度也在不斷提高,重要性也越來越高。導彈系統的組成如圖1所示。其中,彈載計算機、導航裝置以及導引頭等彈上部件的嵌入式軟件中包含有數學模型。作為彈載嵌入式軟件的核心部分,數學模型也越來越復雜,其正確性直接決定了導彈系統的可靠運行。對數學模型正確性的測試是十分必要的。

圖1 美國AGM-114R導彈結構示意圖
目前,對彈載嵌入式軟件數學模型的測試沒有通用并且有效的方法,主要是通過半實物仿真進行驗證。在半實物仿真中,數學模型的輸入來自導彈其他部件的輸出,所以無法對數學模型的輸入進行有效的控制。在軟件測試中,測試用例的輸入需要嚴格控制,才能保證測試質量。基于此,半實物仿真只能對導彈系統整體進行近似驗證,無法精確驗證數學模型正確性。半實物仿真中無法直接給數學模型進行數據輸入,導致輸入不可控,測試不充分。
針對以上問題,并基于彈載嵌入式軟件代碼中數學模型相對獨立的特點,文中提出了一種新的測試方法。該方法通過對輸入的有效控制,充分測試彈載嵌入式軟件中數學模型的正確性,并通過兩個實例來驗證方法的有效性和通用性。
完整的軟件測試包括如下內容:設計測試用例、運行軟件執行測試用例、判斷測試用例是否通過測試。測試用例設計與具體數學模型功能相關,文中不展開論述。
在彈載嵌入式軟件中,數學模型相關代碼作為軟件的一部分,不能單獨運行并執行測試用例。但是由于在導彈系統中,數學模型代碼主要負責數據處理和指令計算等核心功能,與硬件相關度低,且往往作為獨立的模塊存在于彈載嵌入式軟件中。基于此,通過對數學模型代碼進行提取、增加驅動函數和樁函數等技術手段,可以使其運行并執行測試用例,從而解決了輸入不可控的問題。
執行測試用例后,輸出數據需要與預期輸出進行比對,決定測試用例是否通過測試。針對數學模型輸入數據量大、運算復雜的特點,提出使用建模工具搭建數學模型獲取預期輸出的方案——將測試用例輸入數據代入模型計算,即可獲得預期輸出。對比預期輸出與實際輸出,二者一致即說明通過驗證。
測試方法設計如圖2所示。整個測試流程包含3個部分:1)提取數學模型代碼;2)建模工具搭建數學模型;3)測試結果判定。

圖2 測試流程圖
2.1 提取數學模型代碼
由于數學模型相關代碼屬于彈載嵌入式軟件的一部分,不能獨立運行,所以需要隔離數學模型代碼單元,并根據數學模型相關代碼的接口開發相應的驅動程序和樁程序。該過程是整個測試的首要步驟和關鍵內容。開發驅動程序與樁程序的過程,亦是彈載嵌入式軟件數學模型相關代碼提取過程的一部分。
驅動程序也稱驅動模塊,用以模擬被測模塊的上級模塊,能夠調用被測模塊。在測試過程中,驅動模塊接收測試數據,調用被測模塊并把相關的數據傳送給被測模塊。樁程序也稱樁模塊,用以模擬被測模塊工作過程中所調用的下層模塊,樁程序本身不執行任何功能,僅在被調用時返回靜態值來模擬被調用底層模塊的行為,替代所需調用的底層模塊,使得整個程序能夠順利運行。通過驅動程序和樁程序隔離被測模塊,使被測模塊可以執行測試,如圖3所示。驅動程序作為入口,可以設置不同的參數,執行各種測試用例。

圖3 驅動程序與樁程序
在彈載嵌入式軟件數學模型測試中,需要開發人員提供或者由測試人員找出相應的程序接口,根據接口定義設計驅動程序和樁程序,通過對數學模型代碼進行調用,即得到可執行的數學模型代碼。
2.2 建模工具搭建數學模型
建模工具搭建數學模型的意義在于提供測試用例的預期輸出,用以判定測試結果是否正確。文中使用Matlab進行數學模型搭建。
數學模型文檔作為Matlab模型搭建的依據,必須與待測軟件中數學模型相關代碼的文檔依據一致。該過程是判定測試結果是否正確的關鍵步驟,保證Matlab所搭建模型的正確性是至關重要的。
2.3 測試結果判定
通過提取出的數學模型代碼執行測試用例,可以得到實際的運行結果;通過Matlab搭建的數學模型執行相同的測試用例,可以得到預期的運行結果。對比實際運行結果和預期運行結果,若兩者一致,則該用例通過測試;若兩者不一致,則該用例未通過測試,說明數學模型代碼有缺陷。
為驗證文中設計的彈載嵌入式軟件數學模型測試方法的有效性和通用性,對某導彈彈載計算機軟件數學模型和某導彈慣性導航裝置軟件數學模型進行了測試。
3.1 彈載計算機軟件數學模型測試
彈載計算機是導彈的核心部件之一。為了有效控制導彈飛行軌跡和姿態,彈載計算機需要從導引頭、導航裝置等部件獲得實時數據以及目標和導彈的相對位置,經過數學模型計算,實時輸出舵指令到舵機,進而控制導彈飛行。彈載計算機基本工作原理如圖4。

圖4 彈載計算機基本工作原理
按照文中的測試方法,提取彈載計算機軟件數學模型相關代碼,開發驅動程序以及樁程序;同時;依據數學模型文檔進行Matlab模型搭建。
假設目標為靜止,目標信息、環境信息和導航信息等測試用例輸入數據為:
目標、環境信息:
溫度:20 ℃;
載機速度:45 m/s;
海拔高度:3 000 m;
目標X向初始位置:2 500 m;
目標X向位置:2 500 m;
目標Y向位置:0;
目標Z向位置:0;
導航信息:
導彈X向位置:200t;
導彈Y向位置:-(t-0)(t-50);
導彈Z向位置:-(t-0)(t-50);
導彈滾轉角:5sin(πt/10);
導彈偏航角:5sin(πt/10);
導彈俯仰角:5sin(πt/10);
滾轉角速度:2sin(2πt/5);
偏航角速度:2sin(2πt/5);
俯仰角速度:2sin(2πt/5);
導彈X向速度:-10/625×(t-0)(t-50);
導彈Y向速度:10sin(πt/10);
導彈Z向速度:10sin(πt/10)。
分別運行待測程序和Matlab模型,可以得出舵指令輸出曲線,如圖5所示:左側為被測數學模型實際輸出曲線,右側為Matlab模型輸出曲線。兩組輸出的舵指令之差數量級為10-4,滿足彈載計算機軟件數學模型解算的誤差要求。
測試結果表明,彈載嵌入式軟件數學模型代碼實現與需求一致。
3.2 慣性導航裝置軟件數學模型測試
慣性導航裝置由加速度計、陀螺儀等慣性測量元件和導航計算機組成。由加速度計測量導彈的加速度,陀螺儀測量導彈的角運動,并在給定運動初始條件下,經導航計算機數學模型轉換、處理,計算出導彈的速度、距離和位置(經緯度)、姿態和航向信息,輸出到彈載計算機。

圖5 舵指令對比圖
同樣,運用文中測試方法,對慣性導航裝置軟件數學模型進行測試。由于輸出較多,文中只取導彈速度進行說明,如圖6所示,依次為導彈在X、Y、Z方向的速度分量。

圖6 導彈速度對比圖
紅色曲線為被測慣性導航裝置軟件數學模型實際輸出,藍色曲線為Matlab模型輸出曲線。其中,X和Z方向的速度分量滿足數學模型計算誤差要求,Y方向速度分量不滿足要求,即數學模型代碼實現出現錯誤。經開發人員確認問題并修改代碼后,Y方向速度分量滿足要求。
文中設計的測試方法成功解決了彈載嵌入式軟件數學模型測試中輸入不可控的問題,能夠對數學模型進行較為充分的測試。同時,該方法在彈載計算機軟件和慣性導航裝置軟件數學模型測試中的成功運用,證明該方法具有一定的通用性。在文中的基礎上,如何針對彈載嵌入式軟件數學模型進行有效的測試用例設計,以及Matlab模型搭建正確性驗證等問題值得進一步研究。
[1] 徐仁佐. 軟件可靠性工程 [M]. 北京: 清華大學出版社, 2007: 75-91.
[2] 高江林, 吳曉燕, 李勇君, 等. 半實物仿真系統VV&A研究 [J]. 航天控制, 2011, 29(1): 67-71.
[3] 朱少民. 軟件測試方法和技術 [M]. 北京: 清華大學出版社, 2010: 107-108.
[4] 周偉明. 軟件測試實踐 [M]. 北京: 電子工業出版社, 2008: 158-160.
[5] 林曉欲, 石磊. 嵌入式軟件系統測試模型的研究與實現 [J]. 科學技術與工程, 2009, 9(24): 7515-7520. .
[6] 王娟. 軟硬結合的嵌入式軟件在線測試系統 [D]. 成都: 電子科技大學, 2009.
[7] 毛偉云, 陳明, 丁力, 等. 嵌入式實時操作系統μC/OS-Ⅱ在彈載計算機上的應用 [J]. 彈箭與制導學報, 2007, 27(4): 349-356.
[8] 朱家海. 慣性導航 [M]. 北京: 國防工業出版社, 2008:2-3, 203-204.
Design and Implementation of a Mathematical Model Test Method for Missile-borne Embedded Software
LIU Fei,PU Haifeng,LI Keda,XIE Jingzhu,LI Ping,REN Wenzhen
(No.203 Research Institute of China Ordnance Industries, Xi’an 710065, China)
In order to solve several problems in mathematical model test of missile-borne embedded software,such as uncontrollable input and poor versatility, a new test method is proposed to solve the problems above in this paper. This method is based on the mathematical model’s independence of missile-borne embedded software, Firstly, extract the mathematical model code, and develop drive program and pile program to achieve the data input. Secondly, on the basis of the mathematical model related documents, Matlab is used to build model. Finally, by comparing the output of the extracted mathematical model with the model output of Matlab code, test results are got. In actual test, the results are accurate, which demonstrate that the method is efective and versatile.
missile-borne embedded software; mathematical model; software testing
劉飛(1988-),男,陜西延安人,碩士研究生,研究方向:軟件工程。
TJ760.6
A
2015-12-28