周 亮,張 楠,韓麗芳
(1.中國電力科學研究院北京100192;2.南京南瑞集團公司江蘇南京210000)
隨著嵌入式系統的廣泛應用,對于安全問題逐漸引起了人們的關注,尤其是在航空航天領域中或者軍事裝備武器領域中,任何軟件失效的發生,都會導致經濟上發生巨大的損失,或者軍事政治的嚴峻問題[1-2]。軟件使用周期的延長需要軟件安全性的測試,軟件測試的目的就是使用較少的實例、時間、財力來實現盡可能多地找出軟件中存在的潛在性故障,從而確保系統的質量。
傳統測試系統存在測試性能低,故障不能靈活注入,測試速度慢等問題,不能滿足軟件測試高標準的要求,為此,提出了一種故障注入的嵌入式應用軟件安全性測試系統設計。針對系統硬件,構造了安全性測試系統框架,該框架是由測試敏感器、實際執行組件、計算機控制器共同組成的,并通過數字仿真測試平臺的建立,設置故障狀態;建立測試環境通信渠道,使用GDB技術對故障底層機理進行調試,利用RSP通信協議實現程序間交叉測試,由此完成系統設計。通過實驗驗證表明,該系統設計具有更加全面的測試性能,且速度較快,實用性價值較高。
故障注入的嵌入式應用軟件安全性測試框架是由測試的敏感器、實際執行的組件、計算機控制器等共同組成的,如圖1所示。

圖1 軟件安全性測試系統硬件框架
由圖1可知:該硬件設計主要實現的功能有:對敏感器采集到的數據進行處理;控制嵌入式應用軟件運行的姿態;控制輸出執行機構;通過總線完成數據的分類,并使串口與遙控的單元進行通信連接。針對嵌入式應用軟件的運行特性,將變換所需要的物理條件進行輸入,并模擬接口主要包括計算機通信的總線接口和串、并口以及為電源提供敏感數據、執行機構的數據、遙感控制的數據等。
為了構造軟件運行環境,需要模擬CPU以及常用的芯片組合構建全數字仿真平臺[3-4],如圖2所示。

圖2 全數字仿真平臺
由圖2可知:該平臺建立的主要部件有:CPU模擬器、虛擬硬件模型塊、仿真模型庫、輸入接口、記錄接口、故障注入模型庫。
1)CPU模擬器:用來模擬軟件運行的真實環境,主要包括CPU、內外的存儲單元。
2)虛擬硬件模型塊:用來模擬總線的連接,串并口、芯片的采集。
3)仿真模型庫:為軟件運行提供動力學的仿真環境,并對模擬的軟件進行實時控制。
4)輸入接口:測試人員能夠通過輸入接口進行腳本的設置,從而控制軟件安全狀態。
5)記錄接口:該部分的設計能夠實現對測試進行實時的監控和分析,并對模型產生的數據、被測試軟件的實時信息、覆蓋率[5]進行處理。
6)故障注入模型庫:該部分的設計主要是將故障信息進行輸入。通過敏感器采集的異常數據對接收的信息進行設置,然后向被測試軟件提供激勵[6-7],通常將處理器、總線、外設設置為故障的狀態,再根據該部分的設計作為運行環境的約束條件,從而完成硬件部分的設計。
根據上述硬件中設計的設備模型構造了一組可運行的虛擬設備[8],比如存儲器和處理器。該硬件模型的設計能夠在虛擬的機器中加入實例化的設備,并進行加載和卸載,通過模型引入配置文件來定義虛擬嵌入式系統。該文件的引入能夠為軟件設計提供可變的參數和配置的函數,進而實現處理器和內存容量的控制[9]。
進行GDB調試環境之前,需要加載該模塊,并與主機之間的IP進行連接,如圖3所示。

圖3 測試環境通信渠道
基于上述的全數字軟件開發平臺中啟動一個新程序的時候,必須執行如下命令:

