?

民用飛機機組告警系統試驗室自動化測試技術研究

2016-05-14 09:31王煥宇
科技創新導報 2016年6期
關鍵詞:自動測試腳本

王煥宇

摘 要:該文實現了機組告警系統邏輯設計結果到試驗用例、試驗腳本與試驗結果自動測試工具的開發,能夠自動化生成測試用例、腳本與結果,節省了大量試驗用例與試驗腳本開發時間,保障了對設計邏輯的準確讀取分析,避免了人為出錯,實現了試驗結果的自動記錄與保存?;诖藴y試腳本自動化生成工具,也可以應用于發動機指示頁面、主飛行顯示器指示、簡圖頁、機載記錄系統、機載維護系統等邏輯復雜、參數較多、需大量開發測試腳本的試驗應用當中,具有很強的擴展性。該文成果應用于某型機組告警系統邏輯試驗室驗證中,取得了良好效果。

關鍵詞:腳本 自動測試 后綴表達式 機組告警系統 Python

中圖分類號:TP206 文獻標識碼:A 文章編號:1674-098X(2016)02(c)-0007-05

Research on Auto Test About CAS System of Civil Aircraft

Wang Huanyu

(State Key Laboratory of Civil Aircraft Flight Simulator, Shanghai Aircraft Design and Research Institute, Shanghai, 201210, China)

Abstract:With results accurate, it is achieved that test case, test script and test report are generated automatically from CAS (Crew Alert System) design, which is time saving.It can be applied to other tests also, i.e. The Engine Indication test, Primary Flight Display test, Synoptic Page test, Flight Record System test and Onboard Maintenance System test, which are characterized with a great quantity of parameters, complicated logic and numerous test python scripts to be developed. Dedicated to a CAS test for a certain system, this tool works well as expected.

Key Words:Script; Auto Test; Suffix Expression; Crew Alert System; Python

民用飛機機組告警系統與IMA、顯示系統、燈光告警系統、音響告警系統集成程度日漸提高,飛機各系統通過不同級別的機組告警信息提示飛行員,告知相應的系統狀態,以便飛行員采取相應的處理程序。這給系統設計與取證帶來了難度,也給系統地面集成驗證試驗帶來了挑戰。該文通過研究某型民用飛機機組告警系統架構與試驗平臺功能,開發了一套自動化測試腳本生成工具與交互界面,讓大規模批量、全邏輯覆蓋的試驗成為可能,大幅提高了試驗效率,在系統級需求驗證試驗中取得了很好的效果。

1 民用飛機機組告警系統架構

某型民用飛機機組告警系統由駐留在IMA中的應用軟件、主警告燈、主警戒燈、音響告警抑制開關及下視顯示器等組成,通過顯示文本、離散通告、語音警告、燈警告或以上組合給飛行員提供警告、警戒、提示及狀態等機組告警功能。駐留在IMA中的機組告警系統應用軟件接收來自飛機各系統的狀態輸入,按優先級順序通過下視顯示,并能通過控制板進行翻頁等選擇。當需要時,提供音響告警和駕駛艙燈驅動提供觸發信號,為飛行員提供音響和燈警告。機組告警優先級排序級別定義如表1所示[1]。

為了避免在一定階段出現不必要的警告,給機組帶來操作負擔和干擾,機組告警系統會對一些特定的告警在特定的時間、構型和飛行階段進行抑制。系統架構如圖1所示。

2 民用飛機航電系統集成試驗平臺架構

某型飛機航電系統集成驗證平臺(System Integration

and Verification Bench,SIVB)是一套用于航電核心處理系統、顯示系統、機載記錄系統、機載維護等系統集成驗證大型試驗設施,具有系統仿真、數據切換、數據采集與處理等功能。系統集成驗證平臺集成了機載系統接口控制文件(Interface Control Document,ICD)的數據信息,通過仿真數據網絡(Common Simulation Interface,CSI)與配套A664、A429、A825、離散、模擬等航空總線接口I/O板卡,可以將系統仿真數據通過真實機載數據接口與機載系統進行通信與交互,從而實現系統仿真的功能。通過數據采集系統(Analyzer)實現將真實機載網絡數據采集并發送到仿真數據網絡中,供系統集成驗證平臺讀取,并能夠按ICD數據格式進行解析、顯示和處理。整個系統架構如圖2所示。

3 機組告警系統邏輯自動化測試方案

