文/劉亞民
隨著對(duì)飛機(jī)作戰(zhàn)能力、執(zhí)行任務(wù)難度以及飛行環(huán)境適應(yīng)性的要求不斷提高,機(jī)載傳感器以及設(shè)備的功能也日趨復(fù)雜,機(jī)內(nèi)各級(jí)別告警信號(hào)的數(shù)量也日益增多。機(jī)載集中告警設(shè)備對(duì)機(jī)上設(shè)備發(fā)送的告警信號(hào)及其告警優(yōu)先級(jí)進(jìn)行綜合處理,及時(shí)向飛行員提示當(dāng)前告警故障,確保飛機(jī)安全,提高飛行安全性和可靠性。
為確保機(jī)載集中告警設(shè)備功能正常,避免飛行事故,需對(duì)告警設(shè)備進(jìn)行嚴(yán)格測(cè)試,以期被測(cè)設(shè)備能夠?qū)y(cè)試設(shè)備發(fā)送的信號(hào)做出正確的響應(yīng)。機(jī)載集中告警設(shè)備應(yīng)處理的數(shù)據(jù)總線信號(hào)數(shù)量繁多,邏輯關(guān)系復(fù)雜,原用測(cè)試環(huán)境是測(cè)試人員手動(dòng)依據(jù)測(cè)試用例人為點(diǎn)擊測(cè)試軟件界面上的按鈕,模擬機(jī)上設(shè)備發(fā)送各種告警測(cè)試信號(hào),并根據(jù)界面上所顯示的等級(jí)告警信息是否符合測(cè)試用例的預(yù)期測(cè)試結(jié)果,判斷測(cè)試結(jié)果是否正確。采用人工方式逐個(gè)按測(cè)試用例輸入測(cè)試信號(hào),并判定測(cè)試通過,存在測(cè)試效率低,準(zhǔn)確性不穩(wěn)定,成本高等問題。另外,依據(jù)機(jī)載集中告警設(shè)備的測(cè)試需求而編制的信號(hào)發(fā)送界面,存在規(guī)模龐大、維護(hù)困難、更改頻繁等問題。因此,尋求一種減少人為介入、自動(dòng)化程度高、可擴(kuò)展性好的解決方案。
本文中的自動(dòng)化測(cè)試軟件是為某型飛機(jī)的機(jī)載集中告警設(shè)備而設(shè)計(jì)的,包含了測(cè)試用例數(shù)據(jù)庫和測(cè)試軟件兩個(gè)部分,全面考慮了各測(cè)試用例中被測(cè)信號(hào)與期望結(jié)果之間的邏輯關(guān)系、總線通信數(shù)據(jù)與告警數(shù)據(jù)之間的數(shù)據(jù)結(jié)構(gòu)等,充分考慮到后期因需求頻繁變化導(dǎo)致測(cè)試用例變化的情況。
為提高可靠性,機(jī)載集中告警設(shè)備擁有兩套控制平臺(tái),互為備份,確保在某一平臺(tái)故障時(shí)能實(shí)施降級(jí)處理,保證設(shè)備繼續(xù)運(yùn)行。與機(jī)載集中告警設(shè)備進(jìn)行交互的機(jī)上系統(tǒng)有約二十多個(gè),交互信號(hào)形式主要包含ARINC429總線數(shù)據(jù)和離散信號(hào),其中ARINC429總線數(shù)據(jù)類型多達(dá)一百多種。機(jī)載集中告警設(shè)備依據(jù)通信協(xié)議及處理需求的要求,將各路ARINC429總線數(shù)據(jù)以及離散信號(hào)進(jìn)行邏輯分析,并按照一定策略將緊急程度不同的等級(jí)告警信息以ARINC429總線數(shù)據(jù)的形式發(fā)送給顯示、音頻及記錄設(shè)備等,為飛行員提供視覺和聽覺告警。
圖1:數(shù)據(jù)庫中各表格的關(guān)系圖
圖2:自動(dòng)化測(cè)試軟件模塊組成
圖3:自動(dòng)測(cè)試執(zhí)行模塊的工作流程
由此可見,機(jī)載集中告警設(shè)備具有交互設(shè)備數(shù)量多、處理信息量龐大、邏輯判斷復(fù)雜等特點(diǎn)。此外,該設(shè)備的研制過程還存在數(shù)據(jù)處理邏輯、ICD變更頻繁等問題。分析機(jī)載集中告警設(shè)備的產(chǎn)品及研制過程特點(diǎn),所設(shè)計(jì)的自動(dòng)化測(cè)試軟件需具備以下特征:
(1)能夠適應(yīng)多路ARINC429總線交互的測(cè)試環(huán)境。
(2)能夠涵蓋所有交互信號(hào),建立符合告警測(cè)試信號(hào)輸入和等級(jí)告警信息輸出的復(fù)雜邏輯關(guān)系的測(cè)試處理策略。
(3)能夠提供友好的用戶界面,方便操作人員根據(jù)ICD的內(nèi)容對(duì)告警測(cè)試信號(hào)、等級(jí)告警信息、測(cè)試用例等數(shù)據(jù)信息進(jìn)行編輯。
(4)自動(dòng)批量執(zhí)行測(cè)試用例,測(cè)試過程應(yīng)為人不在環(huán)的閉環(huán)自動(dòng)測(cè)試,即應(yīng)能模擬機(jī)上各系統(tǒng)通過各自ARINC429總線自動(dòng)發(fā)送告警測(cè)試信號(hào),并針對(duì)機(jī)載集中告警設(shè)備通過ARINC429總線回復(fù)的等級(jí)告警信息。
(5)能夠進(jìn)行自動(dòng)分析判別,在界面上實(shí)時(shí)顯示測(cè)試結(jié)果。
(6)能根據(jù)測(cè)試結(jié)果自動(dòng)生成并保存測(cè)試報(bào)告。
結(jié)合通信協(xié)議中機(jī)上各系統(tǒng)發(fā)送的告警測(cè)試信號(hào)以及機(jī)載集中告警設(shè)備輸出的等級(jí)告警信息的特征,自動(dòng)化測(cè)試軟件的數(shù)據(jù)庫主要分為這幾個(gè)部分:總線信號(hào)位域值域表、總線信號(hào)位域表、總線信號(hào)表、總線數(shù)據(jù)塊表、測(cè)試輸入表、預(yù)期測(cè)試結(jié)果表等。各表之間的關(guān)系如圖1所示。
3.1.1 總線信號(hào)位域值域表
總線信號(hào)位域值域表保存每個(gè)ARINC429總線數(shù)據(jù)中的各個(gè)位域的值域定義,包括值域所包含的各數(shù)值、對(duì)應(yīng)的數(shù)值含義、所屬的ARINC429總線數(shù)據(jù)的位域等字段。
3.1.2 總線信號(hào)位域表
總線信號(hào)位域表保存每個(gè)ARINC429總線數(shù)據(jù)中各個(gè)位域的定義,包括位域名稱、起始位置和終止位置、所屬的ARINC429總線數(shù)據(jù)等字段。
3.1.3 總線信號(hào)表
總線信號(hào)表保存著機(jī)上系統(tǒng)發(fā)送給機(jī)載集中告警設(shè)備的和機(jī)載集中告警設(shè)備回復(fù)的每個(gè)ARINC429總線數(shù)據(jù)的定義,包括總線數(shù)據(jù)名稱、規(guī)范號(hào)、Label號(hào)、在數(shù)據(jù)塊中的位置、所屬的ARINC429總線數(shù)據(jù)塊等字段。
3.1.4 總線數(shù)據(jù)塊表
總線數(shù)據(jù)塊表保存著ICD中所定義的每個(gè)ARINC429數(shù)據(jù)塊的定義,包括總線數(shù)據(jù)塊名稱、規(guī)范號(hào)、傳輸方向、傳輸通道號(hào)、傳輸類型、傳輸周期等字段。
3.1.5 測(cè)試輸入表
測(cè)試輸入表用來存放自動(dòng)化測(cè)試軟件在每個(gè)測(cè)試用例中向機(jī)載集中告警設(shè)備發(fā)送的測(cè)試輸入定義,包括測(cè)試用例標(biāo)識(shí)號(hào)、測(cè)試步驟號(hào)、測(cè)試輸入的總線數(shù)據(jù)塊規(guī)范號(hào)、總線數(shù)據(jù)規(guī)范號(hào)及其中各個(gè)位域的值等。
3.1.6 預(yù)期測(cè)試結(jié)果表
預(yù)期結(jié)果表用來保存每個(gè)測(cè)試用例中期望從機(jī)載集中告警設(shè)備處接收到的測(cè)試結(jié)果定義,與測(cè)試輸入表中的輸入定義存在對(duì)應(yīng)關(guān)系,包括測(cè)試用例標(biāo)識(shí)號(hào)、測(cè)試步驟號(hào)、預(yù)期接收的總線數(shù)據(jù)塊規(guī)范號(hào)、總線數(shù)據(jù)規(guī)范號(hào)及其中各個(gè)位域的值等。
自動(dòng)化測(cè)試軟件運(yùn)行在Windows操作系統(tǒng)中,使用C#語言進(jìn)行開發(fā),不僅擁有簡(jiǎn)單友好的自動(dòng)測(cè)試操作界面,測(cè)試人員可以直觀地監(jiān)控當(dāng)前每個(gè)測(cè)試輸入、預(yù)期結(jié)果、實(shí)測(cè)數(shù)據(jù)以及用例通過情況,而且提供編輯數(shù)據(jù)庫中ARINC429總線信號(hào)、ARINC429總線數(shù)據(jù)塊、測(cè)試用例設(shè)計(jì)的用戶界面,解決了后期因ICD或者處理邏輯變更而導(dǎo)致的總線信號(hào)或者測(cè)試用例設(shè)計(jì)的變化問題。圖2是自動(dòng)化測(cè)試軟件的模塊組成,主要包含六個(gè)模塊:數(shù)據(jù)庫管理模塊、通信協(xié)議管理模塊、測(cè)試用例管理模塊、ARINC429總線通信模塊、自動(dòng)測(cè)試執(zhí)行模塊、測(cè)試結(jié)果輸出模塊。
3.2.1 數(shù)據(jù)庫管理模塊
數(shù)據(jù)庫管理模塊是測(cè)試用例管理模塊、通信協(xié)議管理模塊以及自動(dòng)測(cè)試執(zhí)行模塊訪問數(shù)據(jù)庫的中間層,通過使用ADO.NET組件與數(shù)據(jù)庫建立連接,或進(jìn)行數(shù)據(jù)交互。ADO.NET提供了DataSet類,可通過DataAdapter類中的Fill方法將數(shù)據(jù)庫中各個(gè)表的數(shù)據(jù)存儲(chǔ)入DataSet中,在內(nèi)存中建立一個(gè)訪問數(shù)據(jù)庫的程序模塊與數(shù)據(jù)庫之間的數(shù)據(jù)緩沖區(qū),這樣可以斷開數(shù)據(jù)庫處理其中的數(shù)據(jù),避免頻繁訪問數(shù)據(jù)庫。由于DataSet與基礎(chǔ)數(shù)據(jù)庫斷開連接,代碼無需經(jīng)常調(diào)用數(shù)據(jù)庫,因而顯著地提高了性能。
初始時(shí),數(shù)據(jù)庫管理模塊通過OleDbConnection實(shí)現(xiàn)與數(shù)據(jù)庫之間建立連接,通過Fill方法將數(shù)據(jù)庫中的總線信號(hào)位域值域表、總線信號(hào)位域表等各表數(shù)據(jù)存入DataSet中。同時(shí),定義多個(gè)操作函數(shù)實(shí)現(xiàn)對(duì)各表進(jìn)行查詢、刪除、插入、更新操作。對(duì)數(shù)據(jù)庫各表的操作主要使用了微軟公司提供的LINQ技術(shù),它的最大特點(diǎn)就是能夠把查詢功能直接引入到.NET Framework3.5所支持的編程語言(如C#、Visual Basic.NET)中,并整合為一體,從而查詢操作成為編程語言的一部分,可以向創(chuàng)建編程語言代碼的方法一樣,方便地創(chuàng)建查詢操作表達(dá)式。
3.2.2 通信協(xié)議管理模塊
通信協(xié)議管理模塊是用戶通過特定界面管理數(shù)據(jù)庫中總線信號(hào)位域值域表、總線信號(hào)位域表、總線信號(hào)表、總線數(shù)據(jù)塊表的接口,用戶可以根據(jù)通信協(xié)議的內(nèi)容靈活配置各ARINC429總線數(shù)據(jù)塊、數(shù)據(jù)塊中各ARINC429總線信號(hào)、總線信號(hào)中各位域以及位域的各個(gè)值域數(shù)值,為設(shè)計(jì)測(cè)試用例中的測(cè)試輸入以及預(yù)期輸出結(jié)果提供基礎(chǔ)信息。由于ARINC429總線信號(hào)與ARINC429總線數(shù)據(jù)塊之間、位域以及位域中的各個(gè)值域數(shù)值存在一對(duì)多的關(guān)系,ARINC429總線信號(hào)和總線信號(hào)中的位域存在一對(duì)一的關(guān)系,因此軟件設(shè)計(jì)了三個(gè)頁面,分別用于根據(jù)ICD的內(nèi)容編輯ARINC429總線信號(hào)、各個(gè)位域以及ARINC429總線數(shù)據(jù)塊的配置,操作人員在定義各個(gè)ARINC429總線信號(hào)的具體信息后,才能將其與對(duì)應(yīng)的位域及ARINC429總線數(shù)據(jù)塊進(jìn)行關(guān)聯(lián)定義。
圖4:自動(dòng)測(cè)試軟件信息編輯界面
3.2.3 測(cè)試用例管理模塊
由于單一的ARINC429數(shù)據(jù)塊的測(cè)試輸入和預(yù)期輸出不能滿足機(jī)載集中告警設(shè)備的功能驗(yàn)證要求,測(cè)試用例管理模塊通過界面獲取操作人員輸入的ARINC429總線數(shù)據(jù)塊及其中各個(gè)信號(hào)的賦值,并按照操作人員輸入的測(cè)試步驟數(shù)據(jù)依次將單一的ARINC429數(shù)據(jù)塊的輸入及其對(duì)應(yīng)的預(yù)期測(cè)試輸出進(jìn)行組合,形成復(fù)雜的測(cè)試用例存入數(shù)據(jù)庫中。
3.2.4 ARINC429總線通信模塊
ARINC429總線通信模塊是自動(dòng)化測(cè)試軟件與專用測(cè)試設(shè)備中多個(gè)ARINC429通信擴(kuò)展卡EP-H5272直接進(jìn)行交互的驅(qū)動(dòng)層,將ARINC429通信擴(kuò)展卡的參數(shù)設(shè)置、打開、關(guān)閉、讀寫的函數(shù)進(jìn)行封裝,更易于進(jìn)行底層硬件的調(diào)試與維護(hù)??紤]機(jī)載集中告警設(shè)備響應(yīng)較為迅速以及自動(dòng)化測(cè)試軟件進(jìn)行測(cè)試分析的實(shí)時(shí)性,在ARINC429總線通信模塊中設(shè)計(jì)了一個(gè)讀取ARINC429通信擴(kuò)展卡數(shù)據(jù)的線程,將ARINC429總線數(shù)據(jù)的讀取與其他線程如主界面線程分開,避免因讀取通信擴(kuò)展卡數(shù)據(jù)導(dǎo)致響應(yīng)延遲的問題,該讀取線程由自動(dòng)測(cè)試執(zhí)行模塊中的主界面線程負(fù)責(zé)它的開啟和結(jié)束。
3.2.5 自動(dòng)測(cè)試執(zhí)行模塊
自動(dòng)測(cè)試執(zhí)行模塊是整個(gè)自動(dòng)化測(cè)試軟件的核心,主要負(fù)責(zé)測(cè)試用例的抽取和執(zhí)行、預(yù)期和實(shí)測(cè)結(jié)果的對(duì)比和判別、測(cè)試最終結(jié)果的顯示、主界面的消息響應(yīng)等。自動(dòng)測(cè)試執(zhí)行模塊通過解析數(shù)據(jù)庫中各個(gè)測(cè)試用例,依次逐條對(duì)每個(gè)測(cè)試用例的每條測(cè)試輸入中要求發(fā)送的ARINC429數(shù)據(jù)塊進(jìn)行賦值,通過對(duì)應(yīng)的ARINC429通道發(fā)送至機(jī)載集中告警設(shè)備。模塊在限定時(shí)間內(nèi)讀取機(jī)載集中告警設(shè)備反饋的ARINC429總線數(shù)據(jù),與對(duì)應(yīng)測(cè)試用例的預(yù)期測(cè)試輸出進(jìn)行數(shù)值比對(duì),判斷反饋數(shù)據(jù)是否與預(yù)期一致。軟件使用線程的方式執(zhí)行自動(dòng)測(cè)試,以便于使主界面能夠?qū)崟r(shí)顯示測(cè)試輸入輸出數(shù)據(jù)、測(cè)試進(jìn)度以及最終測(cè)試結(jié)論。自動(dòng)測(cè)試執(zhí)行模塊的工作流程如圖3。
面向機(jī)載集中告警設(shè)備的自動(dòng)化測(cè)試軟件通過以上方式設(shè)計(jì),能夠?yàn)椴僮魅藛T提供便捷的測(cè)試信息編輯界面(如圖4),自動(dòng)生成測(cè)試報(bào)告,功能運(yùn)行正常。軟件測(cè)試人員針對(duì)機(jī)載集中告警設(shè)備的需求共設(shè)計(jì)了1490個(gè)測(cè)試用例,全部執(zhí)行時(shí)間2247s,遠(yuǎn)低于人工測(cè)試執(zhí)行時(shí)間。
機(jī)載集中告警設(shè)備的自動(dòng)化測(cè)試軟件采用數(shù)據(jù)庫、ADO.NET、LINQ等技術(shù),使得對(duì)機(jī)載集中告警設(shè)備的測(cè)試流程轉(zhuǎn)變?yōu)閷?duì)數(shù)據(jù)庫中測(cè)試數(shù)據(jù)的編輯,其測(cè)試軟件不再依賴ICD文件設(shè)計(jì)程序架構(gòu)和執(zhí)行邏輯,解決了研發(fā)過程中因?yàn)镮CD或者功能邏輯變化而修改測(cè)試軟件的情況。此外,該軟件大大降低了人工介入程度,實(shí)現(xiàn)了對(duì)測(cè)試效率、準(zhǔn)確性、穩(wěn)定性等方面的要求。