劉玉軍,趙創(chuàng)新,王振華,劉國強(qiáng),彭 怡
(航空工業(yè)成都飛機(jī)工業(yè)(集團(tuán))有限責(zé)任公司,成都 610000)
近年來,軟件成為航空裝備的大腦和靈魂,機(jī)載軟件信息化程度越來越高,需要完成大量數(shù)據(jù)采集、處理和信息融合,其復(fù)雜程度高,具有較強(qiáng)的實(shí)時(shí)性[1-2],其質(zhì)量不容有失,對軟件測試的要求也在不斷提高[3-5]。機(jī)載軟件的規(guī)模、復(fù)雜程度呈增長趨勢。裝備訓(xùn)練貼近實(shí)戰(zhàn),機(jī)載軟件質(zhì)量缺陷不斷暴露,軟件的功能和性能需要持續(xù)優(yōu)化,軟件的變更和維護(hù)升級極為頻繁[6]。
機(jī)載飛行控制管理系統(tǒng)為嵌入式系統(tǒng),由飛控計(jì)算機(jī)和飛行控制管理軟件(簡稱飛行控制軟件)組成,飛行控制軟件運(yùn)行在飛控計(jì)算機(jī)中,實(shí)現(xiàn)對無人機(jī)的飛行控制、模式控制、應(yīng)急處置、余度管理等功能。在傳統(tǒng)的研制模式中,飛行控制管理系統(tǒng)的研制首先要進(jìn)行系統(tǒng)設(shè)計(jì),系統(tǒng)設(shè)計(jì)完成后,硬件團(tuán)隊(duì)開始進(jìn)行硬件設(shè)計(jì)和調(diào)試樣機(jī)的生產(chǎn)。軟件團(tuán)隊(duì)要在硬件團(tuán)隊(duì)提交硬件設(shè)備后才能進(jìn)行開發(fā)和測試。這種開發(fā)方式存在以下問題:1)研制周期較長,軟件設(shè)計(jì)要等待硬件的選購、布線、制版、加工、調(diào)試,需要大量的時(shí)間,軟件的開發(fā)人員和測試人員無法及時(shí)參與其中;2)由于進(jìn)度、環(huán)境等原因,多配置項(xiàng)的系統(tǒng)集成和聯(lián)試只能在主機(jī)聯(lián)試時(shí)開展,同時(shí)不具備增量的、自動(dòng)測試能力,導(dǎo)致軟件無法響應(yīng)需求的快速變更;3)機(jī)載硬件成本較高,在全實(shí)物系統(tǒng)的測試環(huán)境和半實(shí)物系統(tǒng)的測試環(huán)境中很多系統(tǒng)故障無法構(gòu)造,如測試飛控計(jì)算機(jī)存儲(chǔ)器故障下,飛行控制軟件對數(shù)據(jù)的處理等。由測試環(huán)境導(dǎo)致的測試用例無法執(zhí)行的數(shù)量越多,軟件測試驗(yàn)證就越不充分,后期的無人機(jī)飛行就存在質(zhì)量風(fēng)險(xiǎn);4)軟件的測試自動(dòng)程度低,測試環(huán)境構(gòu)建周期長、成本高[7]。
在測試用例的設(shè)計(jì)和執(zhí)行方面,飛行控制管理軟件的測試用例數(shù)量多、執(zhí)行周期長,如何既能控制測試數(shù)據(jù)的數(shù)量,又可以滿足語句覆蓋率、分支覆蓋率、MC/DC覆蓋率等覆蓋率的要求,一直是困擾測試人員的難題。
針對以上問題,本文介紹了一種機(jī)載飛行控制軟件自動(dòng)測試方法,測試數(shù)據(jù)的生成采用自研AETG-SA算法,并加入了反饋機(jī)制,提升了測試覆蓋率。在全數(shù)字仿真平臺(tái)的基礎(chǔ)上搭建測試環(huán)境,測試用例自動(dòng)執(zhí)行并記錄測試結(jié)果,使飛行控制軟件的快速原型驗(yàn)證和測試不再過度依賴硬件,大大縮減了系統(tǒng)研制周期,同時(shí)提升了系統(tǒng)的可靠性與安全性。
全數(shù)字仿真環(huán)境采用分布式網(wǎng)絡(luò)架構(gòu)和模塊化設(shè)計(jì),可以在通用平臺(tái)(如Windows)模擬真實(shí)的嵌入式硬件,包括芯片和外圍器件[8]。嵌入式軟件可運(yùn)行在虛擬目標(biāo)機(jī)上,實(shí)現(xiàn)軟件設(shè)計(jì)的各項(xiàng)功能。全數(shù)字仿真環(huán)境可以對所有CPU寄存器、片上器件、內(nèi)存的狀態(tài)進(jìn)行顯示和修改,支持ARM、DSP、PowerPC、龍芯、飛騰等[9],具備單步、斷點(diǎn)、變量監(jiān)視等常用調(diào)試功能,系統(tǒng)的狀態(tài)可以保存和恢復(fù),提供外圍設(shè)備控制器仿真庫,具備可擴(kuò)展能力[10],支持各種仿真模型的擴(kuò)展開發(fā)和接入,提供多種API接口。基于全數(shù)字仿真環(huán)境可以實(shí)現(xiàn)嵌入式系統(tǒng)的快速原型研制,系統(tǒng)故障注入,處理器被執(zhí)行代碼單元級測試等多項(xiàng)仿真、軟件驗(yàn)證和測試功能。全數(shù)字仿真環(huán)境架構(gòu)如圖1所示。
圖1 全數(shù)字仿真環(huán)境架構(gòu)圖
1)基于AADL的系統(tǒng)架構(gòu)建模技術(shù):AADL(架構(gòu)分析設(shè)計(jì)語言)描述嵌入式實(shí)時(shí)系統(tǒng)的軟件體系結(jié)構(gòu)和執(zhí)行平臺(tái)體系結(jié)構(gòu)的語言。AADL為嵌入式實(shí)時(shí)系統(tǒng)(如航空電子等系統(tǒng))的體系結(jié)構(gòu)建模提供標(biāo)準(zhǔn)而精確的方法,可以對系統(tǒng)屬性進(jìn)行分析,并支持實(shí)現(xiàn)系統(tǒng)集成[11-12]。
2)基于DML的虛擬硬件建模技術(shù):硬件虛擬化技術(shù)通過硬件模型和虛擬機(jī)兩部分實(shí)現(xiàn)嵌入式軟件的虛擬運(yùn)行環(huán)境。DML(設(shè)備建模語言)提供一整套虛擬硬件模型構(gòu)建接口和方法,實(shí)現(xiàn)嵌入式軟件運(yùn)行所依賴的硬件環(huán)境虛擬化。
3)基于DDS的網(wǎng)絡(luò)通信技術(shù):DDS(數(shù)據(jù)訂閱/分發(fā)服務(wù))是按照數(shù)據(jù)訂閱分發(fā)服務(wù)標(biāo)準(zhǔn)實(shí)現(xiàn)數(shù)據(jù)訂閱分發(fā)服務(wù)網(wǎng)絡(luò)中間件DDS構(gòu)建以數(shù)據(jù)為中心的數(shù)據(jù)訂閱/分發(fā)網(wǎng)絡(luò),廣泛應(yīng)用于未來機(jī)載航電通信網(wǎng)絡(luò)[13-14],實(shí)現(xiàn)數(shù)據(jù)的穩(wěn)定、高效、透明傳輸。
4)動(dòng)態(tài)二進(jìn)制翻譯技術(shù)(Dynamic Binary Translation):二進(jìn)制翻譯技術(shù)是一種即時(shí)編譯技術(shù),指的是從一種指令集翻譯到另一指令集的技術(shù)。動(dòng)態(tài)二進(jìn)制翻譯技術(shù)采用邊運(yùn)行邊翻譯的方式,將源機(jī)器碼翻譯成目標(biāo)機(jī)器代碼[15-16]它將源體系結(jié)構(gòu)的二進(jìn)制機(jī)器指令動(dòng)態(tài)編譯為可在目標(biāo)體系結(jié)構(gòu)上運(yùn)行的代碼[17]。全數(shù)字仿真環(huán)境中的底層翻譯控制模塊根據(jù)源機(jī)器碼解碼、翻譯、優(yōu)化編碼,并將輸出的機(jī)器代碼送到執(zhí)行模塊,執(zhí)行源機(jī)器代碼,仿真目標(biāo)系統(tǒng)及外圍器件。
全數(shù)字仿真環(huán)境可以通過界面圖形拖拽方式快速組建。利用全數(shù)字仿真環(huán)境可以有效地提高嵌入式軟件的自動(dòng)程度[18],具體構(gòu)建步驟如下:
1)全數(shù)字仿真平臺(tái)可以直接虛擬出目標(biāo)系統(tǒng)CPU,按系統(tǒng)設(shè)計(jì),首先選擇CPU型號并進(jìn)行配置,設(shè)置ROM和RAM的大小及其他參數(shù)。
2)搭建外設(shè)接口,將與飛行控制系統(tǒng)的外圍接口如CAN、RS422等進(jìn)行仿真,通過協(xié)同仿真時(shí)間同步保證系統(tǒng)運(yùn)行時(shí)的時(shí)序一致。
3)搭建與飛行控制系統(tǒng)交聯(lián)的設(shè)備或仿真軟件,建立資源庫,可快速建立復(fù)用場景。
機(jī)載軟件對安全性、可靠性、穩(wěn)定性的要求比普通軟件嚴(yán)格得多。飛行控制軟件的安全運(yùn)行受很多因素的影響,軟件測試人員對各個(gè)因素組合全部進(jìn)行測試才能充分的發(fā)現(xiàn)軟件問題,但這顯然是不切實(shí)際的。因?yàn)闇y試用例的組合數(shù)量是非常巨大的,有些時(shí)候無法窮舉并進(jìn)行測試。根據(jù)航空無線電技術(shù)委員會(huì)發(fā)布的DO-178C標(biāo)準(zhǔn),飛控軟件的測試要達(dá)到MC/DC覆蓋級別。有效的測試用例組合既可以最大限度地發(fā)現(xiàn)軟件缺陷,又可以滿足MC/DC覆蓋率要求。
為提升測試效率,需要設(shè)計(jì)一種算法可以自動(dòng)生成有效的測試數(shù)據(jù),對被測軟件進(jìn)行測試。
解決測試用例自動(dòng)生成的算法包含貪婪算法、隨機(jī)方法、啟發(fā)式搜索算法等[19]。在軟件測試領(lǐng)域,鄭燕妮等提出蟻群模擬退火算法約簡測試用例[20],仲曉敏等提出基于退火遺傳算法的多路徑測試用例生成[21],傅博提出基于模擬退火遺傳算法的軟件測試數(shù)據(jù)自動(dòng)生成[22]。以上算法都是軟件測試用例的生成或約簡,對飛行控制軟件的適用性不強(qiáng),且算法并未將生成的測試用例的執(zhí)行結(jié)果進(jìn)行反饋,從而動(dòng)態(tài)調(diào)整算法參數(shù),在軟件測試過程中不能形成閉環(huán)。
以下對兩種算法進(jìn)行研究,并提出一種測試數(shù)據(jù)自動(dòng)生成算法AETG-SA(Automated Expert Test Generator-Simulated Annealing)算法,既可以滿足MC/DC覆蓋率要求,又可以在測試過程中動(dòng)態(tài)調(diào)整算法參數(shù),從而獲得最優(yōu)測試集合。
貪婪算法是測試用例生成應(yīng)用較為廣泛的算法,其核心思想是使用局部最優(yōu)解近似全局最優(yōu)[23],算法效率較高,生成速度快,但容易產(chǎn)生冗余,參數(shù)維度較高時(shí)不易產(chǎn)生理想的測試用例集。
一種貪婪算法AETG生成測試用例集合的基本框架如下:
輸入:待測軟件FMS參數(shù)及范圍
輸出:測試數(shù)據(jù)集合Ts
a) S=Generate(FMS) //根據(jù)參數(shù)范圍生成目標(biāo)集合;
b) 隨機(jī)選擇參數(shù)τ的一個(gè)取值P,使得P在S中出現(xiàn)的次數(shù)最多;
c) 生成一條測試數(shù)據(jù)τ[k]=Pk;
d)Pi(i≠k)選擇Pi的某個(gè)值來擴(kuò)展測試數(shù)據(jù)τ,最大限度地覆蓋S中的組合;
e) 測試數(shù)據(jù)τ加入Ts;
f) 以相同的方法擴(kuò)展Pi+1直至所有的參數(shù)取值完畢;
g) 返回Ts。
貪婪算法只能遍歷有限范圍內(nèi)的測試用例,收斂速度慢,選擇的測試用例也并不一定是最優(yōu)的。
模擬退火算法(SA,simulated annealing)是基于Monte-Carlo迭代求解策略的一種尋優(yōu)算法,由高溫到低溫,遍歷搜索空間,搜索過程中使用到Metropolis準(zhǔn)則[24]。若系統(tǒng)在溫度T時(shí)達(dá)到熱平衡,系統(tǒng)在指定狀態(tài)的概率PT(S)為:
其中:ES為s狀態(tài)下的能量,K為Boltzmann常系數(shù),S是所有可能狀態(tài)的集合,Metropolis準(zhǔn)則給出新狀態(tài)SN的接收準(zhǔn)則為若E(SN)≤E(So)則新狀態(tài)自動(dòng)接受,若E(SN)>E(So),新狀態(tài)的接收概率取決于以下概率函數(shù):
飛行控制軟件參數(shù)多為實(shí)際意義的變量,主要以浮點(diǎn)數(shù)、整數(shù)為主,在邏輯判斷時(shí)也會(huì)用到布爾類型[25]。根據(jù)飛行控制軟件的數(shù)據(jù)特點(diǎn),結(jié)合測試經(jīng)驗(yàn),若某條測試數(shù)據(jù)發(fā)現(xiàn)軟件問題,相鄰的測試數(shù)據(jù)也容易發(fā)生軟件問題。此時(shí),降低降溫速率的值,生成更多相鄰數(shù)據(jù),盡可能找到引發(fā)軟件問題的數(shù)據(jù)邊界。在貪婪算法上引入模擬退火算法并進(jìn)行進(jìn)一步改進(jìn),設(shè)計(jì)一種測試用例自動(dòng)生成的算法AETG-SA。AETG-SA將貪婪算法和模擬退火算法進(jìn)行融合,融合的過程為:首先采用貪婪算法生成全部目標(biāo)集合S和測試數(shù)據(jù)τo,在生成下一組數(shù)據(jù)τn時(shí)采用模擬退火算法,根據(jù)降溫速率和當(dāng)前數(shù)據(jù)獲取下一組測試數(shù)據(jù),再依據(jù)Metropolis準(zhǔn)則判斷是否接受新解τn,若接受則將τn納入測試數(shù)據(jù)集合Ts,生成初步的測試數(shù)據(jù)集合Ts。測試進(jìn)行的過程中根據(jù)測試數(shù)據(jù)是否發(fā)現(xiàn)軟件缺陷動(dòng)態(tài)調(diào)整模擬退火算法中的降溫速率rate,形成最終的測試數(shù)據(jù)集合。
算法基本流程框架如下:
設(shè)軟件模塊累加的MC/DC覆蓋率為能量E,集合S為初始溫度,集合Ts為達(dá)到熱平衡的溫度,降溫速率rate。
輸入:待測軟件參數(shù)及范圍、降溫速率rate、判斷退出條件次數(shù)m,覆蓋率差值
輸出:測試數(shù)據(jù)集合Ts
a)InitTs,rate,m, //初始化;
b)S=Generate(FMS) //根據(jù)參數(shù)范圍生成目標(biāo)集合;
c)τo=random(S)//在S中隨機(jī)生成一組測試數(shù)據(jù);
d)τn=Get(τo,rate)//根據(jù)降溫速率和當(dāng)前數(shù)據(jù)獲取下一組測試數(shù)據(jù);
e) ifE(τn)>E(τo) ore-[E(τn)-E(τo)]/KT>random[0,1);//判斷是否接收新解;
f)τn∈Ts//τn納入測試集合Ts;
g) ErrorFlag=Test(τn) //執(zhí)行測試數(shù)據(jù);
h) if ErrorFlag=1 //測試發(fā)現(xiàn)軟件缺陷;
i)rate=Lower(rate)//降低降溫速率并更新;
j) repeata~j;//重復(fù)步驟a~j;
k) while(E(τn)-E(τo)<σorE(τn)==1)//連續(xù)m次滿足終止條件;
l) returnTs。
飛行器控制管理軟件是飛行器的核心和大腦,隨著無人機(jī)技術(shù)的快速發(fā)展,飛行器控制管理軟件的設(shè)計(jì)越來越復(fù)雜,模塊之間交聯(lián)眾多。傳統(tǒng)的飛行控制軟件進(jìn)行配置項(xiàng)測試需要搭建全套的軟硬件測試環(huán)境。即使與飛控系統(tǒng)交聯(lián)的設(shè)備采用模擬軟件代替,飛行控制軟件的測試用例依賴于系統(tǒng)狀態(tài)[26],需要等待軟件運(yùn)行到特定情況下,觀察輸出是否正確。測試用例需要經(jīng)過精心的組合,才可能減少測試的時(shí)間和模擬飛行的次數(shù),往往一輪完整的配置項(xiàng)測試需要數(shù)個(gè)星期的時(shí)間,費(fèi)時(shí)費(fèi)力。
飛行控制軟件自動(dòng)測試的設(shè)計(jì)與實(shí)現(xiàn)過程如圖2所示,分為以下幾個(gè)步驟:
1)梳理功能需求及軟件輸入。將飛行控制軟件的功能分為綜檢指令處理、遙控指令處理、應(yīng)急處置管理、航線管理、控制模式管理、飛行控制管理共6大模塊。將模塊進(jìn)一步分解為功能點(diǎn),明確每一個(gè)功能點(diǎn)的輸入、輸出及前提條件,給每個(gè)功能點(diǎn)編號。
2)自動(dòng)生成測試用例。根據(jù)每個(gè)功能點(diǎn)的輸入、輸出及參數(shù)范圍,使用1.4節(jié)設(shè)計(jì)的AETG-SA算法自動(dòng)生成測試用例,覆蓋正常場景和異常場景,測試用例的輸入符合飛行控制軟件與交聯(lián)軟件的接口協(xié)議。
3)編寫自動(dòng)測試驅(qū)動(dòng)代碼。首先搭建自動(dòng)測試框架。采用代碼隔離的思想,自動(dòng)測試代碼和飛行控制軟件雖然都運(yùn)行在全數(shù)字仿真環(huán)境中,但測試代碼與飛行控制軟件代碼工程獨(dú)立,減少了代碼插樁導(dǎo)致后期裝機(jī)時(shí)的代碼冗余和因插樁引起的軟件問題。將測試用例數(shù)據(jù)導(dǎo)入到自動(dòng)測試框架中,執(zhí)行測試用例,獲取軟件的輸出結(jié)果并斷言。
4)導(dǎo)入全數(shù)字仿真環(huán)境?;谌珨?shù)字仿真環(huán)境搭建飛行控制軟件的配置項(xiàng)測試環(huán)境,配置芯片和外圍器件的參數(shù),將編譯后的代碼導(dǎo)入到全數(shù)字仿真環(huán)境中運(yùn)行。
5)記錄并存儲(chǔ)測試用例執(zhí)行結(jié)果。將全數(shù)字仿真環(huán)境中的測試用例執(zhí)行結(jié)果進(jìn)行統(tǒng)計(jì)分析,生成測試報(bào)告并導(dǎo)出至Excel文件中。
首輪測試結(jié)束后,回歸測試可以重用首輪測試設(shè)計(jì)的測試用例并自動(dòng)執(zhí)行,測試環(huán)境可以復(fù)用首輪搭建的全數(shù)字仿真環(huán)境,僅將修改后的代碼加載到測試環(huán)境中,大大提升了測試效率。
某型無人機(jī)飛行控制軟件運(yùn)行在飛控計(jì)算機(jī)中,實(shí)現(xiàn)無人機(jī)全過程的飛行控制與飛行管理功能,通過RS422、CAN等多種接口與機(jī)載系統(tǒng)進(jìn)行數(shù)據(jù)交換,實(shí)現(xiàn)飛行管理、飛行制導(dǎo)、飛行控制、應(yīng)急處置、數(shù)據(jù)處理、余度管理等多種功能。飛行控制軟件軟件是無人機(jī)的控制核心,對無人機(jī)的飛行安全至關(guān)重要。由于軟件的復(fù)雜程度較高,軟件測試過程耗時(shí)較長,為提升測試效率,采用基于全數(shù)字仿真環(huán)境的自動(dòng)測試方法。飛行器管理系統(tǒng)與交聯(lián)設(shè)備的連接如圖3所示。
對飛行控制軟件進(jìn)行功能分解,可以分解為多個(gè)功能點(diǎn),測試用例即對多個(gè)功能點(diǎn)是否符合設(shè)計(jì)要求進(jìn)行驗(yàn)證。以測試起飛滑跑時(shí)角速率內(nèi)環(huán)的俯仰角保持控制功能為例,說明自動(dòng)測試流程。角速率內(nèi)環(huán)的俯仰角保持控制是無人機(jī)處于起飛滑跑、起飛拉起、著陸滑跑階段對俯仰角進(jìn)行控制的重要功能,測試過程中首先飛控軟件判斷無人機(jī)是否進(jìn)入了起飛滑跑階段,進(jìn)入后生成俯仰角給定、俯仰角、俯仰角速率3個(gè)參數(shù)的測試數(shù)據(jù),將測試數(shù)據(jù)引入,執(zhí)行自動(dòng)測試用例,計(jì)算升降舵偏度后判斷測試是否通過,最后記錄并存儲(chǔ)測試結(jié)果。測試流程如圖4所示。
圖4 角速率內(nèi)環(huán)俯仰角保持控制自動(dòng)測試流程
自動(dòng)測試偽代碼如下:
Begin
SetModePitch_Hold_MODE
if FlightMode = Pitch_Hold_MODE
then
Generate Theta_Given,Theta,Theta_q
else
Report Set Pitch_Hold_MODEError
exit PitchHoldTest
Import Theta_Given,Theta,ThetaSpe
if abs() <0.1(誤差范圍)
Display(“PitchHoldTest Success”)
Store PitchHoldTest Result
else
Display(“PitchHoldTest Fail”)
Store PitchHoldTest Result
End
將某型無人機(jī)飛行控制軟件的功能模塊進(jìn)行梳理,在全數(shù)字仿真環(huán)境中自動(dòng)執(zhí)行測試用例,并將測試結(jié)果存儲(chǔ)到本地。該軟件測試數(shù)據(jù)對比見表1。
表1 某型飛行控制軟件測試數(shù)據(jù)對比
本次測試共搭建3種測試環(huán)境:全實(shí)物系統(tǒng)測試環(huán)境、半實(shí)物系統(tǒng)測試環(huán)境,全數(shù)字仿真測試環(huán)境。其中全實(shí)物系統(tǒng)測試環(huán)境和半實(shí)物系統(tǒng)測試環(huán)境采用的是傳統(tǒng)的人工設(shè)計(jì)并執(zhí)行測試用例,全數(shù)字仿真測試環(huán)境中采用的是1.4節(jié)中的AETG-SA算法自動(dòng)生成測試用例并執(zhí)行。全實(shí)物系統(tǒng)測試環(huán)境中所有的設(shè)備均為實(shí)裝設(shè)備,包括飛控計(jì)算機(jī)、大氣壓力傳感器、起落架、動(dòng)力系統(tǒng)、舵機(jī)控制器、配電裝置等,搭建全套的測試環(huán)境非常費(fèi)時(shí)費(fèi)力,需要的資源的投入較大。半實(shí)物系統(tǒng)測試環(huán)境中,飛控計(jì)算機(jī)為真實(shí)設(shè)備,其余與飛控計(jì)算機(jī)交聯(lián)的設(shè)備均使用仿真軟件模擬,測試環(huán)境如圖5所示。
圖5 飛行控制系統(tǒng)全數(shù)字仿真環(huán)境圖
相較于全實(shí)物系統(tǒng)測試環(huán)境在資源占用和時(shí)間花費(fèi)上都有節(jié)約。而全數(shù)字仿真測試環(huán)境的飛控計(jì)算機(jī)和交聯(lián)的測試設(shè)備均在仿真平臺(tái)上搭建,平臺(tái)構(gòu)建的底層技術(shù)采用了1.2節(jié)中基于AADL的系統(tǒng)架構(gòu)建模技術(shù)、基于DML的虛擬硬件建模技術(shù)、基于DDS的網(wǎng)絡(luò)通信技術(shù)、動(dòng)態(tài)二進(jìn)制翻譯技術(shù)。編譯完成的飛行控制軟件的二進(jìn)制代碼才可以運(yùn)行到全數(shù)字仿真平臺(tái)上,模擬真實(shí)的目標(biāo)機(jī)實(shí)現(xiàn)相應(yīng)的功能,接口類型和數(shù)據(jù)邏輯與真實(shí)環(huán)境一致,可以滿足軟件功能和接口的測試需求。
此次飛行控制軟件共設(shè)計(jì)動(dòng)態(tài)測試用例545個(gè),設(shè)計(jì)相同數(shù)量的測試用例545個(gè),在全實(shí)物系統(tǒng)測試環(huán)境中,受系統(tǒng)硬件和環(huán)境的影響,如故障構(gòu)造、傳感器數(shù)據(jù)未在飛行狀態(tài)下只能產(chǎn)生部分?jǐn)?shù)據(jù)等,只能執(zhí)行516個(gè)測試用例,29個(gè)測試用例未執(zhí)行。如測試用例中設(shè)計(jì)的舵機(jī)控制器故障時(shí),測試無人機(jī)飛控軟件的故障處理,在全實(shí)物系統(tǒng)測試環(huán)境中,無法在不破壞硬件的情況下構(gòu)造出此類故障,因此無法執(zhí)行此測試用例。
半實(shí)物系統(tǒng)測試環(huán)境由于飛控計(jì)算機(jī)交聯(lián)的設(shè)備采用仿真軟件代替,增加了測試充分性,可執(zhí)行530個(gè)用例,共15個(gè)用例未執(zhí)行。半實(shí)物系統(tǒng)中雖然與飛控計(jì)算機(jī)交聯(lián)的設(shè)備采用仿真設(shè)備代替,但飛控計(jì)算機(jī)本身的故障測試用例無法執(zhí)行,如飛控計(jì)算機(jī)的存儲(chǔ)器故障測試用例,一般測試為向飛控計(jì)算機(jī)存儲(chǔ)器中寫入測試數(shù)據(jù)以驗(yàn)證存儲(chǔ)器工作是否正常,在半實(shí)物系統(tǒng)測試環(huán)境中無法執(zhí)行。
全數(shù)字仿真測試環(huán)境由于不受系統(tǒng)硬件影響,以上舉例的測試用例舵機(jī)控制器故障、飛控計(jì)算機(jī)存儲(chǔ)器故障均可構(gòu)造,設(shè)計(jì)的測試用例可全部執(zhí)行,對軟件的測試更充分,能更大程度地發(fā)現(xiàn)潛在的軟件缺陷。
在測試耗時(shí)方面,全實(shí)物系統(tǒng)測試環(huán)境中人工執(zhí)行516個(gè)測試用例,耗時(shí)68.8 h,半實(shí)物系統(tǒng)測試環(huán)境中人工執(zhí)行530個(gè)測試用例耗時(shí)70.6 h,全數(shù)字仿真測試環(huán)境自動(dòng)執(zhí)行545個(gè)測試用例僅需0.3 h。
分析上述數(shù)據(jù)不難發(fā)現(xiàn),在全數(shù)字仿真環(huán)境下,使用AETG-SA算法自動(dòng)生成測試數(shù)據(jù),結(jié)合自動(dòng)測試框架自動(dòng)執(zhí)行測試用例,測試充分性提升5.3%。相較于半實(shí)物測試環(huán)境,全數(shù)字仿真環(huán)境測試手段執(zhí)行充分性提升2.8%。合并首輪測試用例的設(shè)計(jì)時(shí)間和回歸測試耗時(shí),相較于在全實(shí)物系統(tǒng)中進(jìn)行測試,自動(dòng)測試耗時(shí)縮短44%,相較于半實(shí)物系統(tǒng),自動(dòng)測試耗時(shí)縮短45%,大大提升了測試效率。
本文針對機(jī)載飛行控制軟件功能測試耗時(shí)長、對硬件依賴程度高、自動(dòng)化程度低、測試數(shù)據(jù)設(shè)計(jì)覆蓋率低等問題,提出了一種基于全數(shù)字仿真環(huán)境的機(jī)載飛行控制軟件自動(dòng)測試方法,并在工程實(shí)踐中進(jìn)行應(yīng)用。相較于全實(shí)物系統(tǒng)測試環(huán)境和半實(shí)物系統(tǒng)測試環(huán)境,全數(shù)字仿真測試環(huán)境進(jìn)行功能自動(dòng)測試極大的縮短了測試耗時(shí),同時(shí)具備快速重建能力,提升了測試效率。但目前來說,該測試方法適用于同一型號軟件及迭代版本的測試,不同型號軟件之間的通用性有待提升。后續(xù)逐步對該測試方法進(jìn)行優(yōu)化,提高復(fù)用性。