如圖3中所示,使用航電系統集成驗證平臺有3種基本方式能夠輸出系統仿真器數據,如系統A仿真器可以通過以下方式輸出真實物理接口的數據參數。

(1)在數據采集軟件Data Browser上直接改寫相應的參數值。Data Browser可以將采到的數據按照ICD的格式進行顯示,即Data Display功能。也能通過在相應的ICD參數上賦值的方式進行數據設置,即Data Set功能。該方法使用簡單,能夠直接操作對應參數,但不適用于大規模的、需要反復進行數據設置的情況。

(2)在腳本執行器Script上輸入一條命令行,如執行A664.

Message1.DS1.Parameter1.Vaule=100,則參數Parameter1會設置成100,并通過系統A仿真器的真實A664接口板卡進行數據發送。該方法使用也較簡單,當但也不適用于大規模的、需要反復進行數據設置的情況。

(3)將需要執行的命令通過Python腳本,同樣由Script進行執行,則可實現大規模的或需要反復進行數據設置,但若人工編寫測試用例較多的試驗腳本時重復勞動多,工作量巨大,有出錯的可能。

該文針對第三種實現機制,設計了從機組告警系統設計需求邏輯自動導入解析,自動生成測試腳本(如圖4),自動生成測試結果的工具及流程,實現了測試的自動化。

該文使用的軟件如下[2]。

(1)Microsoft Office,Excel,2003。用于記錄機組告警系統的邏輯,及每條邏輯對應的ICD信息。

(2)PyQt,PyQt4-4.11.4-gpl-Py2.7-Qt4.8.7-x64。用于設計GUI用戶界面。

(3)Python,python-2.7.11rc1.amd64。用于開發及運行腳本。

(4)Pywin32,pywin32-219.win-amd64-py2.7。用于使用Python開發win32應用。

(5)XLRD,xlrd-0.9.4.tar。用于讀取Excel的python模塊。

(6)Pyinstaller,pyinstaller-2.0。用于將.py文件轉化為.exe文件。

測試腳本生產流程與關鍵點如下。

(1)讀取表格中的邏輯表達式。如圖5所示,設計用戶界面,選取相應的Excel邏輯文件,并對邏輯進行去空格等預處理,判斷該系統有幾種等級的機組告警信息,并激活相應的確認框(Check Box),以便試驗人員可以勾選。以邏輯TD(3,A==1||B==1||Inval(C)&&Inval(D))為例,取得該邏輯后逐一分析。

(2)判斷是否為邏輯符號。根據機組告警系統邏輯編寫規范,參與邏輯運算的表達式按優先級從高到低見表2(優先級數值越低,優先級越高)。邏輯優先級的確定是為了下一步邏輯的解析與運算。如TD(3, || ||&&) ‘。

(3)判斷是否為參數表達式。邏輯表達式中非邏輯符號的都是參數表達式,如A==1,B==1,Inval(C)和Inval(D)。

(4)將邏輯表達式轉化為后綴表達式。后綴表達式(也叫逆波蘭表達式)是計算機可識別的順序操作表達方式,轉化后沒有括號參與,利于計算邏輯。按照以下步驟進行轉化:

①初始化邏輯棧Stack_Logic與存放中間結果的棧Stack_Temp。

②從左至由掃描讀取邏輯表達式,如果是參數表達,將其壓至Stack_Logic。

③從左至由掃描讀取邏輯表達式,如果是邏輯表達:

