劉 飛,蒲海峰,李柯達(dá),謝菁珠,李 平,任文真
(中國兵器工業(yè)第203研究所,西安 710065)
?
一種彈載嵌入式軟件數(shù)學(xué)模型測(cè)試方法的設(shè)計(jì)與實(shí)現(xiàn)*
劉 飛,蒲海峰,李柯達(dá),謝菁珠,李 平,任文真
(中國兵器工業(yè)第203研究所,西安 710065)
為解決彈載嵌入式軟件中數(shù)學(xué)模型測(cè)試存在輸入不可控、通用性低等問題,文中基于彈載嵌入式軟件中數(shù)學(xué)模型的獨(dú)立性提出了一種新的測(cè)試方法。首先,提取數(shù)學(xué)模型代碼,開發(fā)驅(qū)動(dòng)程序和樁程序來實(shí)現(xiàn)數(shù)據(jù)的輸入;其次,依據(jù)數(shù)學(xué)模型相關(guān)文檔,利用Matlab進(jìn)行模型搭建;最后,將提取出的數(shù)學(xué)模型代碼的輸出與Matlab搭建的模型輸出進(jìn)行對(duì)比,得到測(cè)試結(jié)果。在實(shí)際測(cè)試中,測(cè)試結(jié)果準(zhǔn)確,表明該方法具有有效性和通用性。
彈載嵌入式軟件;數(shù)學(xué)模型;軟件測(cè)試
由于導(dǎo)彈系統(tǒng)日益復(fù)雜,彈載嵌入式軟件的復(fù)雜度也在不斷提高,重要性也越來越高。導(dǎo)彈系統(tǒng)的組成如圖1所示。其中,彈載計(jì)算機(jī)、導(dǎo)航裝置以及導(dǎo)引頭等彈上部件的嵌入式軟件中包含有數(shù)學(xué)模型。作為彈載嵌入式軟件的核心部分,數(shù)學(xué)模型也越來越復(fù)雜,其正確性直接決定了導(dǎo)彈系統(tǒng)的可靠運(yùn)行。對(duì)數(shù)學(xué)模型正確性的測(cè)試是十分必要的。
圖1 美國AGM-114R導(dǎo)彈結(jié)構(gòu)示意圖
目前,對(duì)彈載嵌入式軟件數(shù)學(xué)模型的測(cè)試沒有通用并且有效的方法,主要是通過半實(shí)物仿真進(jìn)行驗(yàn)證。在半實(shí)物仿真中,數(shù)學(xué)模型的輸入來自導(dǎo)彈其他部件的輸出,所以無法對(duì)數(shù)學(xué)模型的輸入進(jìn)行有效的控制。在軟件測(cè)試中,測(cè)試用例的輸入需要嚴(yán)格控制,才能保證測(cè)試質(zhì)量?;诖?半實(shí)物仿真只能對(duì)導(dǎo)彈系統(tǒng)整體進(jìn)行近似驗(yàn)證,無法精確驗(yàn)證數(shù)學(xué)模型正確性。半實(shí)物仿真中無法直接給數(shù)學(xué)模型進(jìn)行數(shù)據(jù)輸入,導(dǎo)致輸入不可控,測(cè)試不充分。
針對(duì)以上問題,并基于彈載嵌入式軟件代碼中數(shù)學(xué)模型相對(duì)獨(dú)立的特點(diǎn),文中提出了一種新的測(cè)試方法。該方法通過對(duì)輸入的有效控制,充分測(cè)試彈載嵌入式軟件中數(shù)學(xué)模型的正確性,并通過兩個(gè)實(shí)例來驗(yàn)證方法的有效性和通用性。
完整的軟件測(cè)試包括如下內(nèi)容:設(shè)計(jì)測(cè)試用例、運(yùn)行軟件執(zhí)行測(cè)試用例、判斷測(cè)試用例是否通過測(cè)試。測(cè)試用例設(shè)計(jì)與具體數(shù)學(xué)模型功能相關(guān),文中不展開論述。
在彈載嵌入式軟件中,數(shù)學(xué)模型相關(guān)代碼作為軟件的一部分,不能單獨(dú)運(yùn)行并執(zhí)行測(cè)試用例。但是由于在導(dǎo)彈系統(tǒng)中,數(shù)學(xué)模型代碼主要負(fù)責(zé)數(shù)據(jù)處理和指令計(jì)算等核心功能,與硬件相關(guān)度低,且往往作為獨(dú)立的模塊存在于彈載嵌入式軟件中?;诖?通過對(duì)數(shù)學(xué)模型代碼進(jìn)行提取、增加驅(qū)動(dòng)函數(shù)和樁函數(shù)等技術(shù)手段,可以使其運(yùn)行并執(zhí)行測(cè)試用例,從而解決了輸入不可控的問題。
執(zhí)行測(cè)試用例后,輸出數(shù)據(jù)需要與預(yù)期輸出進(jìn)行比對(duì),決定測(cè)試用例是否通過測(cè)試。針對(duì)數(shù)學(xué)模型輸入數(shù)據(jù)量大、運(yùn)算復(fù)雜的特點(diǎn),提出使用建模工具搭建數(shù)學(xué)模型獲取預(yù)期輸出的方案——將測(cè)試用例輸入數(shù)據(jù)代入模型計(jì)算,即可獲得預(yù)期輸出。對(duì)比預(yù)期輸出與實(shí)際輸出,二者一致即說明通過驗(yàn)證。
測(cè)試方法設(shè)計(jì)如圖2所示。整個(gè)測(cè)試流程包含3個(gè)部分:1)提取數(shù)學(xué)模型代碼;2)建模工具搭建數(shù)學(xué)模型;3)測(cè)試結(jié)果判定。
圖2 測(cè)試流程圖
2.1 提取數(shù)學(xué)模型代碼
由于數(shù)學(xué)模型相關(guān)代碼屬于彈載嵌入式軟件的一部分,不能獨(dú)立運(yùn)行,所以需要隔離數(shù)學(xué)模型代碼單元,并根據(jù)數(shù)學(xué)模型相關(guān)代碼的接口開發(fā)相應(yīng)的驅(qū)動(dòng)程序和樁程序。該過程是整個(gè)測(cè)試的首要步驟和關(guān)鍵內(nèi)容。開發(fā)驅(qū)動(dòng)程序與樁程序的過程,亦是彈載嵌入式軟件數(shù)學(xué)模型相關(guān)代碼提取過程的一部分。
驅(qū)動(dòng)程序也稱驅(qū)動(dòng)模塊,用以模擬被測(cè)模塊的上級(jí)模塊,能夠調(diào)用被測(cè)模塊。在測(cè)試過程中,驅(qū)動(dòng)模塊接收測(cè)試數(shù)據(jù),調(diào)用被測(cè)模塊并把相關(guān)的數(shù)據(jù)傳送給被測(cè)模塊。樁程序也稱樁模塊,用以模擬被測(cè)模塊工作過程中所調(diào)用的下層模塊,樁程序本身不執(zhí)行任何功能,僅在被調(diào)用時(shí)返回靜態(tài)值來模擬被調(diào)用底層模塊的行為,替代所需調(diào)用的底層模塊,使得整個(gè)程序能夠順利運(yùn)行。通過驅(qū)動(dòng)程序和樁程序隔離被測(cè)模塊,使被測(cè)模塊可以執(zhí)行測(cè)試,如圖3所示。驅(qū)動(dòng)程序作為入口,可以設(shè)置不同的參數(shù),執(zhí)行各種測(cè)試用例。
圖3 驅(qū)動(dòng)程序與樁程序
在彈載嵌入式軟件數(shù)學(xué)模型測(cè)試中,需要開發(fā)人員提供或者由測(cè)試人員找出相應(yīng)的程序接口,根據(jù)接口定義設(shè)計(jì)驅(qū)動(dòng)程序和樁程序,通過對(duì)數(shù)學(xué)模型代碼進(jìn)行調(diào)用,即得到可執(zhí)行的數(shù)學(xué)模型代碼。
2.2 建模工具搭建數(shù)學(xué)模型
建模工具搭建數(shù)學(xué)模型的意義在于提供測(cè)試用例的預(yù)期輸出,用以判定測(cè)試結(jié)果是否正確。文中使用Matlab進(jìn)行數(shù)學(xué)模型搭建。
數(shù)學(xué)模型文檔作為Matlab模型搭建的依據(jù),必須與待測(cè)軟件中數(shù)學(xué)模型相關(guān)代碼的文檔依據(jù)一致。該過程是判定測(cè)試結(jié)果是否正確的關(guān)鍵步驟,保證Matlab所搭建模型的正確性是至關(guān)重要的。
2.3 測(cè)試結(jié)果判定
通過提取出的數(shù)學(xué)模型代碼執(zhí)行測(cè)試用例,可以得到實(shí)際的運(yùn)行結(jié)果;通過Matlab搭建的數(shù)學(xué)模型執(zhí)行相同的測(cè)試用例,可以得到預(yù)期的運(yùn)行結(jié)果。對(duì)比實(shí)際運(yùn)行結(jié)果和預(yù)期運(yùn)行結(jié)果,若兩者一致,則該用例通過測(cè)試;若兩者不一致,則該用例未通過測(cè)試,說明數(shù)學(xué)模型代碼有缺陷。
為驗(yàn)證文中設(shè)計(jì)的彈載嵌入式軟件數(shù)學(xué)模型測(cè)試方法的有效性和通用性,對(duì)某導(dǎo)彈彈載計(jì)算機(jī)軟件數(shù)學(xué)模型和某導(dǎo)彈慣性導(dǎo)航裝置軟件數(shù)學(xué)模型進(jìn)行了測(cè)試。
3.1 彈載計(jì)算機(jī)軟件數(shù)學(xué)模型測(cè)試
彈載計(jì)算機(jī)是導(dǎo)彈的核心部件之一。為了有效控制導(dǎo)彈飛行軌跡和姿態(tài),彈載計(jì)算機(jī)需要從導(dǎo)引頭、導(dǎo)航裝置等部件獲得實(shí)時(shí)數(shù)據(jù)以及目標(biāo)和導(dǎo)彈的相對(duì)位置,經(jīng)過數(shù)學(xué)模型計(jì)算,實(shí)時(shí)輸出舵指令到舵機(jī),進(jìn)而控制導(dǎo)彈飛行。彈載計(jì)算機(jī)基本工作原理如圖4。
圖4 彈載計(jì)算機(jī)基本工作原理
按照文中的測(cè)試方法,提取彈載計(jì)算機(jī)軟件數(shù)學(xué)模型相關(guān)代碼,開發(fā)驅(qū)動(dòng)程序以及樁程序;同時(shí);依據(jù)數(shù)學(xué)模型文檔進(jìn)行Matlab模型搭建。
假設(shè)目標(biāo)為靜止,目標(biāo)信息、環(huán)境信息和導(dǎo)航信息等測(cè)試用例輸入數(shù)據(jù)為:
目標(biāo)、環(huán)境信息:
溫度:20 ℃;
載機(jī)速度:45 m/s;
海拔高度:3 000 m;
目標(biāo)X向初始位置:2 500 m;
目標(biāo)X向位置:2 500 m;
目標(biāo)Y向位置:0;
目標(biāo)Z向位置:0;
導(dǎo)航信息:
導(dǎo)彈X向位置:200t;
導(dǎo)彈Y向位置:-(t-0)(t-50);
導(dǎo)彈Z向位置:-(t-0)(t-50);
導(dǎo)彈滾轉(zhuǎn)角:5sin(πt/10);
導(dǎo)彈偏航角:5sin(πt/10);
導(dǎo)彈俯仰角:5sin(πt/10);
滾轉(zhuǎn)角速度:2sin(2πt/5);
偏航角速度:2sin(2πt/5);
俯仰角速度:2sin(2πt/5);
導(dǎo)彈X向速度:-10/625×(t-0)(t-50);
導(dǎo)彈Y向速度:10sin(πt/10);
導(dǎo)彈Z向速度:10sin(πt/10)。
分別運(yùn)行待測(cè)程序和Matlab模型,可以得出舵指令輸出曲線,如圖5所示:左側(cè)為被測(cè)數(shù)學(xué)模型實(shí)際輸出曲線,右側(cè)為Matlab模型輸出曲線。兩組輸出的舵指令之差數(shù)量級(jí)為10-4,滿足彈載計(jì)算機(jī)軟件數(shù)學(xué)模型解算的誤差要求。
測(cè)試結(jié)果表明,彈載嵌入式軟件數(shù)學(xué)模型代碼實(shí)現(xiàn)與需求一致。
3.2 慣性導(dǎo)航裝置軟件數(shù)學(xué)模型測(cè)試
慣性導(dǎo)航裝置由加速度計(jì)、陀螺儀等慣性測(cè)量元件和導(dǎo)航計(jì)算機(jī)組成。由加速度計(jì)測(cè)量導(dǎo)彈的加速度,陀螺儀測(cè)量導(dǎo)彈的角運(yùn)動(dòng),并在給定運(yùn)動(dòng)初始條件下,經(jīng)導(dǎo)航計(jì)算機(jī)數(shù)學(xué)模型轉(zhuǎn)換、處理,計(jì)算出導(dǎo)彈的速度、距離和位置(經(jīng)緯度)、姿態(tài)和航向信息,輸出到彈載計(jì)算機(jī)。
圖5 舵指令對(duì)比圖
同樣,運(yùn)用文中測(cè)試方法,對(duì)慣性導(dǎo)航裝置軟件數(shù)學(xué)模型進(jìn)行測(cè)試。由于輸出較多,文中只取導(dǎo)彈速度進(jìn)行說明,如圖6所示,依次為導(dǎo)彈在X、Y、Z方向的速度分量。
圖6 導(dǎo)彈速度對(duì)比圖
紅色曲線為被測(cè)慣性導(dǎo)航裝置軟件數(shù)學(xué)模型實(shí)際輸出,藍(lán)色曲線為Matlab模型輸出曲線。其中,X和Z方向的速度分量滿足數(shù)學(xué)模型計(jì)算誤差要求,Y方向速度分量不滿足要求,即數(shù)學(xué)模型代碼實(shí)現(xiàn)出現(xiàn)錯(cuò)誤。經(jīng)開發(fā)人員確認(rèn)問題并修改代碼后,Y方向速度分量滿足要求。
文中設(shè)計(jì)的測(cè)試方法成功解決了彈載嵌入式軟件數(shù)學(xué)模型測(cè)試中輸入不可控的問題,能夠?qū)?shù)學(xué)模型進(jìn)行較為充分的測(cè)試。同時(shí),該方法在彈載計(jì)算機(jī)軟件和慣性導(dǎo)航裝置軟件數(shù)學(xué)模型測(cè)試中的成功運(yùn)用,證明該方法具有一定的通用性。在文中的基礎(chǔ)上,如何針對(duì)彈載嵌入式軟件數(shù)學(xué)模型進(jìn)行有效的測(cè)試用例設(shè)計(jì),以及Matlab模型搭建正確性驗(yàn)證等問題值得進(jìn)一步研究。
[1] 徐仁佐. 軟件可靠性工程 [M]. 北京: 清華大學(xué)出版社, 2007: 75-91.
[2] 高江林, 吳曉燕, 李勇君, 等. 半實(shí)物仿真系統(tǒng)VV&A研究 [J]. 航天控制, 2011, 29(1): 67-71.
[3] 朱少民. 軟件測(cè)試方法和技術(shù) [M]. 北京: 清華大學(xué)出版社, 2010: 107-108.
[4] 周偉明. 軟件測(cè)試實(shí)踐 [M]. 北京: 電子工業(yè)出版社, 2008: 158-160.
[5] 林曉欲, 石磊. 嵌入式軟件系統(tǒng)測(cè)試模型的研究與實(shí)現(xiàn) [J]. 科學(xué)技術(shù)與工程, 2009, 9(24): 7515-7520. .
[6] 王娟. 軟硬結(jié)合的嵌入式軟件在線測(cè)試系統(tǒng) [D]. 成都: 電子科技大學(xué), 2009.
[7] 毛偉云, 陳明, 丁力, 等. 嵌入式實(shí)時(shí)操作系統(tǒng)μC/OS-Ⅱ在彈載計(jì)算機(jī)上的應(yīng)用 [J]. 彈箭與制導(dǎo)學(xué)報(bào), 2007, 27(4): 349-356.
[8] 朱家海. 慣性導(dǎo)航 [M]. 北京: 國防工業(yè)出版社, 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