?

基于故障注入的實時嵌入式軟件仿真測試技術研究

2014-04-19 11:21蘇銀科李艷雷常曉航
導航定位與授時 2014年3期
關鍵詞:故障注入軟件測試

蘇銀科,李艷雷,周 平,常曉航

(北京機電工程研究所,北京100074)

基于故障注入的實時嵌入式軟件仿真測試技術研究

蘇銀科,李艷雷,周 平,常曉航

(北京機電工程研究所,北京100074)

摘要:由于強實時性、參與閉環控制、軟硬件耦合及可靠性要求高等特點,飛行控制系統嵌入式軟件在軟件研制、測試及驗收階段往往缺少動態測試環境。本文在仿真測試技術基礎上,針對飛行控制系統嵌入式軟件的特點與測試需求,進行了基于故障注入技術的仿真測試技術研究,設計了一種實時嵌入式軟件仿真測試平臺方案。

關鍵詞:實時嵌入式軟件;軟件測試;故障注入;仿真測試

0 引言

近年來,各種嵌入式計算機系統在飛行控制系統領域得到了廣泛的應用。隨著嵌入式硬件技術的發展,硬件可靠性得到了較大的提高,與此同時飛行控制系統嵌入式軟件的規模及性能卻發生了很大的變化。嵌入式系統可靠性的瓶頸正逐漸向軟件轉移。文獻[1]指出目前影響嵌入式系統失效的因素中硬件因素已經從50%降到10%,而軟件因素卻從3%增長到了62%。因此如何更有效地保證飛行控制系統嵌入式軟件的高可靠性面臨嚴峻的考驗。

實踐證明,軟件測試對驗證軟件的功能和性能、發現軟件中的缺陷具有重要的意義。飛行控制系統軟件是一類具有容錯機制的安全、關鍵嵌入式軟件,具有強實時性、參與閉環控制及硬件接口復雜與專用等特點。對其進行軟件測試,尤其是系統測試、驗收測試,一直以來缺少有效、可靠的測試環境。本文在飛行控制系統嵌入式軟件測試需求分析基礎上,提出將故障注入與仿真測試結合,進行測試環境設計?;诠收献⑷氲姆抡鏈y試方法是在嵌入式軟件仿真測試研究的基礎上,結合故障注入過程的特點,將故障分析、故障建模與故障注入技術有效運用于嵌入式軟件測試的過程,有效擴展了實時、非侵入式嵌入式軟件測試方法的靈活性。

1 飛行控制系統嵌入式軟件測試需求分析

飛行控制系統嵌入式軟件測試按照測試生命周期可分為單元測試、部件測試、配置項測試及系統測試四個級別,含義如表1[2]所示。

表1 飛行控制系統嵌入式軟件測試級別釋義Tab.1 The explication of the embedded software testing

其中軟件配置項是指具有完整功能、可獨立運行的程序。配置項測試和系統測試與軟件開發需求和系統研制需求緊密相關,要求測試必須在真實的目標環境下開展,是一種動態的、實時的、非侵入式的黑盒測試。

飛行控制系統嵌入式軟件一般具有強實時性、參與閉環控制、軟硬件耦合及可靠性要求高等特點,對其進行配置項測試和系統測試(本文以下合稱動態測試),具有較大的工程難度,主要集中在以下方面:

1)飛行控制系統軟硬件功能耦合程度高。軟件測試時無法將軟件與硬件環境剝離,測試激勵信號需要通過目標機硬件接口注入;

2)飛行控制系統往往由多個嵌入式設備、機電設備等構成,分系統之間交聯關系復雜。實際中因各設備研制進度不一,無法通過真實設備搭建測試環境。因此需要測試工具模擬各外圍設備產生激勵信號;

3)飛行控制系統具有實時性要求,因此測試環境要求及時產生測試激勵;而參與閉環控制的特點要求測試環境不能事先通過離線方式生成測試激勵,必須在線根據目標機反饋信號生成測試激勵;同時飛行控制系統的高可靠性要求測試環境能夠產生反應異常、故障、邊界與極限等情況的測試激勵。這些對測試激勵的生成帶來了較大的困難。

