呂睿娟,張梅潔,胡佳貝
(航空工業西安航空計算技術研究所,陜西 西安 710068)
隨著信息技術和計算機科學技術的快速發展,在各個領域中均有相應的軟件來幫助人們處理日常的各項業務工作。在某些領域,如航空電子中會要求軟件具有較高的可靠性,來保證飛機的運行安全。為了滿足用戶對軟件質量的要求以及對軟件的可靠性保證,相應的測試工作必不可少[1]。
軟件測試作為軟件開發生命周期中獨立且重要的階段,是保證軟件質量的關鍵步驟。針對不同的軟件測試要求,測試人員依據測試需求開展測試工作,大多情況下自動化測試技術可提高測試效率[2]。但在使用測試腳本進行自動化測試時,多數測試軟件無法向測試人員實時傳遞測試數據并反饋測試結果只是完成對測試腳本的執行,將測試過程信息保存至日志文件中,在定位問題時需要查看數據量巨大的日志文件進行確認,確定問題的速度較慢。同時,面對一些測試項較多且需測試人員實時監控測試結果的系統軟件,需進行復雜且重復的手動操作,非常耗時耗力[3]。
針對自動化測試腳本中的測試數據和測試結果無法實時反饋的問題,本文提出了一種針對測試腳本數據進行實時監控的實現方法。該方法使用Qt框架完成界面設計,實現測試數據的實時監控,使用數據分發服務(Data Distribution Service,DDS)作為通信服務組件完成數據的實時交互。在開展測試工作時,根據測試對象的測試需求編寫測試腳本,通過該軟件進行測試,完成測試數據、測試結果的實時監控。
實時通信技術要求傳遞的數據可即時傳送至接收對象或服務對象,傳統的實時數據通信以客戶/服務器(Client/Server,C/S)模式完成設計,但存在擴展性低、傳輸效率低等缺陷。為了實現較高的傳輸性能,保證數據傳輸的可靠性,對象管理組織(Object Management Group,OMG)在以數據為中心的訂閱-發布(Data Centric Publish-Subscribe,DCPS)模型基礎上,制定了DDS標準[4]。
在DDS規范中,以DCPS模型為基礎,建立了一個以傳送數據為主導的發布/訂閱(Publish/Subscribe,P/S)服務,發布者和訂閱者只需在數據域中獲取各自感興趣的數據,而無需關注該數據由哪個實體進行發布或接收[5]。DDS包含的實體有域參與者(Domain Participant)、主題(Topic)、發布者(Publisher)、訂閱者(Subscriber)、數據讀者(Data Reader)以及數據寫者(Data Writer)[6]。一個域中可以有多個主題,通過數據讀者和數據寫者進行主題訂閱,完成數據分發。
DDS只有在同一域中的各實體才可以完成數據通信。其數據分發的實現流程如下:(1)創建數據類型;(2)創建域,一般使用整型數據來標識;(3)創建域參與者,由域參與者進行后續操作;(4)注冊數據類型,該數據類型為步驟(1)中所創建的數據類型;(5)創建主題和主題對象,以便數據讀者和數據寫者進行訂閱;(6)在發布端創建發布者和數據寫者,并與主題進行關聯,在訂閱端創建訂閱者、監聽器和數據讀者,并與主題進行關聯。
本文中使用DDS的開源框架Open DDS完成實時通信中數據分發任務的設計與實現。
數據監控可以理解為數據采集與數據呈現,即對關注的數據信息內容進行收集,并使用一定的方式向用戶進行呈現[7]。在本文的設計中,需完成對腳本封裝數據內容的展示,因此通過圖形用戶界面(Graphical User Interface,GUI)為用戶提供良好的界面,實現此部分的功能。
為了提供良好的適配性,本文使用Qt框架完成GUI程序的設計。Qt是基于面向對象的框架,易擴展,并支持跨平臺,可以實現一次編寫到處執行,其提供了豐富的組件滿足界面設計需求[8]。基于C++完成開發,可以完成基本的功能處理,滿足開發需求。此外,提供了信號和槽的機制進行事件處理,使整個GUI界面具有強大的交互性[9,10]。
以航空電子信號作為具體的被測對象,使用C++語言進行軟件的設計與實現,Qt框架完成界面設計,OpenDDS完成信息的實時交互。
通常情況下,機載嵌入式軟件的測試平臺包含上位機與下位機。上位機運行測試腳本,通過通信介質向下位機發送測試數據,下位機將其發送給被測設備。本文主要關注上位機實時數據監控軟件的設計,該軟件的整體設計思路與數據交互如圖1所示。