第一,如果Stack_Temp為空,或棧頂為(‘,將其壓至Stack_Temp;

第二,如果Stack_Temp棧頂優先級較高,也將其壓至 Stack_Temp;

第三,如果Stack_Temp棧頂優先級較低,將Stack_Temp棧頂邏輯彈出,將其壓至Stack_Logic,轉到步驟c-1。

④遇到括號時:

第一,如果是(‘,將其壓至Stack_ Temp;

第二,如果是),將Stack_Temp棧頂邏輯彈出,將其壓至Stack_Logic,直到遇到(‘,并將這一對括號丟棄。

⑤重復步驟②到步驟④,直到邏輯表達式的最右邊,將Stack_Temp棧剩余邏輯依次彈出,將其依次壓至棧Stack_Logic。完成后棧Stack_Logic從棧底到棧頂即為邏輯的后綴表達式。

如表3所示,為TD(3,A==1||B==1||Inval(C)&&Inval(D))的轉化過程,最后轉化為 A==1,B==1,||, Inval(C), Inval(D),&&,||,TD3,以字符,相隔的后綴表達式。

(5)將參數表達式分解為參數與參數操作,確定操作的類型與數值。如將A==1,B==1,Inval(C)和Inval

(D)分解為參數A,B,C'和'D,并確定以上4個參數的操作類型為賦值,賦值,賦有效性和賦有效性,最后確定每個參數的操作數值為1,1,無效和無效。

(6)將分解到的參數進行關聯到機載系統ICD。通過查表的方式,如將參數A聯查到對應的ICD,一般需要確定如下幾項。

①A429的SDI,SSM與參數定義;

②A664的VL,FSB與參數定義;

③A825的FS與參數定義;

④離散量與模擬量的參數定義。

(7)將分解到的參數操作進行定義,確定邏輯1與邏輯0的操作步驟。

①賦值,確定邏輯1或邏輯0時是否為賦參數值為1或0、是大于或小于某個數;

②賦有效性,邏輯1或邏輯0時是否為有效或無效。

(8)將步驟6與步驟7確定的參數與操作分別設置,將參數表達式對應的邏輯值帶入后綴表達式,進行結果輸出。如對'A==0,'B==0,Inval(C)和Inval(D),對應的邏輯值0,0,1和1,分別帶入后綴表達式中,按以下進行計算。

①讀取邏輯棧Stack_Logic,初始化存放中間結果的棧Stack_Temp;

②從棧Stack_Logic彈出元素,如果是參數表達式,查參數表達式對應的邏輯值為1還是0,將邏輯值壓至 Stack_Temp;

③從棧Stack_Logic彈出元素,如果是邏輯符號,對 Stack_ Temp中的元素進行運算后,結果壓至Stack_Logic。

以A==0,B==0,Inval(C)和Inval(D)分別對應邏輯值0,0,1和1為例,見表4,說明后綴表達式的邏輯計算過程。

(9)遍歷參數表達式的各種可能,可以得到不同的測試用例。將不同的測試用例輸出成航電系統集成驗證平臺定義的Python腳本格式,則可以得到大規模、全邏輯的測試腳本。在測試腳本中,編寫語句,彈出測試用例之間的對話框,供試驗人員判斷并進行選擇試驗結果,對某條機組告警信息進行確認是顯示還是不顯示,將結果打印成CSV格式的測試結果中。

在某系統機組告警邏輯試驗中,應用本文實現的成果自動生成測試腳本,針對61條機組告警信息,總計生成3332個測試用例,54077行測試代碼,快速完成了試驗用例與腳本的開發工作。如圖3所示,通過腳本執行器執行生成的腳本,腳本命令由通用仿真接口網絡下載至對應系統仿真器上,進而輸出了系統真是物理接口信號,模擬了各系統的狀態與數據,通過查看系統系統的輸出響應,并記錄試驗結果,從而快速完成了各項告警系統功能試驗。

4 結語

該文實現了機組告警系統邏輯設計結果到試驗用例、試驗腳本與試驗結果自動測試工具的開發,工具架構合理,流程清晰,能夠自動化生成測試用例、腳本與結果,節省了大量試驗用例與試驗腳本開發時間,保障了對設計邏輯的準確讀取分析,避免了人為出錯,實現了試驗結果的自動記錄與保存。

使用pyinstaller將此測試腳本自動化生成工具生成.exe格式單獨文件,可以發布給不同的試驗人員脫離python環境進行使用,具有較強的應用性?;诖藴y試腳本自動化生成工具,也可以應用于發動機指示頁面、主飛行顯示器指示、簡圖頁、機載記錄系統、機載維護系統等邏輯復雜、參數較多、需大量開發測試腳本的試驗應用當中,具有很強的擴展性。

參考文獻

[1] 張博.民用飛機機組告警系統設計[J].中國高新技術企業,2014(26):29-30.

[2] (挪)Magnus Lie Hetland,著.Python基礎教程[M].2版.司維,曾軍崴,譚穎華,譯.北京,人民郵電出版社,2014.

猜你喜歡
自動測試腳本
酒駕
JXG-50S型相敏軌道電路接收器自動測試臺
數據庫系統shell腳本應用
可并行測試的電磁兼容自動測試系統的實現
關于某型雷達自動測試系統的幾點認識和建議
快樂假期
一種衛星低頻接口自動測試系統
91香蕉高清国产线观看免费-97夜夜澡人人爽人人喊a-99久久久无码国产精品9-国产亚洲日韩欧美综合