?

嵌入式系統故障注入技術研究

2022-04-12 04:09劉憲忠趙昶宇
科技與創新 2022年7期
關鍵詞:嵌入式測試故障

劉憲忠,趙昶宇

(1.海軍裝備部駐天津地區第二軍事代表室,天津 300308;2.天津津航計算技術研究所,天津 300308)

由于嵌入式系統需要軟件和硬件協同工作,因此,嵌入式系統的測試難度比傳統的純軟件測試要高得多。對于嵌入式系統來說,測試難度最大同時也是最容易出問題的部位在于對異常和故障的測試。這其中不僅包括軟件異常,還包括硬件故障,這些異常和故障通常在測試時很難被測試覆蓋到,這就會給嵌入式系統測試帶來不確定的隱患因素。

為了消除嵌入式系統測試中不穩定的隱患因素,進一步提高測試的覆蓋性,尤其是提高對軟件異常和硬件故障處理的測試覆蓋性,可以采用故障注入的方法來模擬真實的軟件異常和硬件故障情況。在嵌入式系統中通過硬件或者軟件的手段,對被測試對象“注入”提前設計好的異常和故障測試用例,通過運行這些測試用例來測試和評估被測試軟件代碼的容錯性和異常處理能力。

本文對故障注入的原理進行了闡述,并列舉了幾種常用的基于故障注入測試方法。采用了故障注入的方法對嵌入式系統進行測試,能夠極大地提高測試效率和測試覆蓋率,從而有效提高系統可靠性。

1 故障注入原理

故障注入是指向被測試系統注入某些特定的故障樣本或用例,使得被測系統產生預期的故障現象的過程,它是驗證被測系統測試性水平的關鍵技術。

故障注入技術主要用于進行系統可靠性驗證,它根據建立的故障注入模型,通常采用人為的向待測系統輸入故障信息,加速待測系統故障或失效,并通過觀察和分析待測系統對輸入故障信息的反饋結果,對待測系統進行定量和定性的驗證和評價[1]。

故障注入技術的驗證過程通常需要依賴整個系統的原理、功能、特性,FMEA和FMECA的結果,領域專家的相關經驗以及以往故障率數據等信息。在進行故障注入時,首先需要執行故障注入者選擇故障模型,然后基于選擇的故障模型對被測試系統執行故障注入活動,通過運行工作負載的目標系統,獲取系統的運行狀態,并對被測系統的反饋結果進行驗證評估。故障注入的原理如圖1所示。

圖1 故障注入原理

1.1 輸入和目標系統

嵌入式系統故障注入的輸入包括整個系統的原理、功能、特性,FMEA和FMECA的結果,領域專家的相關經驗以及以往故障率數據等信息。執行故障注入的測試人員不僅要提供故障注入模型和注入結果分析的度量,還要采取措施保證每次故障注入過程的完整。運行工作負載的目標系統可以是系統模擬模型,也可以是真實系統原型。

1.2 選擇故障模型

選擇故障模型的主要功能是確定產生故障的屬性,并將選擇的故障模型作為“執行故障注入”環節的輸入。如果被選中的故障模型能夠最大限度覆蓋真實系統運行時的故障,則被測系統的反饋結果就會越精確。

故障模型的建立通常與目標系統類型、故障注入方式以及驗證評估的結果相關。其中,硬件故障模型的屬性分為故障類型、故障發生時間、故障持續時間以及故障位置等,故障發生時間可以根據給定的分布或者按照工作負載的運行狀態確定,故障持續時間包括瞬時、間歇和永久3種,故障位置與目標系統有關。軟件故障模型的建立主要依賴于專家的經驗和測試結果,軟件故障注入用于測試被測系統的容錯機制。

由于測試是無止境的,因此必須采取策略從龐大的故障測試用例中選取一個測試子集完成故障注入,一般采用多級抽樣、分層抽樣或者典型抽樣的方法來進行故障測試用例的篩選。

1.3 執行故障注入

在當前步驟中需要將上一步驟中選擇的故障模型轉變為可注入的故障形式,并選擇適當的方法將故障集注入目標系統中。故障注入方法的選擇與目標系統的類型密切相關,若目標系統是系統模擬模型,可針對目標系統模擬層次的不同選用不同級別的注入方法,這種模擬注入的方式能夠測試到真實系統原型無法覆蓋的內部功能,實現對被測系統的精確注入監控。若目標系統是真實系統原型,可采取基于軟硬件的物理故障注入方法,用來評估系統原型的可信性和驗證被測系統的容錯性。

1.4 獲取系統狀態和驗證評估結果