上述特點使得目前飛行控制系統嵌入式軟件的實時、非侵入式動態測試缺少靈活、通用、可靠的測試環境。一直以來,國內飛行控制系統嵌入式軟件動態測試依托于專用測試平臺,測試開發難度較大;國外在這一領域目前已擁有一些功能強大,性能良好的測試平臺,卻因為領域差異、技術保護及價格昂貴,難以在國內得到廣泛應用。

2 半實物仿真測試技術原理

近年來工程界針對實時嵌入式軟件的特點,提出了多種動態測試平臺方案,比較典型的有全數字仿真測試方案、半實物仿真測試方案、全實物仿真測試方案及灰盒測試方案(是一種processor in the loop的測試方案)等。由于飛行控制系統嵌入式軟件的特點,采用半實物仿真測試方案具較高的實用價值。這也是目前國內外公認的、行之有效的、具有廣泛應用前景的實時嵌入式軟件的黑盒測試方案[3]。

半實物仿真測試也稱硬件在回路(hardware in the loop)仿真測試。半實物仿真測試系統通常由目標機、信號調理箱、仿真計算機及測試主控機組成。半實物仿真測試系統的基本原理如圖1所示。

圖1 半實物仿真測試系統模型Fig1.The model of the HIL simulation testing

目標機指硬件實物設備。信號調理箱與專用的目標機進行信號互聯,并將各種不同類型的電氣信號進行梳理,轉發給仿真計算機。仿真計算機中建立了目標機外圍環境的仿真模型,與目標機構成虛擬的閉環系統。測試主控機通過一組人機界面為測試人員提供測試開發與過程控制接口。

這種方案能對已固化在硬件中的嵌入式軟件進行實時的、非侵入性的閉環測試。實際根據仿真系統的復雜程度,可以將多臺仿真計算機聯網,構成實時分布式網絡,網絡中每臺計算機都是一個節點,運行仿真模型。實時分布式網絡或者單個仿真計算機與目標機之間的通信,可根據目標機的需要進行選擇,例如采用AD/DA、RS422、1553B等方式。

半實物仿真測試的核心是利用半實物仿真技術,在仿真計算機中建立被測目標機交聯系統的仿真模型,利用仿真模型代替實物設備產生測試激勵。這種方法有效解決了測試激勵數據在線生成的問題,也能夠保證系統的實時性。但這種方法中交聯系統的仿真模型,一般是根據交聯系統的功能或原理搭建,是基于正常任務剖面的,難以對飛行控制系統嵌入式軟件進行如邊界、極限、異常故障情形下的測試。

3 基于故障注入的仿真測試

由于飛行控制系統本身的復雜性及較高的可靠性,飛行控制系統嵌入式軟件的動態測試要求進行如邊界、強度、極限及異常、故障等特殊情景下的測試。因此有必要研究仿真測試環境下的測試數據控制問題,即如何在仿真測試環境中模擬異常、故障現象,同時研究如何能夠使測試人員靈活地修改仿真測試過程數據,增大測試空間,以產生如邊界、強度、極限情況下的測試激勵。

基于故障注入的仿真測試,借鑒了故障注入技術的思想原理,對仿真環境中的交聯系統仿真模型進行動態干預,不僅可以模擬交聯系統中發生的各種異常、故障,而且能夠按照用戶的設定產生各種邊界、強度、極限情況下的測試激勵?;诠收献⑷氲姆抡鏈y試原理如圖2所示。其中OE為系統按照測試規格要求期望的輸出,OT為系統實際的輸出。嵌入式軟件仿真測試中真實交聯環境由交聯系統仿真模型E1與通信模型E2替代,故障注入模塊通過在仿真測試環境中動態干預仿真模型E1、E2,完成仿真測試。其中F表示故障注入模塊產生的故障激勵信號。

圖2 基于故障注入的仿真測試原理Fig.2 The principle of simulation testing based on fault injection

基于故障注入的仿真測試與傳統故障注入技術的不同在于,不是將故障注入到目標系統中,而是通過采用故障注入的思想,將故障注入到交聯系統的仿真環境中,以實時動態地按照用戶的設定,產生特定情景下測試激勵,是一種故障仿真手段。

通過基于故障注入的仿真測試原理構建測試平臺,具有以下優點:

