孫毅剛,徐 暢,劉哲旭
(1.中國民航大學 航空工程學院,天津 300300; 2.中國民航大學 電子信息與自動化學院,天津 300300)
隨著技術的發展與人們生活質量的提高,現役民用飛機經常需要進行相應的升級改裝,以面對適航安全的要求或是來自客戶的個性化需要。新一代客機采用了綜合模塊化航空電子(Integrated Modular Avionics, IMA)系統,允許應用開發商根據ARINC-653等標準獨立開發客戶所需的安全、娛樂等航電軟件[1],再由系統集成商將應用程序載入IMA模塊,與航空電子全雙工交換式以太網(Avionics Full Duplex switched Ethernet, AFDX)集成為IMA平臺網絡[2-3]。IMA平臺網絡承擔了航電系統數據通信、功能交互的重要職能,其良好的可靠性與健壯性是航電軟件正確運行的前提,因此,IMA平臺網絡的測試驗證工作是整個航電系統升級改裝測試性驗證與安全評估的關鍵[4]。故障注入技術能夠在較短的時間內高效地提供豐富、充分的故障現象以供分析,是測試性驗證工作中的重要手段[5-6]。傳統的故障注入策略,采用簡單列舉可注入故障類型并依次注入待測試系統的方式,運用到具有復雜通信結構的IMA平臺網絡時,存在難以選取合適的測試路徑、存在大量等效故障與無效故障等問題,使故障注入工作繁瑣復雜,測試成本也隨之增加[7]。因此,尋找一種能夠滿足故障注入測試要求,又能最大限度簡化測試任務、降低測試成本的故障注入策略,是航電系統測試驗證工作中需要解決的關鍵問題之一。
目前,關于IMA平臺網絡故障注入的研究普遍是針對IMA模塊或AFDX總線本身特性的故障測試。文獻[8]通過故障注入的方式對IMA模塊自有的健康管理功能進行了驗證;文獻[9]通過修改數據幀時標與內容的方式進行故障注入,驗證了AFDX總線的健壯性與容錯性;文獻[10]提出一種3+1整合法,提高對AFDX總線的測試速度與測試數據深度。然而,以上研究文獻只針對IMA模塊與AFDX總線的自身特性進行了故障測試與驗證,但未將二者所集成的IMA平臺網絡作為研究對象,因此難以解決傳統故障注入策略運用到IMA平臺網絡中時測試次數較多、測試時間較長的問題。
針對上述問題,本文提出了一種新的IMA平臺網絡故障注入策略。通過對傳統測試路徑選取算法的改進,生成能夠覆蓋所有通信鏈路的最優測試路徑,保證測試的有序性,并減少了路徑中的測試任務數。確定測試路徑后,采用建立故障注入測試案例生成模型的方式,排除等效與無效故障,精簡了每個測試任務中所需的測試案例的個數。與傳統故障注入策略相比,本文方法縮減了測試時間,減少了測試成本,解決了傳統策略在測試路徑選取與測試案例生成時的無序性與盲目性的問題,可以為航電系統升級改裝的安全性驗證提供一種高效的數據樣本采集方案。
IMA平臺網絡的基礎結構如圖1所示,由發送端、接收端與AFDX雙網組成,AFDX數據在發送端進行冗余復制后發送,到達雙網AFDX交換機,基于虛擬鏈路(Virtual Link, VL)配置進行尋址,到達接收端后經完整性檢查與冗余校驗處理,將數據傳遞到IMA模塊的上一層。

圖1 IMA平臺網絡基礎結構
各個IMA模塊中加載的應用程序通過AFDX總線進行數據通信,該數據通信過程的配置有效性與容錯性是軟件正確行使其職能的基礎[11]。在如圖1所示的雙模塊IMA平臺網絡中,只存在一條通信鏈路,是IMA平臺網絡通信的最簡單形式。
結合IMA平臺網絡的工作機制,在故障注入策略設計時主要有兩方面問題需要解決:
1)采取何種順序進行故障注入的問題,即故障注入測試路徑生成問題。實際應用中的IMA平臺網絡如圖2所示,所連接IMA模塊較多,通信鏈路交聯情況復雜。對于復雜通信網絡的故障注入順序應是以確保覆蓋所有模塊與通信鏈路為前提,使總測試路徑長度最短,即測試任務最少;同時測試方向應與網絡通信方向保持統一,以便故障定位。此類問題屬于路徑優化選取問題,解決方法是結合網絡特性使用合適的路徑優化算法,求取最優故障注入順序。

