(中國西南電子技術研究所,成都 610036)
隨著技術的發展,航空電子系統(以下簡稱航電系統)從實現方式上必然向著綜合化、通用化、模塊化方向發展[1],同時適航性、安全性要求也越來越高,更加注重系統的設計測試驗證過程。此外,航電系統的開發幾乎都是采用“自頂向下”的設計過程,其開發過程一般包括系統定義、系統設計、軟硬件開發、系統綜合、系統驗證、系統認證、用戶確認等過程,其中系統驗證則是保證系統滿足設計要求的必須手段,也是系統認證、用戶確認的基礎。驗證、認證和確認有觀察(Inspection)、分析(Analysis)、示范(Demonstration)和測試(Test)等4種方法,其中觀察、分析和示范是對不可測試需求項的特殊驗證分析過程,而測試則是對可量化、可監控的過程或數據進行測量比對的驗證方法。
近幾年來,自動化測試工具得到了廣泛的應用,基于性能和過程的自動測試已經有很多探討,但從系統需求出發,驗證系統設計的自動測試方法探討并不多。為此,本文提出了一種基于航空電子系統設計需求的自動測試方法。
航空電子系統需求是描述客戶或使用者期望達到的目標和要求。從需求的階段不同,可分為用戶需求和系統需求。
用戶需求是用戶期望最終系統達到的各種功能、性能要求,但是往往在確定用戶需求不能夠詳細界定系統的各種輸入、輸出條件,故不能直接用于指導系統設計。在論證或前期系統定義階段,系統設計者的主要目標是深度挖掘用戶需求,盡可能的使用戶將需求描述正確、完整、一致、精確和簡明[2]。
系統需求是用專業、系統的語言全面描述用戶或上一級系統的直接需求和隱含的需求。系統需求還需注意可實現性、可驗證性和可追溯性。通過系統需求分析應能將所有需求區分為可測試需求和不可測試需求。對于不可測試的需求應能通過觀察、分析、示范等方法進行驗證,對于可測試的需求在系統設計階段應設計測試用例和測試方法。
在航空電子系統設計階段將依據系統需求進行系統段的詳細設計(SSDD),制定詳細設計文檔(DD)、接口控制文檔(ICD)以及對系統部件的詳細設計要求文檔。
系統測試是在各部件分別完成了各自部件級功能性能測試的基礎上,基于系統需求依據系統詳細設計文檔和接口控制文檔開展的。主要目的是用于驗證系統設計的正確性和各部件在系統流程中工作的正確性。
隨著航空電子系統計算機應用程度的不斷提高,為保證測試的覆蓋性和真實性,系統測試更加強調動態、模擬、綜合,自動測試的優勢就能夠在系統測試中很好地發揮作用[3]。
圖1給出了基于需求的自動測試流程,整個流程包含4個關鍵環節,下面就針對這4個環節中涉及到的執行者和執行產品進行闡述。

圖1 測試流程圖
行業專家挖掘系統需求進行詳細設計后,制定出詳細設計文檔(DD)和接口控制文檔(ICD)。其中DD文檔詳細準確、全面定義了系統在各種輸入條件下的響應過程及輸出結果,ICD文檔定義系統內外各部件的接口格式和協議。這兩份文件就是自動測試系統的需求文件。
行業專家和測試專家根據ICD和DD借助工具軟件編輯生成格式化的接口定義文件、格式化的測試用例文件和測試通路圖,即測試策略。
(1)格式化的接口定義文件是ICD的格式化描述,它不僅包含了接口定義,而且還對其中數據元素的模型進行規定,為后期根據該數據模型生成測試數據;
(2)格式化的測試用例文件是測試用例的格式化描述,描述了測試用例如何使用相關的數據塊按照哪種時序輸入被測系統,和對被測系統輸出的那些數據塊如何進行檢測,同時對檢測結果行業專家給出專家性建議;
(3)測試通路圖是測試用例執行的關系圖,它的每條通路就是一個測試流程,自動測試系統將按照這個流程按照一定策略來執行,給出故障診斷書。因此要求不同通路間應該是正交的。
預處理模塊將根據格式化的接口定義文件和測試用例文件中的描述生成待測試的數據。如“高度”這個數據在某系統中的模型為線性的,那么它將產生邊界值和中間值的測試數據。同時,預處理模塊也將根據測試用例文件生成驗證腳本和專家建議書。
自動測試模塊是系統自動測試的總控單元,自動調動測試環境各單元工作在相應的測試狀態,按照測試策略規定的順序執行測試,并自動檢查記錄測試結果,生成測試報告。
自動測試模塊以測試通路圖為序,按照下面的算法執行并形成分析故障樹:
(1)讀取一條通路,形成測試用例集X={x1,x2,x3,…,xi,…,xn};
(2)順序讀取xi│i∈(1,2,3,…,n),進行測試;
(3)如果xi測試通過,那么i=i+1,如果i>n,終止算法,否則重復步驟2;
(4)如果xi測試未通過,姑且認為xi有問題,那么從待測集合中去掉xi形成新的測試用例集X={x1,x2,x3,…,xi-1,xi+1,…,xn},i=1,如果i>n,終止算法,否則重復步驟2;
(5)如果xi測試未通過,若測試用例是前后相關的,也有可能是xi-1引起的,那么從待側集合中去掉xi-1形成新的測試用例集X={x1,x2,x3,…,xi-2,xi+1,…,xn},i=1,如果i>n,終止算法,否則重復步驟2。
測試策略圖是整個系統測試的過程描述,如圖2所示,它由若干個測試通路組成。由于上面算法的復雜度為nlgn,相對比較耗時,為了加速測試的進行,可以在保證不同測試通路間正交的前提下,盡可能地縮短每條測試通路的長度,以達到加速測試速度。
自動測試模塊可根據測試任務的需要既可選擇全部測試通路進行全部測試項目的測試,也可選擇需要測試通路進行部分測試項目的測試。
不同測試通路因為是正交的,所以測試通路間的測試用例是不相互影響的。在自動測試模塊的控制下,當上一測試通道完成后,根據測試策略自動進入下一測試通道的測試,直到測試策略中的所有通道測試完成。