獲取系統狀態和驗證評估結果是一次完整的故障注入活動中向測試人員提供被測系統反饋結果的最后步驟。在該步驟中需要測試人員判斷是否終止驗證評估,其判斷依據包括是否滿足置信區間、測試得到的概率分布是否穩定以及測試參數是否超過設定閾值等。若終止驗證評估,則需驗證評估分析所有的測試結果,反饋被測系統測試結果。通常采用概率統計的方法進行測試結果的驗證評估和分析。

2 故障注入技術分類

按照故障注入方法的不同將故障注入技術分為基于硬件的故障注入、基于模擬的故障注入和基于軟件的故障注入。故障注入技術分類如圖2所示。

圖2 故障注入技術分類圖

基于硬件的故障注入是指在被測系統的硬件中加入額外的硬件電路。該方法適用于對某些原型系統的可信性進行研究?;谟布收献⑷氲奈恢脤⒃摲椒ǚ譃榻佑|式和非接觸式2種。接觸式故障注入方法可采取直接與被測系統電路的引腳相連接的方式,或是在被測系統芯片內部植入對應的故障模塊。該方法的優點在于無需對被測系統進行修改和建模驗證,即可實現對被測系統的永久性故障注入。缺點是容易造成系統硬件損壞,增加了硬件設計的結構復雜性和芯片設計難度。非接觸式故障注入方法中故障注入器和被測系統之間沒有物理連接,因此,它無法準確把握故障注入的時間和位置。

基于模擬的故障注入是指在被測系統開發設計階段通過建立解析和模擬模型來獲取被測系統中大多數可信性度量信息,通常在功能級別測試系統的各種性能是否滿足要求。模擬模型可實現對被測系統的細節設計的模擬,這樣便于對注入故障進行精確監控?;诠δ芗墑e的模擬故障注入可將故障注入到被測系統的CPU、通信部件、存儲部件或軟件模塊上,因此,需要對被注入的部件或模塊分別建立不同的故障模型。該方法一般應用于系統早期設計階段,能夠較好地模擬內存Bit位翻轉和硬件寄存器故障,缺點是建模難度和工作量較大,且容易產生“組合爆炸”問題。

基于軟件的故障注入是指在無需額外硬件設備輔助的情況下,通過設置程序指令或修改被測系統的內存來模擬被測系統CPU、內存、寄存器或網絡硬件故障,通過在軟件編譯前調整軟件結構或是運行時改變程序變量或狀態來模擬系統軟件故障[2]。該方法可以在被測系統的操作系統中設計故障注入層,或者直接將故障注入到應用程序中,它既能模擬部分硬件故障,也能設計軟件方面的故障。該方法的最大優點是故障注入成本低,易于實現,并且不會破壞被測系統的硬件環境。但是也存在著缺點,比如只能對軟件能夠訪問的位置或部件進行故障注入,有時會改變被測系統原始軟件結構,干擾被測系統軟件運行,還有就是時間精度和分辨率較小,導致無法準確捕捉到異常和錯誤情況等。根據故障注入的時機將將基于軟件的故障注入方法分為編譯時故障注入和運行時故障注入2種。編譯時故障注入是指在被測系統的程序目標碼被加載執行前,將軟件故障注入到程序源代碼中以模擬被測系統軟硬件故障。它需修改被測系統的軟件源代碼,當被測系統的軟件運行后,則不會受到外界干擾,缺點是無法實現故障的實時模擬。運行時故障是指當被測系統中的軟件運行后,采用特定方式將故障注入被測系統中。它無需修改被測系統的軟件源代碼,可以實時模擬軟硬件故障,缺點是無法模擬永久性故障。

本文重點闡述基于軟件的故障注入方法及其在工程中的實際應用。

3 嵌入式系統故障注入方法

嵌入式系統中常用的基于軟件的故障注入方法有修改軟件源程序法、基于開發環境故障注入、設備驅動故障注入和其他故障注入方法。

3.1 修改軟件源程序實現故障注入

通過修改軟件源程序進行故障注入是目前最常用的注入故障方法。這種方法的最大優點是無需借助外部資源和測試工具,同時也無需在軟件源程序中設置斷點,只需修改源程序中進入并執行異常處理的判斷條件,即可實現對故障的靈活注入[3]。但是該方法也存在以下不足。

對嵌入式系統進行故障注入時,需要軟件測試人員和軟件設計人員同時在場,軟件測試人員需在軟件設計人員的指導下完成源程序修改和故障注入工作。該方法在處理和時序相關的故障注入時,需要對源程序進行較大的改動,極有可能在改動源程序時產生新的系統故障?;诓煌墓收献⑷肽J?,需要修改并生成多個版本的軟件源程序,增加了軟件版本管理的工作量和復雜程度。