圖1 數據監控軟件交互
上位機測試軟件提供人機交互界面,包括信號數據監控界面和自動化測試功能界面。在腳本執行時,將腳本中的測試數據發送給上位機軟件;調用Python接口完成測試功能執行,將測試激勵發送至下位機。下位機與被測設備相連,接收上位機的激勵,同時向被測設備發送激勵,接收測試結果并將測試結果傳遞給上位機。
在本文中,經過功能劃分,軟件界面分為2大部分,分別是信號數據監控界面和自動化測試功能界面。
在信號數據監控界面,主要是展示被測設備的信號,包含信號的基本信息,如信號名稱、設置值,為滿足后續該軟件可以針對不同的測試對象實現適配,通過讀取相應的界面配置文件確定信號數據監控界面的內容顯示。
在自動化測試功能界面中,設計一個進行自動化測試的操作界面,完成測試腳本執行的基本功能。該界面包括以下信息:(1)基本的測試信息,如測試項目、測試時間、測試人員等;(2)測試腳本執行的顯示界面,如測試腳本名稱、測試腳本的執行狀態、執行次數、執行結果以及通過率等;(3)測試腳本的控制指令按鈕,如測試用例導入、開始、停止、暫停、測試用例清空以及導出日志等功能按鈕。
在本軟件中,實時通信是為了實現腳本中測試數據、上位機軟件及下位機之間的數據傳輸與交互。
在使用DDS實現實時通信時,需要先定義數據類型來完成基本代碼框架的構建。本文定義的數據類型包含信號類型、信號傳遞方向、通道號、內容、操作指令等。同時,根據數據交互需求及DDS的數據通信要求,即數據僅可在同一數據域中進行交互,各個域的發布者與訂閱者設計如圖2所示。

圖2 域及其發布者與訂閱者設計
在圖2中,上位機實時數據監控軟件創建了域10和20,均為訂閱者,即訂閱主題Topic1和Topic3。域10訂閱者完成對測試腳本數據的訂閱,域20的訂閱者完成對下位機反饋測試結果的訂閱。測試腳本執行端調用接口部分創建域10和域30的發布者,域10的發布者關聯Topic1,域30的發布者關聯Topic2。下位機創建域20的發布者并關聯Topic3,創建域30的訂閱者訂閱Topic2,接收測試激勵數據。
將航空電子信號作為主要測試對象,在大多測試腳本中,信號數據采用十六進制進行存儲,針對本文的測試對象,需要將測試腳本中的數據轉換為十進制數據,完成界面顯示。本文中主要對ARINC429信號、離散量信號以及模擬量信號的解析過程進行說明。
在實際處理中,腳本數據解析過程應與前文設計的DDS實現過程進行交互,共同完成此部分功能。首先根據DDS消息中的參數進行信號類型判斷,不同的數據對應不同的解析過程。ARINC429信號中的數據包含正負2種數據,由label號獲取數據起始位和終止位完成數據計算。離散量和模擬量由通道號等完成數據位的確定,根據計算規則得到最終數據。完成解析后的數據結果通過DDS發送給上位機軟件界面,完成界面顯示。
根據第2節所述的設計與實現思路,該軟件的界面如圖3和圖4所示。

圖3 信號數據實時監控界面

圖4 自動化測試界面
兩個功能相結合即可完成測試腳本數據的實時顯示。在打開該軟件時,先進行設備自檢和各項資源(如DDS)的初始化,然后自動化測試界面可進行測試腳本上傳,開始自動化測試。步驟為選擇待執行的測試腳本,執行腳本開始進行自動化監測。當測試腳本開始運行后,可切換至信號數據監控界面,在此界面根據腳本的自動化執行次序顯示當前執行的測試腳本中封裝的各項測試數據和該測試項的執行結果。
以上為該軟件進行自動化測試并實時顯示測試數據的方法,在此過程中用戶可以實時查看測試腳本的運行情況、腳本執行結果以及測試數據的詳細內容,同時也可生成日志便于問題定位。
本文中提出的基于測試腳本數據實時監控的實現方法,采用Qt框架與DDS作為實現實時監控的技術手段,實現了在執行自動化測試的同時,向測試軟件實時發送測試數據,支持測試人員完成對測試數據的實時監控,在提高測試工作效率的同時,為產品質量提供了一定的保證。