1)不僅能夠通過交聯系統產生正常任務剖面內的測試激勵,還能夠干預仿真模型運行,產生各種具體故障情景下的測試激勵,可以靈活地更改測試過程中產生的數據,為用戶提供更加有效的測試手段;

2)避免了在進行故障、異常測試時直接修改仿真模型的弊端,將系統故障域與正常域分開,保證了測試過程中交聯系統狀態一致性,提高了結果的可信性;

3)可以將故障模型集中管理,并實現測試資源的重用和簡化回歸測試;

4)有助于研究故障對目標系統的真實影響及相關失效行為和對目標系統的容錯機制進行有效性評估等[5]。

4 基于故障注入的實時嵌入式軟件仿真測試平臺軟件架構設計

4.1平臺架構設計

基于故障注入的仿真測試思想,本文設計了一種嵌入式軟件仿真測試平臺,如圖3所示。軟件以共享內存為數據中心,主要由仿真模型解算模塊、接口收發模塊、通信協議解析模塊、測試實時顯示模塊、實時數據收集與分析模塊和測試模塊構成。各模塊通過共享內存實現數據交互。

圖3 基于故障注入的實時嵌入式軟件仿真測試平臺軟件架構原理Fig.3 The architecture of real-time embedded software testing platform based on fault injection

仿真模型解算模塊、接口收發模塊與通信協議解析模塊共同完成目標機交聯環境的仿真,合稱仿真模塊。架構中各模塊的功能如下:

1)仿真模型解算模塊調用交聯系統數學仿真模型進行數學仿真,這些模型只與交聯系統的功能或原理相關,與具體硬件特性無關,為系統的內特性模型;

2)接口收發模塊對各個硬件接口進行操作,負責對包數據的發送與接收;

3)通信協議解析模塊依據接口控制文檔(ICD)信息對仿真模型解算模塊輸出的數據進行組包,或者對接口收發模塊采集的數據進行解析;

4)測試模塊基于故障注入的仿真測試原理構建,根據測試任務列表中當前測試任務信息,實時地修改共享內存的數據并干預仿真模塊的執行結果,完成故障的仿真;

5)測試實時顯示模塊實時顯示測試過程與結果,為用戶提供一組直觀的測試顯示界面;

6)實時數據收集與分析模塊實時地進行動態數據轉存,并實時判斷測試結果,監測平臺工作狀態。

4.2測試模塊設計

測試模塊通過動態地修改共享內存數據及干預各仿真模塊的運行,實現對仿真測試過程的干預,執行過程為:

1)用戶通過測試腳本編輯環境編寫測試腳本(故障模型),可以直接調用保存于故障模型庫中的已有故障模型,也可以自定義故障模型;

2)腳本解釋模塊對測試腳本進行解釋,形成一串測試任務序列,保存于測試任務列表;

3)測試控制模塊以測試任務列表為依據,實時動態地判斷測試干預的條件,判斷故障的類型、動作等信息,修改共享內存中產生的各種動態數據、干預仿真模塊的運行,從而產生帶有故障、極限、邊界等特性的測試激勵。

4.3故障仿真模型的建立

依據實際飛行控制系統中故障模型之間的作用關系,對復雜故障進行抽象,將故障模型描述為由基本模式層、模式關系層和仿測特征層三層表示的故障模型。各層之間的關系與含義如圖4所示。

圖4 故障仿真模型的三層結構Fig.4 The three layer structure of fault model

1)基本模式層由飛行控制系統中底層部件的失效模式仿真模型構成?;灸J綄又懈骰竟收夏P褪窍到y表示復雜故障模型的基礎,表示了仿真測試試驗中故障注入的最小粒度,基本故障模型中包含了故障的基本屬性,界定了故障域范圍、故障的類型、位置等信息;

2)模式關系層對庫中基本故障模型按照特定組合關系進行組合,形成復雜故障仿真模型,對基本故障模型實現了復用;

3)仿測特征層在模式關系層基礎上,定義了故障模型與一次測試活動之間的特定關系,目的在于故障仿真試驗時確定故障仿真的前提條件和結束條件。

方案中測試腳本編輯環境提供了一套接口,可以對故障模型庫中的故障模型進行特定關系組合,并設定一次測試的特征屬性,從而完成故障模型的建立。測試控制器依據這些信息,可以完成基于故障注入的仿真測試。

4.4腳本編輯環境設計