3.2 基于開發環境的故障注入方法

在嵌入式系統軟件的編碼和調試階段,通?;谲浖_發環境對系統進行故障注入。在開發環境中通過設置調試斷點的方式,或者在開發環境和目標機之間建立網絡連接的方式來修改嵌入式系統軟件內存或者寄存器狀態。該方法最大的優點是無需修改嵌入式軟件源程序,在進行故障注入時可以極大地減少軟件設計人員的占用率。該方法也存在以下的局限性和不足。

該方法在利用通用的軟件開發環境對具有同步功能的嵌入式余度系統進行故障注入時,具有較大的局限性。通過開發環境進行系統故障注入,通常不能保證故障注入的連續執行,而且無法處理多線程或者中斷程序的故障注入。由于該方法不能對目標機進行連續故障注入測試,因此,采用該方法得到的故障注入結果不能夠真實反映嵌入式系統在實際工作時對故障的反饋狀態。

3.3 基于驅動的故障注入方法

當嵌入式系統軟件包含底層驅動模塊軟件時,通??赏ㄟ^底層驅動模塊軟件向嵌入式系統應用層軟件注入故障。該方法需要在底層驅動模塊軟件中預留故障注入測試接口,通過故障注入工具向底層驅動模塊軟件中注入故障。該方法最大的優點是無需改動嵌入式系統應用層軟件源程序,也不會對被測試嵌入式系統應用層軟件的工作負載產生影響,該方法生成的故障更加接近真實硬件產生的故障。該方法最大的不足是由于需要在底層驅動模塊軟件中預留故障注入測試接口,在對系統進行故障注入前需要投入較大工作量[4]。

3.4 其他故障注入方法

其他的故障注入方法包括超時觸發法、異?;蛳葳逵|發法和代碼插入觸發法等。

超時觸發法。該方法采用硬件或者軟件定時器觸發故障注入。該定時器預先設定好定時時間,當定時時間到后產生中斷信號,在中斷處理程序中激活故障注入。該方法無需修改被測系統的軟件源代碼或者工作負載。由于定時時間可以任意設定,因此,該方法可能會對被測試的嵌入式系統產生不可預知的故障影響和行為,尤其適用于模擬瞬時故障或者間隔式硬件故障。

異?;蛳葳逵|發法。該方法采用硬件異?;蛘哕浖葳鍋碛|發故障注入。與超時觸發方法不同,它不用設置定時器就能利用硬件異?;蜍浖葳逶谌我鈺r間或條件下實施故障注入。當發生硬件異?;蚴菆绦熊浖葳鍟r,調用中斷服務程序激活故障注入。

代碼插入觸發法。該方法是在被測系統運行時,在不改變被測系統原始軟件源代碼的情況下,在原始軟件源代碼的某條特定代碼之前動態的插入新的指令并執行故障注入。這些動態插入的新指令作為被測系統軟件源代碼的一部分。通常情況下,被測系統是在特定的工作模式下采用代碼插入觸發法執行故障注入,在被測系統正常的工作模式下一般不采用這種方法[5]。

4 結束語

本文闡述的基于軟件的故障注入方法具有對硬件資源依賴較少,簡單易用,并且具有良好的可擴展性,可在系統設計的任何階段采用該方法來測試系統中的未知故障,并提高系統的健壯性和可靠性。

隨著計算機技術在嵌入式系統中的不斷發展和廣泛應用,尤其是在航空和航天等安全關鍵技術領域的深入推廣,人們對嵌入式系統的可靠性提出了越來越高的要求。目前國內嵌入式系統的故障注入技術仍處于不斷探索和發展過程中,尤其在一些軍用領域還沒有通用的故障注入設備,無法高效完成裝備的測試性驗證試驗。所以完善和優化故障注入方法,研究通用的故障注入設備,將成為所有科研人員的努力方向。

猜你喜歡
嵌入式測試故障
GE LOGIQ P5 彩超故障維修2例
數控機床故障檢測與維修
大數據的中低壓配網故障智能診斷
心理測試
汽車出了故障
心理小測試
測試
小測試:你對電子郵件上癮了嗎?
高校圖書館開展嵌入式信息素質教育的思考
嵌入式組件技術的研究及應用
91香蕉高清国产线观看免费-97夜夜澡人人爽人人喊a-99久久久无码国产精品9-国产亚洲日韩欧美综合