文/黃榮 張劍平 高偉松
隨著航空技術(shù)的快速發(fā)展, 電子裝備的多樣化和復(fù)雜化程度不斷提高, 對相應(yīng)的測試設(shè)備提出了越來越高的測試要求,使得測試設(shè)備更新速度加快、自動化程度日益提高。
為了滿足各種復(fù)雜電子裝備的測試需求,科研院所相繼研制了各種專用的測試設(shè)備。然而在電子裝備快速發(fā)展的歷程中,這種專用測試設(shè)備的研制,就顯露出了其浪費系統(tǒng)資源、更新速度慢、升級困難等諸多缺點。因此,隨著各種測試設(shè)備研制需求的不斷增加,一種模塊化、通用化的測試設(shè)備就越顯重要。
模塊化通用測試設(shè)備研制需求是基于軍品研究所2017年產(chǎn)品測試類基礎(chǔ)設(shè)施配置需求統(tǒng)計分析以及各型號軟件測試要求(如實時性要求、安全性測試、強度測試等)獲取。本文將從模塊化通用測試設(shè)備系統(tǒng)方案、軟件ETest_RT 平臺簡介、自動化測試三個方面進行描述。
模塊化測試設(shè)備由主控計算機以及五大類、共九種測試模塊構(gòu)建,如圖1所示。主控計算機是通用測試設(shè)備的核心,通過以太網(wǎng)向各種測試模塊發(fā)送測試要求,同時接收各測試模塊反饋的信息,判斷產(chǎn)品工作狀態(tài),生成測試報告。各種測試模塊按照主控計算機的指令,向被測產(chǎn)品提供相應(yīng)信號,并采集被測產(chǎn)品回送的信號,或與被測產(chǎn)品建立通訊,實現(xiàn)產(chǎn)品測試,并向主控計算機反饋被測產(chǎn)品數(shù)據(jù)信息。模塊化通用測試設(shè)備系統(tǒng)采用ETestStudio 作為進行此次項目建設(shè)的基礎(chǔ)開發(fā)平臺。
圖1:模塊化通用測試設(shè)備系統(tǒng)組成框圖
模塊化測試設(shè)備平臺硬件包括主控計算機與測試模塊,主控計算機采用工控計算機,測試模塊采用PCI 構(gòu)架的測控計算機,兩者之間采用以太網(wǎng)絡(luò)相連,硬件架構(gòu)見圖1。模塊化測試設(shè)備平臺中的應(yīng)用軟件主要包括測試設(shè)計子系統(tǒng)、測試運行子系統(tǒng)、測試監(jiān)控與分析子系統(tǒng)。主控計算機和測試模塊均安裝ETestStudio 軟件,其中主控計算機主要執(zhí)行測試方案設(shè)計、硬件環(huán)境配置、接收測試模塊返回數(shù)據(jù)進行監(jiān)控,而測試模塊則負(fù)責(zé)按照主控計算機設(shè)計的方案執(zhí)行并反饋數(shù)據(jù)至主控計算機,主控計算機配置為軟件服務(wù)端,測試模塊配置為軟件客戶端,兩者之間的通信如圖2所示。
如圖2所示,在主控計算機上的客戶端控制服務(wù)中配置各個測試模塊為客戶端,如各客戶端(測試模塊)IP 地址配置等,兩者之間的數(shù)據(jù)傳輸采用TCP/IP 以太網(wǎng)協(xié)議。通過主控計算機的設(shè)備規(guī)劃功能,將每個測試模塊中的信號采集設(shè)備與對應(yīng)的客戶端建立關(guān)系。當(dāng)主控計算機上測試客戶端發(fā)送測試指令時,測試模塊可以自動接收指令,并調(diào)用信號采集設(shè)備對應(yīng)的API 函數(shù),驅(qū)動信號采集設(shè)備向被測系統(tǒng)發(fā)送出模擬信號。這種方式不受網(wǎng)絡(luò)通信標(biāo)準(zhǔn)的影響,測試穩(wěn)定性較高。
對于總線測試模塊,可分為高速總線、通用總線及專用總線測試模塊,每個測試模塊配置相應(yīng)數(shù)量的總線模塊,故在使用模塊化通用測試設(shè)備后,僅需根據(jù)各型號通訊總線情況配置相應(yīng)數(shù)量總線測試模塊,通過以太網(wǎng)與主控計算機建立連接,在主控計算機配置各測試模塊IP 地址,設(shè)計測試方案,并設(shè)計監(jiān)控軟件。則測試模塊則會按照主控計算機設(shè)計的腳本自動運行。在執(zhí)行過程中可通過監(jiān)控軟件查看總線數(shù)據(jù)收發(fā)情況。因數(shù)據(jù)接收發(fā)送測試腳本均在測試模塊中運行,通過在測試腳本中設(shè)置時間來保證數(shù)據(jù)實時性要求。而對于測試擴展,則可通過多通道或多測試模塊運行,通過測試腳本設(shè)計來保證1 拖4 的要求。
ETest_RT的應(yīng)用軟件由測試設(shè)計子系統(tǒng)、測試運行子系統(tǒng)、測試監(jiān)控與分析子系統(tǒng)和測試輔助工具軟件組成。詳見圖3軟件功能架構(gòu)。
該系統(tǒng)功能包含設(shè)計工作臺和設(shè)備資源管理。設(shè)計工作臺主要對待測產(chǎn)品及其對外接口進行建模,進行協(xié)議編輯及分析、創(chuàng)建測試監(jiān)控軟件、建立硬件規(guī)劃、創(chuàng)建及管理測試用例,確定測試要準(zhǔn)備的接口設(shè)備數(shù)量。其中創(chuàng)建的監(jiān)控軟件對應(yīng)于之前使用的測試軟件,區(qū)別在于該軟件開發(fā)是在ETest_RT 平臺基礎(chǔ)上開發(fā),且該軟件僅需綁定屬性及綁定相應(yīng)測試腳本等圖形操作開發(fā),無需進行單獨編程。整個產(chǎn)品測試的核心在于測試腳本的設(shè)計,測試腳本能夠按照自定的時序控制方式實現(xiàn)向待測產(chǎn)品的數(shù)據(jù)交互和數(shù)據(jù)自動解析,將比特流解析成具有意義的用戶數(shù)據(jù)。設(shè)備資源管理軟件模塊提供了系統(tǒng)支持的測試設(shè)備及通道的管理功能,提供了系統(tǒng)設(shè)備擴展的接口。
表1
圖2:通信方式
圖3:軟件功能架構(gòu)
圖4:RS232 接口仿真模型設(shè)計
該系統(tǒng)功能包含測試運行服務(wù)軟件、運行態(tài)執(zhí)行端實時上位機、運行態(tài)執(zhí)行端實時下位機。測試運行服務(wù)軟件包括測試調(diào)度臺(如用于調(diào)度哪個測試模塊進行通訊)、運行服務(wù)器和數(shù)據(jù)中心,它們是與客戶端軟件(測試模塊中軟件)相配合,驅(qū)動測試數(shù)據(jù),進行自動化測試執(zhí)行。運行態(tài)執(zhí)行端是實現(xiàn)實時性的關(guān)鍵子系統(tǒng),包括實時上位機和實時下位機。
數(shù)據(jù)監(jiān)控器則以虛擬儀表或圖表方式顯示當(dāng)前測試數(shù)據(jù),與VC 及LabWindows 所開發(fā)的測試軟件界面相似。測試數(shù)據(jù)分析提供了對測試過程中數(shù)據(jù)的記錄,可以實現(xiàn)對歷史測試數(shù)據(jù)的查詢,并自動按照一定的模板格式創(chuàng)建測試用例單。
工具軟件提供了嵌入式系統(tǒng)測試時部分常用的軟件工具,主要包含計算器、曲線數(shù)據(jù)生成工具、協(xié)議模板管理等
本章節(jié)從自動化測試技術(shù)介紹、測試方案搭建、測試軟件開發(fā)以及測試方案執(zhí)行四個方面進行介紹。
軟件測試自動化主要是通過使用自動測試工具,按照設(shè)計的機制,自動對被測系統(tǒng)進行測試的一種技術(shù),它具有良好的可操作性、高效率和可重復(fù)性等特點。測試自動化是軟件測試中提高測試效率、測試覆蓋率和測試可靠性的重要手段。本文介紹的自動化測試均是基于Python 語言編寫的測試腳本。
軟件測試自動化存在如下優(yōu)點:
(1)節(jié)省人力資源,降低測試成本。如在回歸測試中,如果使用的是手工方式,就需要大量的人力測試原有功能,而在自動化測試中,可以利用測試工具將原測試用例保存下來,重新運行一遍就可以了,這樣就節(jié)省了大量的人力資源;
(2)增強測試的穩(wěn)定性和可靠性。通過測試工具進行自動測試,減少測試人員的過程干預(yù),保證測試的穩(wěn)定性。同時減少手工測試時人員可能產(chǎn)生的漏測或失誤。
(3)完備測試方法和手段。系統(tǒng)測試的基本要求是被測系統(tǒng)能盡量運行在真實的環(huán)境中,這要求嵌入式軟件必須實現(xiàn)實時、閉環(huán)、非侵入的系統(tǒng)測試,但如果完全依賴于真實的運行環(huán)境,由于很難創(chuàng)造各類可能會引起嵌入式軟件故障的輸入條件,導(dǎo)致對嵌入式軟件的測試很難達到充分性要求。就比如對數(shù)據(jù)從發(fā)送到接收的時效性、各總線數(shù)據(jù)按一定時序發(fā)送等測試手段。
以ETest_RT 平臺基礎(chǔ)上新建測試方案,首先須進行仿真模型搭建,對顯示器的通訊進行分析,以圖形化方式建立模型圖,如圖4RS232 接口仿真模型設(shè)計所示。
完成模型圖設(shè)計后,則是對每一路通訊協(xié)議進行定義,通過給定的ICD 格式用DPD 語言進行描述,以RS232 協(xié)議為例,協(xié)議見表1所示。
該協(xié)議共包含四個部分:數(shù)據(jù)包頭、命令、數(shù)據(jù)、校驗和,分別用DPD 語言描述:
(1)數(shù)據(jù)包頭:0xaa 0x55 兩個字節(jié),需要用16 位無符號整形StandardUInt16 定義,也可以用兩個StandardUInt8 定義。
(2)命令:一個字節(jié),需要用8 位無符號整形StandardUInt8 定義
(3)數(shù)據(jù):一個字節(jié),需要用8 位無符號整形StandardUInt8 定義
(4)校驗和:需要用校驗字段類型定義,并指定校驗算法、校驗位長度、以及校驗范圍
即該協(xié)議定義格式為:
Protocol Main
Segment 數(shù)據(jù)包頭 StandardUInt16 Default=0xaa55 ByteOrder=Big #數(shù)據(jù)包頭
Segment 命令 StandardUInt8 Default=0 #0x00:日模式 0x0a:夜模式
Segment 數(shù)據(jù) StandardUInt8 Default=0 #0-255
Segment 校驗和 CRC Algorithm=CRC_SUM_8 BitCount=8 #校驗位
End
(1)Protocol、End:固定格式
(2)Main:協(xié)議名稱,可自定義
(3)Segment:定義協(xié)議字段關(guān)鍵字
(4)數(shù)據(jù)包頭:該字段的名稱,自定義
(5)StandardUInt16:該字段的數(shù)據(jù)類型,根據(jù)協(xié)議格式選擇不同的數(shù)據(jù)類型
(6)Default:為默認(rèn)值
(7)ByteOrder:字節(jié)序(僅針對多字節(jié)數(shù)據(jù)),0xaa 為低字節(jié),賦值時為0xaa55,則字節(jié)序為Big(大端模式);如果賦值為0x55aa,則字節(jié)序為Small(小端模式)
(8)校驗字段:用CRC 定 義,Algorithm 為校驗算法(提供常用算法,也可以自定義),BitCount 為校驗位長度
協(xié)議定義完成后,則需將實際連接的測試模塊與仿真模型中所使用的總線進行綁定,配置相應(yīng)的波特率、通道等屬性,此時前期的準(zhǔn)備工作已完成,后續(xù)則是開展測試的執(zhí)行工作,具體見下文。
ETest_RT 可以用直觀的方式在測試過程中顯示測試數(shù)據(jù)。設(shè)計工作臺中提供了對測試監(jiān)控界面的設(shè)計功能,用戶可以在監(jiān)控設(shè)計面板上添加數(shù)據(jù)監(jiān)控控件,并通過綁定協(xié)議字段或協(xié)議字段的計算公式,從而可以在監(jiān)控運行時直觀地顯示測試數(shù)據(jù)的變化。在測試軟件開發(fā)時類似于VC 及LabWindows 進行圖形化界面設(shè)計,但區(qū)別在于其無需編寫代碼,只需綁定協(xié)議定義的屬性或綁定下面所涉及的腳本即可完成數(shù)據(jù)發(fā)送及接收的顯示,設(shè)計界面見圖5所示。
圖5:測試軟件設(shè)計界面
在完成上述步驟后,則進入測試的核心工作即測試腳本設(shè)計,測試腳本以Python 語言基礎(chǔ),遵循Python 語法規(guī)則,用縮進代表語句塊。
Python 是一種解釋型、面向?qū)ο?、動態(tài)數(shù)據(jù)類型的高級程序設(shè)計語言。具有開發(fā)效率高,語言簡潔,易閱讀,描述能力強、跨平臺、復(fù)用性良好,與C 或C++性能相同等特點。測試腳本包括了對嵌入式系統(tǒng)測試特性的描述,主要有測試輸入(發(fā)送數(shù)據(jù))、獲取測試反饋(接收數(shù)據(jù))以及執(zhí)行時間控制等。
仍然以上述RS232 為例,在腳本中訪問協(xié)議字段的方法:數(shù)據(jù)連接對象名稱.字段名.Value,例如:COMW.命令.Value,就可以對其進行賦值、打印操作。在數(shù)據(jù)的發(fā)送與讀取有:數(shù)據(jù)連接對象.Write()、數(shù)據(jù)連接對象.BlockRead()(阻塞讀取方式)、數(shù)據(jù)連接對象.Read()(非阻塞讀取方式),即該腳本即可寫成如下所示:
def Main():
for i in range(1000):
COMW.數(shù)據(jù)包頭.Value = 0xaa55#給協(xié)議字段賦值
COMW.命令.Value = 0x00
COMW.數(shù)據(jù).Value = 1
COMW.Write() #將數(shù)據(jù)組包并發(fā)送出去
COMR.BlockRead() #讀取返回的數(shù)據(jù),并解析
print COMR.亮度.Value#打印讀取的數(shù)據(jù)值
print COMR.加熱狀態(tài).Value
print COMR.日夜模式.ValueAPI.Common.Timer.Normal.Sleep(20) #延時,每隔20ms 發(fā)送一幀數(shù)據(jù)
Main()
該腳本實現(xiàn)了定時20ms 進行數(shù)據(jù)發(fā)送,其中只需將COMW、COMR 與監(jiān)控軟件綁定即可實現(xiàn)監(jiān)控軟件顯示,在腳本中設(shè)計可通過加載各種函數(shù)庫實現(xiàn)各種功能,通過if 語句判定用例是否通過,以及通過文本記錄整個測試過程中。包括在什么時間點發(fā)送什么數(shù)據(jù)接收什么數(shù)據(jù)結(jié)果怎么樣均能通過測試腳本設(shè)計。對于測試測試人員可以依據(jù)腳本設(shè)計復(fù)雜時序以達到性能、安全性、強度測試等要求內(nèi)容。而且在腳本設(shè)計完成后,過程中腳本執(zhí)行可無需人員在旁。對于回歸測試或者系統(tǒng)產(chǎn)品可直接借用測試腳本只需進行相應(yīng)內(nèi)容修改即可。但這也同時對測試工程師的技術(shù)要求提高。