在該運行環境中必須建立新的IP協議,其端口與平臺中的端口一致。該過程主要包括GDB調試技術和RSP通信協議:
1)GDB技術對故障底層機理的調試
GDB是一個重要的程序調試工具,能夠支持多種語言的編程,還可以根據不同的操作系統進行調用接口的選擇。在嵌入式應用軟件安全性測試系統中選擇系統調用,該系統的選擇能夠為執行進程的控制提供支持,使用GDB調試技術能夠實現:按照用戶自定義要求啟動目標程序;使被調試的程序在相應位置處停住;當程序停住后,可以檢查目標程序的安全運行狀態;通過動態的實施來改變程序的執行環境。
GDB可用于對故障底層機理的調試,檢測軟件的安全性,如圖4所示。

圖4 GDB調試機理
由圖4可知:1表示創建目標程序進程;2表示內核程序的創建;3表示將目標程序設置為可追蹤的;4表示目標程序被執行;5表示目標進程喚醒注入;6表示請求目標程序被改變;7表示內核改變目標進程并恢復執行能力;8表示目標進程結束;9表示故障注入進程結束。
2)RSP通信協議實現程序間交叉測試
RSP通信協議能夠為GDB調試器與遠程目標程序之間的通信提供高級的秘密協議。如果GDB調試結束能夠實現RSP通信協議,那么該調試技術就能夠連接到目標機,從而實現程序間的交叉測試[10-11]。
RSP通信協議具有廣泛的連接方法,主要包括:TCP/IP、串口、管道,適用于嵌入式應用軟件測試系統的交叉安全性能檢驗。該通信協議是一種簡單的編碼協議[12-13],采用的是半雙工通信的方法[14-15],其報文如下所示:

$ 字節流 # 校驗和
當接收者接到完整的RSP通信協議信息包消息,那么只需要回復“-”或者“+”就可以表示正確無誤的接收到安全測試通過的消息,或者接收到失敗的消息[16]。
為了驗證上述系統設計的合理性,進行了如下的實驗。
選擇某衛星軌道的應用性軟件,使該軟件在數字平臺上運行,并模擬衛星圍繞行星飛行的狀態,根據接收到的數據進行運行軌道的繪制。其中需要被測試的硬件主要有:CPU模擬器、處理器、串口。
嵌入式應用軟件在正常環境中各個執行程序運行的結果如圖5所示。

圖5 正常環境運行繪制結果
如果使用本文設計的故障注入式系統來模擬粒子事件,進而改變程序運行中各個重量信息的計算,通過觀察在正常環境下運行的結果來判斷應用性軟件程序是否具有安全性。
啟動本文設計的故障注入式系統之后,自行的選擇維護故障類型,加載程序維護的同時執行故障注入,結果如圖6所示。

圖6 故障注入后運行繪制結果
由圖6可知:通過對系統注入故障能夠改變硬件存儲器的重力狀態,但是被測試的軟件仍然具有正常工作的能力,只是在繪制中受到了干擾。因此,本文設計的系統能夠模擬嵌入式應用軟件在運行時所處的環境,并融合故障注入,動態測定硬件、軟件發生的故障類型,促使嵌入式應用軟件的執行,與傳統的測試行為和功能相比,具有更高的軟件測試性能。
構建完整的測試框架之后,針對故障類型測試過程如下所示:
1)測試需求分析,獲取故障模式和測試點,審查被測程序是否具有完全覆蓋軟件的要求,比如:針對關鍵性的軟件,是否需要單獨測試;針對設計中出現的安全性結構、冗余是否具有特殊項需要被測試;針對中斷問題,是否具有未中斷、中斷標志處理等針對性的問題出現;故障類型中,是否需要特殊處理等。
2)根據安全性需求的分析,從故障注入數據庫中選擇故障的類型,設置相應的時間、故障點,選擇適當的時機由輸入接口向系統注入故障。
3)測試結果保存與分析,如果注入為輸入故障,那么通過保存的結果就可以掌握被測試軟件異常輸入是否執行了正確的行為;如果注入為運行故障,那么通過對被測試軟件的結果評估,就可以驗證該系統的有效性,進而實現軟件能夠在惡劣環境中克服的能力。
4)回歸測試,如果軟件中具有缺陷問題,那么需要對更改后的軟件進行重新確認。
采用上述方法對故障類型進行測試,結果如表2所示。