圖2 多模塊IMA平臺網絡通信
2)該注入哪些故障的問題,即故障注入測試案例生成問題。IMA平臺網絡可注入故障較多,若采用傳統的故障注入策略,列舉所有可注入故障并依次注入,將會花費大量的時間與計算成本;同時,IMA平臺網絡可注入故障之間存在較多的等效故障,如VL調度時抖動過大與端口配置時轉發時延過高,產生的故障現象都為通信延時。進一步考慮到IMA平臺網絡的雙冗余機制,單網注入故障不會在總體上觀察到故障現象,例如,向A網注入導致丟幀的故障時,B網正常工作,AFDX總線的冗余管理(RM)機制能夠于B網獲取正確的數據流,該注入行為屬于無效故障注入。如何排除等效與無效故障,生成精簡的測試案例,也是IMA平臺網絡故障注入策略設計中需要解決的問題。
針對上述兩個問題,采用的故障注入策略對應地分為兩個部分:故障注入測試路徑設計與故障注入測試案例設計。
IMA平臺網絡故障注入測試路徑設計指的是將IMA模塊視為測試路徑上的節點,選用合適的方法覆蓋網絡各節點及節點間的通信鏈路,生成故障注入順序。傳統的方法是沿用信息學中路徑遍歷的思路,采用路徑覆蓋算法對復雜結構進行簡化。考慮IMA平臺網絡通信過程需保證實時性與確定性,路徑選取時應盡可能與模塊間通信的順序一致,而單獨采用深度優先搜索算法進行路徑選取時,每當訪問到終止節點或是重復節點,都會回到上一層節點重新選擇,這個過程影響了IMA平臺網絡測試的有序性。同樣作為常見的路徑遍歷算法,基于節點的完全路徑覆蓋算法[12]所生成的路徑都為由初始節點開始,至葉子節點結束的完全測試路徑,在一定程度上體現出了測試有序性。
基于節點的完全路徑覆蓋算法:
步驟1 訪問路徑的初始節點并標記為當前節點,記層數n=1。
步驟2 尋找當前節點能夠到達的其他節點,標記為子節點,記子節點所在層為n=n+1。
步驟3 判斷第n層是否有未被訪問的節點,若是,跳到步驟4;若否,輸出路徑覆蓋結果,算法結束。
步驟4 訪問第n層中未被訪問過的節點,若該節點在x(0 步驟5 若第n層中所有節點都已訪問,則n=n-1,返回步驟3;否則,返回步驟4。 該算法采用一種類似于深度優先的遍歷方式,考慮了IMA平臺網絡測試所需的有序性,能夠使故障注入測試遍歷IMA平臺網絡,生成有效的測試路徑,但是該算法反復回到初始節點的過程同時也使測試任務數增多,增加了測試時間與計算成本[13]。作為對實時性有很高要求的動態網絡系統,IMA平臺網絡的測試對象應側重于模塊間的通信鏈路,且由于單位時間內每段通信鏈路都有數據幀傳遞,傳統方法中的初始節點與終止節點的概念相對不明顯。因此,本文在文獻[12]提出的基于變遷的路徑覆蓋算法的基礎上,根據IMA平臺網絡初始與終止節點不明確等特性進行改進,提出一種基于通信鏈路的IMA平臺網絡測試路徑優化算法: 定義1 令n為待測試IMA平臺網絡所連接的模塊總數,構建通信鏈路方陣:Tn×n=(tij),1≤i,j≤n;若第i個模塊無法向第j個模塊發送消息,令tij=0,否則,tij表示網絡中第i個模塊向第j個模塊發送消息時的通信鏈路;構建全通信鏈路集合R,R中的元素為Tn×n中所有非0的tij;構建路徑集合W; 步驟1 初始化,令W為空集,i=j=1,計數變量k=1; 步驟2 判斷tij是否為0或不屬于集合R,若是,跳到步驟3;若否,將tij加入路徑集合W,并將tij從R中刪除,令i=j,j=1,重新開始步驟2; 步驟3 令j=j+1;判斷是否j>n,若是,跳到步驟4;若否,返回步驟2; 步驟4 判斷W是否為空集,若是,i=i+1,j=1,返回步驟2;若否,構建集合Yk,令Yk=W,輸出Yk,跳到步驟5; 步驟5 判斷R是否為空集,若否,令W為空集,i=j=1,k=k+1,返回步驟2;若是,算法結束。 該算法以通信鏈路作為測試對象,路徑選取的過程遵循了IMA平臺網絡通信的方向,路徑選取時因訪問到終止節點而跳到其他通信鏈路的破壞測試有序性的現象較少。該算法生成的測試路徑,含有的測試任務數等于IMA平臺網絡的通信鏈路數,避免了重復測試的情況。 結合常見的AFDX總線故障注入工具的功能與IMA平臺網絡的故障傳播特性,本文將可注入的故障劃分為兩個層面: 1)鏈路層故障。包括VL調度時可能出現的延時與抖動(Jitter),以及幀間隙(Inter-Frame Gap, IFG)異常;造成的故障現象均為所傳輸數據延時。另外,在AFDX端系統與交換機的配置表中,記錄著允許通過的VL的配置參數,如VL工作參數有VL ID、最大與最小幀長、帶寬分配間隙(Bandwidth Allocation Gap, BAG)、允許抖動、最大偏移時間(SkewMax)等,端口配置參數有端口號、開關狀態、最大緩沖配置、端口延時等。其中,BAG參數過大、SkewMax參數過大、端口緩沖配置不當、端口轉發時延過大等故障會造成所傳輸數據單網延時;幀長超范圍、BAG參數過小、SkewMax參數過小、端口關閉等故障造成所傳輸數據單網丟幀。 2)協議層故障。 IMA平臺網絡協議層故障表現為數據幀的格式與內容出現異常,包括地址有誤、序列號SN有誤以及有效載荷有誤等,在傳輸過程中導致尋址錯誤等問題,影響航電應用程序的正常工作。其中,地址又分為MAC、IP、UDP的目標地址與源地址,其中任一的地址字段出現格式或內容錯誤,會造成所傳輸數據單網尋址有誤,即目標IMA模塊及分區端口接收不到信息,信息丟失或被轉發至錯誤模塊與端口;SN有誤會造成所傳輸數據單網次序錯誤,影響實時性與確定性;有效載荷有誤會造成所傳輸數據誤碼失實,造成應用程序經由錯誤的信息產生錯誤判斷,影響適航安全。 本文以上述兩個層面中的故障作為待注入故障,通過有色Petri網(Colored Petri Net,CPN)形式化建模方法,建立IMA平臺網絡測試案例生成模型。其中,將故障注入對象分為4個類型:1)VL調度、2)VL工作參數、3)端口工作參數、4)數據幀格式與內容。所造成的故障現象分為5個方面:1)單網延時、2)單網丟幀、3)單網尋址錯誤、4)單網次序錯誤、5)單網有效載荷誤碼。造成的故障現象相同的故障,即等效故障,在建模時通過編程的方式隨機選取其一,在確保覆蓋故障現象的前提下,避免重復注入;同時,針對IMA平臺網絡的冗余雙網工作特性,采取的策略為對雙網分別生成測試案例。由于單個網絡擁有5類故障現象,所以在雙網故障集生成中共有25種組合;考慮AB雙網屬于完全相同的冗余網絡,因此通過CPN編程排除其中10種重復的組合方式,最終生成共15種故障現象組合的故障注入測試案例。 本文所選取研究對象為某半實物仿真IMA平臺網絡,該網絡在正常擁有機載狀態監控模塊(Airborne Condition Monitor, ACM)、飛行管理計算機(Flight Management Computer, FMC)與飛行數據記錄儀(Flight Data Recorder, FDR)三個IMA模塊的情況下,加裝了機載北斗通信模塊(Airborne Beidou Communication Module, ABCM)與機載娛樂系統(In Flight Entertainment, IFE),通過故障注入為進一步的測試性驗證工作收集故障數據。該網絡的模塊間通信交聯情況如圖3所示。 圖3 一種IMA平臺網絡通信交聯情況 3.1.1 傳統策略中的測試路徑生成方法 采用基于節點的完全路徑覆蓋算法,對研究對象進行化簡,網絡中各節點的編號如圖5所示。算法輸出結果:Y1={1,2,3};Y2={1,2,4};Y3={1,2,5};Y4={1,3,2};Y5={1,3,5};Y6={1,5};Y7={1,4,2};Y8={1,4,5}。該算法共生成8條路徑,其中每個路徑集合中的元素表示網絡中模塊的編號,例如,第二條測試路徑Y2表示先進行模塊1與模塊2通信過程的故障注入,再進行模塊2與模塊4通信過程的故障注入。該算法生成的8條路徑共含有2×7+1=15個測試任務。 3.1.2 本文所提策略中的測試路徑生成方法 一、從蝴蝶、剪紙、故宮建筑等對稱圖形入手,借生活中的對稱美來感受對聯。而后,講述王羲之、朱元璋、蒲松齡等人巧對故事激發興趣,具體感受對聯的魅力。 采用3.1節提出的基于通信鏈路的IMA平臺網絡測試路徑優化算法,對研究對象進行化簡。構建的通信鏈路方陣Tn×n如表1所示。 表1 通信鏈路方陣 算法輸出結果:Y1={t12,t23,t32,t24,t42,t25};Y2={t13,t35};Y3={t14,t45};Y4={t15}。得到4條針對該IMA平臺網絡的故障注入測試路徑,其中每個路徑集合中的元素表示一個測試任務,例如,第二條測試路徑Y2表示的意思是:先進行模塊1到模塊3的通信過程的故障注入,再進行模塊3到模塊5通信過程的故障注入。4條測試路徑共含11個測試任務。 3.2.1 傳統策略中的測試案例生成方法 傳統的故障注入策略通過列舉所有可注入故障的方式,生成測試案例。本實驗所使用故障注入工具支持15種可注入故障,考慮IMA平臺網絡雙網冗余的工作特性,共225種故障組合,測試案例數過大,因此此處對測試案例的選取進行簡單的優化:根據每種故障現象選擇對應的一種可注入故障,作為故障注入測試案例。根據ARINC-664協議中對故障現象與產生方式的說明[2],選擇對應的可注入故障,如表2所示。考慮雙網冗余,由單網5個可注入故障可知雙網共25種可注入故障組合,即測試案例數為25。 3.2.2 本文所提策略中的測試案例生成方法 在3.1.2節中,通過測試路徑優化算法,得到了故障注入測試的具體順序,即測試任務的先后順序。此處采用2.2節提出的基于CPN模型的故障注入測試案例設計方法,建立測試案例生成模型,為測試任務生成具體的測試案例。CPN工具以圖形與編程相結合的方式描述系統網絡的交聯與演變,憑借其可執行性與仿真便攜性,被認為是網絡復雜系統建模和分析的最佳工具之一[14-15]。CPN模型結構分為庫所、變遷、弧與標記,其中,庫所用橢圓形表示,代表系統的某個階段或狀態;變遷用矩形表示,代表引發系統狀態改變的事件;弧將庫所與變遷連接,代表狀態與事件的演變關系;標記表示模型中的數據,以“著色”的方式劃分類型,可以通過變遷在庫所之間轉移。本文所建立模型如圖4所示。 表2 傳統策略中選擇的可注入故障 圖4 基于CPN的故障注入測試案例生成模型 模型中的標記顏色集(即數據類型)被定義為S,由整型變量a,b與字符串變量s組成,其中a表示故障現象序號,b表示循環次數,s表示故障注入行為描述。模型采取了類似逆向故障樹的結構模式:空白標記從初始庫所“Begin”出發,經變遷Loop A復制到5個故障現象庫所,且各標記顏色集中的a被賦值為所在庫所的序號;然后,隨機地通過與故障現象庫所相連的可注入故障變遷,進入代表故障類型的庫所,記錄該過程,作為A網測試案例;接著,5個標記由Loop B回到初始庫所,在Loop A處復制至序號小于或等于a的故障現象庫所,經過又一次的隨機選擇過程,記錄并生成B網測試案例。模型首先通過隨機選擇的方式,在保證覆蓋所有故障類型的前提下,使得每次仿真生成的測試案例具有隨機性,提高測試強度;并且通過第二次循環中只復制標記到序號小于或等于a的庫所,測試案例數由5×5=25個降至5+4+3+2+1=15個,排除了由于A/B雙網案例對稱重復而導致的等效故障,減少了測試案例數。模型的某次仿真運行的結果如表3所示;其中每條測試案例表示應執行的故障注入操作,例如第二條測試案例表示的意思是:“A網-VL工作參數-注入幀長超出范圍故障-A網丟幀;B網-端口工作參數-注入轉發時延過大故障-B網幀延時。” 表3 故障注入測試案例生成結果 實驗硬件環境:裝有旋極eiMAX故障注入系統的工控機、TTTech_AFDX端系統板卡、華力創通HWA-ASW-24型AFDX交換機。分別使用兩種故障注入策略,對該IMA平臺網絡進行故障注入,觀測各個IMA模塊應用程序的工作狀態并記錄測試時間。在測試任務數、每個測試任務所需的測試案例數、總注入次數以及總測試時間等方面,與使用傳統的故障注入策略的結果進行對比,對比情況如表4所示。 可以看出,本文提出的以測試路徑選取結合測試案例生成的故障注入策略,相比傳統的故障注入策略,在故障注入實驗中保證了注入成功率的同時,減少了總注入次數與總測試時間。 表4 兩種策略的結果對比 本文在分析IMA平臺網絡工作機制與故障現象的基礎上,提出一種IMA平臺網絡故障注入策略。通過故障注入測試路徑優化算法,提高測試有序性且減少測試任務;運用CPN工具進行編程建模,精簡每個測試任務中所需的故障注入測試案例。通過仿真實驗,總結得出以下結論: 1)在測試路徑優化選取與測試案例生成模型的設計過程中,考慮了IMA平臺網絡的復雜結構、通信機制與故障傳播特性,因此,本文提出的故障注入策略能夠適用于實際的IMA平臺網絡故障注入測試。 2)比較傳統策略,本文策略的故障注入總次數減少了56%,總測試時間減少了51%,減少了測試成本。 3)本文策略克服了傳統策略在設計測試路徑與測試案例時的無序性與盲目性缺陷,提高了故障注入的效率,為面向升級改裝的安全性測試驗證提供一種高效的故障樣本收集方案。 [11] 王臣虎.AFDX航空網絡的可靠性建模與性能分析[D].上海:上海交通大學,2012:1-2. (WANG C H. Reliability modeling and performance analysis of AFDX avionics network [D]. Shanghai: Shanghai Jiao Tong University, 2012:1-2.) [12] 劉繼華,陳策.基于變遷的完全路徑覆蓋測試[J].計算機應用,2012,32(11):3075-3077. (LIU J H, CHEN C. Complete path coverage testing based on change [J]. Journal of Computer Applications, 2012, 32(11): 3075-3077.) [13] 楊寧寧.基于遺傳蟻群算法的路徑覆蓋測試數據生成的研究[D].邯鄲:河北工程大學,2013:14-18. (YANG N N. Based on genetic and ant colony algorithm for path coverage test data generation [D]. Handan: Hebei University of Engineering, 2013:14-18.) [14] HU H S, ZHOU M C, LI Z W. Liveness and ratio-enforcing supervision of automated manufacturing systems using Petri nets [J]. IEEE Transactions on Systems, Man, and Cybernetics—Part A: Systems and Humans, 2012, 42(2): 392-403. [15] 董健.基于著色Petri網的列控系統等級轉換建模分析與半實物仿真[D].北京:北京交通大學,2017:8-9. (DONG J. Modeling and semi-physical simulation of level transition based on colored Petri nets [D]. Beijing: Beijing Jiaotong University, 2017:8-9.)2.2 故障注入測試案例設計
3 實例分析

3.1 故障注入測試路徑生成

3.2 故障注入測試案例生成



3.3 結果對比

4 結語