圖2 測試通路執行過程
在某航電子系統測試系統設計過程中,采用了上述方法進行設計。首先進行了測試系統網絡優化設計,即將目標測試系統復雜拓撲結構優化為總線結構,如圖3所示??偩€上產生各類激勵數據,在測試系統中各單元直接可見,并能根據需要選擇使用自身所需要的數據,接受系統控制實現自動測試。
自動測試系統主要由分布式計算機控制處理系統和激勵系統組成。其中,分布式計算機控制處理系統完成模擬、仿真、動態數據產生、測試控制等功能,與機載系統及激勵系統接口;激勵系統在系統集中控制下產生需要的各種射頻及數據激勵信號,并能進行量化測試。

圖3 對目標系統的改造示意圖
被測系統即為機載航空電子系統,其相互間的物理及邏輯關系與真實裝機情況一致。
該系統網絡是總線結構,自動測試軟件可以分布在網絡中任意節點,仿真目標系統中需要的輸入數據,并根據需求自動采集目標系統的響應,根據需求形成測試結果,系統總體構架如圖4所示。

圖4 航電子系統自動測試系統總體架構
測試腳本是測試過程的格式化描述,它是由一系列測試用例組成,能夠引用格式化的接口控制文件,能夠被預處理模塊和自動測試模塊程序解釋執行。格式化的規則可根據具體使用的工具和需要進行統一嚴格的規定。下面是本測試系統設計的一個測試用例示意:
{
/*這是第一個測試用例*/
[1001]
[
驗證飛行啟動過程,導航設備解算航參情況
]
[
/*說明段*/
‘d1cn01.xml’
‘cnd101.xml’
時間間隔 1ms
時間抖動 1ms
D1CN01-05-init:D1CN01 (邏輯塊號=5,物理塊號=1,狀態=初始態)
D1CN01-05-start:D1CN01 (邏輯塊號=5,物理塊號=1, 狀態=開始)
CND102-03:CND101 (邏輯塊號=3,物理塊號=2)
]
[
/*時序段*/
D1CN01-05-init ->
waitfor 50
D1CN01-05-start -> CND102-03
]
[
/*驗證段*/
D1CN01-05-start: 空速 = 1000
Note: 空速不是1000說明,系統啟動過慢,或者溫度低于臨界值,或者系統故障。
FuncCmp(D1CN01-05-start:經度,D1CN01-05-start:維度,D1CN01-05-start:高度,CND102-03:方位,CND102-03:距離,CND102-03:俯仰)
Note: 系統解算出現異常。
]
}
本測試系統測試腳本主要的語法規則如下:
(1)測試腳本由一個或多個用例組成;
(2)每個測試用例均以“{”和“}”包含,用例中包含編號段、說明段、時序段和驗證段,每個段采用“[”和“]”包含;
(3)編號段,編號是一個測試用例的唯一表示,它是由十進制數字組成的在測試策略圖中一個測試用例的唯一標識;
(4)說明段聲明了時序段和驗證段所使用的資源,如所使用的ICD文件和變量的定義,后面方便時序段引用;同時說明段也定義了本測試用例的時間間隔和時間抖動值(即時間精度要求);例子中‘d1cn01.xml’和‘cnd101.xml’ 是后面引用的格式化接口控制文件的聲明;“D1CN01-05-init : D1CN01 (邏輯塊號=5, 物理塊號=1,狀態=初始態)”則定義了“D1CN01-05-init”這個變量;時間間隔和時間抖動均為1 ms;
(5)時序段定義了測試的激勵數據和輸出數據及其時序,測試系統按照給定的時序給被測系統輸入一系列數據,同時檢測系統對其的響應。例子中,“D1CN01-05-start -> CND102-03”左側的‘D1CN01-05-start’表示輸入塊而右側的‘CND102-03’表示系統對‘D1CN01-05-start’塊的響應輸出;而‘waitfor’則表示等待時間,合在一起就是按照一定的時序給被測系統輸入一系列數據,檢測系統對其的響應;
(6)驗證段定義了該次測試的驗證方式和失敗原因/建議。對系統的響應進行運算判斷系統的響應是否符合系統的設計,為了更方便進行計算驗證的方式是使用Lua腳本;
(7)注釋,在腳本中任意位置需要進行注釋說明的地方可以進行注釋,每個注釋采用“/*”和“*/”包含,解析軟件不對其進行處理。
自動測試系統的最終輸出將包含測試日志、測試故障分析和測試報告3份報告。
(1)測試日志:是測試過程的客觀描述,它詳細記錄整個測試過程;
(2)測試故障分析:根據重新分析整理測試過程,形成故障分析樹,并以圖形化的方式直觀的顯示;
(3)測試報告:統計測試過程中的各類數據,同時匯總綜合專家庫中的建議和故障分析樹中的推測,形成要求格式的測試報告。
本文論述了應用于航空電子系統驗證的基于需求自動測試分析系統的原理和流程,可以看出自動測試有3個關鍵方面:
(1)形式化描述測試接口和過程:系統設計文件(DD、ICD等)往往是采用航空電子系統專用語言,而非格式化語言進行描述。格式化是自動分析測試的前提,需要收集大量行業信息素材,分類歸納最后給出準確的格式化描述;
(2)測試策略設計:測試策略設計中應以系統故障模式及影響分析確定的故障樹模型和系統設計流程進行設計。為了加速測試過程,讓結果更具時效性,需要對生成故障樹的過程進行簡化,目前一些可用的方式有基于Petri網(知識-對象-推理)的方法和基于BP神經網絡(學習期-工作期)等多種方式[4];
(3)對數據的有效處理:測試完成會留下大量的數據,這將為我們分析目標系統中存在和潛在的問題提供支撐。可以利用如正交試驗(DOE)等來解決主要影響因素的選取和輸出特性目標的確定[5]。
如果說測試是科學的基礎,那么自動分析測試就是科學技術的提速機,為科學技術的發展提供充足的動力。
參考文獻:
[1] 姚拱元,吳建明,陳若玉.航空電子系統綜合技術的發展與模塊化趨勢[J].航空電子技術,2002,33(1):1-10,44.
YAO Gong-yuan,WU Jian-ming,CHEN Ruo-yu.The Growth of Avionics Integration Technologies and Trends of The Modularization[J]. Avionics Technology, 2002,33(1):1-10,44.(in Chinese)
[2] 盧梅,李明樹.軟件需求工程-工具及方法評述[J].計算機研究與發展,1999,36(11):1289-1300.
LU Mei,LI Ming-shu.Review of Methods and Tools of Software Requirements Engineering[J]. Journal of Computer Research & Development,1999,36(11):1289-1300.(in Chinese)
[3] 史彥斌.航空電子綜合測試系統的發展現狀及趨勢[J].計測技術,2005,25(4):1,31.
SHI Yan-bin.The Development Actuality and Tendency of Aviation Electronic Equipment Integrated Detection System[J].Aviation Metrology & Measurement Technology, 2005,25(4):1,31.(in Chinese)
[4] 馬敏.并行多任務自動測試系統分層化建模及其關鍵技術研究[D].成都:電子科技大學, 2009.
MA Min.Study on Hierarchical Modeling Method and Key Technologies of Parallel Multi-task Automatic Test System[D].Chengdu:University of Electronic Science and Technology of China,2009. (in Chinese)
[5] 于秀山.正交試驗設計方法在測試用例設計中的應用[J].計算機工程與應用,2004,20(18):62-63.
YU Xiu-shan.The Application of Orthogonal Testing Method in Test Case Design[J].Computer Engineering and Applications, 2004,20(18):62-63.(in Chinese)