表2 注入故障結果
由表2可知,通過本文的設計,能夠模擬軟件運行的環境,可以方便靈活注入異常故障,促進軟件能夠快速的達到故障狀態,進而快速完成軟件測試。
文中設計的系統能夠模擬嵌入式應用軟件在運行時所處的環境,并融合故障注入,動態測定硬件、軟件發生的故障類型,促使嵌入式應用軟件的執行,與傳統測試行為和功能相比,具有更高的軟件測試性能;根據模擬軟件運行的環境,可以方便靈活注入異常故障,促進軟件能夠快速的達到故障狀態,進而快速完成軟件測試。
確保應用性軟件能夠在惡劣環境中正常運行、避免失效,是生命周期的關鍵所在,為此,進行驗證就需要模擬在實際運行環境中出現的各種異常現象。故障注入的嵌入式應用軟件安全性測試能夠融合故障模型,激勵實現有效的故障注入,進而獲取執行的結果,與傳統的系統設計相比,本文設計的嵌入式應用軟件安全性測試系統具有更加全面的測試性能,實用性價值較高。
參考文獻:
[1]胡寶,張文,李先彬,等.智能變電站嵌入式平臺測試系統設計及應用[J].電力系統保護與控制,2017,45(10):129-133.
[2]徐志剛.基于嵌入式的火災檢測系統設計[J].現代電子技術,2017,40(10):168-171.
[3]劉慶,何志琴,邊鵬飛,等.基于嵌入式技術的農藥殘留快速檢測系統設計[J].電子器件,2015(6):1368-1373.
[4]林永峰,陳亮.面向安全性分析的嵌入式軟件測試方法研究[J].現代電子技術,2016,39(13):80-83.
[5]劉飛,蒲海峰,李柯達,等.一種彈載嵌入式軟件數學模型測試方法的設計與實現[J].彈箭與制導學報,2016,36(3):25-27.
[6]韓德強,馮云賀,王宗俠,等.Simics環境下故障注入的研究與實現[J].電子技術應用,2015,41(1):21-24.
[7]仵志鵬,黃志球,王珊珊,等.一種基于故障擴展SysML活動圖的安全性驗證框架研究[J].計算機科學,2015,42(7):222-228.
[8]胡倩,王超,王海霞,等.基于Simics的系統級故障注入平臺[J].計算機工程,2015,41(2):57-62.
[9]王飛,沈國華,黃志球,等.一種結合線性時序邏輯和故障樹的軟件安全驗證方法[J].計算機科學,2015,42(12):71-75.
[10]黃傳林,黃志球,胡軍,等.基于擴展SysML活動圖的嵌入式系統設計安全性驗證方法研究[J].小型微型計算機系統,2015,36(3):408-417.
[11]季玉香,唐曉強.嵌入式模塊自動測試系統軟件設計[J].電子設計工程,2015,23(23):116-118.
[12]胡鳳忠,高金定,龍貽建.嵌入式運動目標檢測及跟蹤系統的設計與實現[J].計算機測量與控制,2016(12):133-135.
[13]張舜堯.嵌入式車載行人檢測系統的設計及應用[J].電子技術與軟件工程,2017(6):195.
[14]吳志強,印娟,朱欣華.MEMS加速度計嵌入式批量自動化測試系統設計[J].自動化儀表,2015,36(9):77.
[15]夏佳佳,鄒毅軍,周江偉,等.嵌入式軟件自動化測試系統研究[J].計算機測量與控制,2016,24(4):22-25.
[16]林驗森.軟硬結合的嵌入式軟件在線測試系統的探究[J].無線互聯科技,2015(10):59-60.