測試人員通過編寫具有一定語法格式的測試腳本來描述測試過程以及測試結果的判定條件。仿真測試平臺分析并執行測試腳本描述的內容,從而完成整個測試過程。這種將測試腳本作為測試人員與仿真測試平臺之間的交互方式方便靈活。

為此平臺引入了Python腳本語言,并基于此設計了測試腳本的框架。Python語法類似C和模塊化語言的雜合,并具有良好的可擴展性,使得它能很好地適應軟件測試的需要。使用Python語言設計的測試腳本即使作了修改,也無需重新編譯就可以調用Python解釋器直接執行,大大節省了測試時間。

本文在實現測試腳本編輯模塊和框架時,采用了目前主流的C++語言作為主要實現語言。C++與Python的混合編程具有兩種方式:擴展與嵌入。擴展是指用C++語言為Python編寫擴展模塊,以使Python可以使用C++所實現的函數(或類);嵌入是指C++程序調用Python解釋器執行Python編寫的模塊。為了實現利用Python完成測試過程的控制,對這兩種方式進行了有機結合,具體實施了:

1)Python解釋器在測試環境中的集成;

2)用C++為Python腳本程序編寫擴展模塊,使其能夠訪問和控制共享內存數據交聯系統仿真模型;

3)將Python腳本模塊嵌入到故障仿真框架中。

5 結論

一本方案以共享內存為數據中心,以測試模塊軟件為核心,可以完成用戶設定的各種測試激勵,并將系統故障域與正常域分開,保證了測試過程中交聯系統仿真模型狀態一致性,提高了軟件測試結果的可信性。

參考文獻

[1]王田苗.嵌入式系統設計與實例開發[M].北京:清華大學出版社.

[2]蔡建平.嵌入式軟件測試實用技術[M].北京:清華大學出版社,2010.

[3]談琳.實時計算軟件的仿真測試平臺的研究與設計[D].成都:電子科技大學,2005.

[4]劉斌,艾俊,阮廉.模型驅動的實時嵌入式軟件測試方法研究[M].軟件測試學術交流論文集,2005.

[5]徐應詩,劉斌,阮鐮.基于故障注入的仿真測試方法過程框架[J].測控技術,2006,27(10):50-56.

[6]葉曉露.基于故障注入的嵌入式系統測試研究[D].浙江:浙江大學,2008.

[7]孔文華,蘇銀科,楊麗霞.武器裝備故障模式仿真建模方法研究[M].中國仿真技術學術交流會會議論文,2012.

中圖分類號:TP273

文獻標志碼:A

文章編號:2095-8110(2014)03-0069-05

收稿日期:2014–09–21;

修訂日期:2014–10–27。

作者簡介:蘇銀科(1985–),男,碩士,工程師,主要從事系統仿真,仿真測試等方面研究。E-mail:yinkesu@163.com

Research On Technology of the Real-time Embedded Software Simulation Test based on Fault Injection

SU Yin-ke,LI Yan-lei,ZHOU Ping,CHANG Xiao-hang
(Beijing Electromechanical Engineering Institute,Beijing 100074,China)

Abstract:Because of the characteristics of highly real-time,closed loop controlling,coupling of software with hardware,and the requirements of reliability,the embedded software of flight-control computer always runs short of dynamic testing system,especially in the phases of software developing,software testing,and acceptance testing.In this paper,a method of simulation testing based on fault injection is put forward,after analyzing the testing characteristics and demand,a blue print is designed as well.

Key words:Real-time embedded software;Software test;Fault injection;Simulation test

猜你喜歡
故障注入軟件測試
模擬訓練裝備故障注入系統研究
軟件測試方向人才培養“1+X”融合研究
嵌入式系統故障注入技術研究
面向二進制代碼的軟錯誤故障注入器設計與實現
新能源混合動力汽車功能安全臺架測試硬件環境一般設計
基于OBE的軟件測試課程教學改革探索
航天軟件測試模型構建與應用
一種多類型總線故障注入系統設計*
EXCEL和VBA實現軟件測試記錄管理
基于社交網絡的軟件測試課程教學實踐
91香蕉高清国产线观看免费-97夜夜澡人人爽人人喊a-99久久久无码国产精品9-国产亚洲日韩欧美综合