中國船舶重工集團公司第七一〇研究所 葉祥明
?
ESITest測試平臺在某型電子監(jiān)測儀軟件測試中的應(yīng)用
中國船舶重工集團公司第七一〇研究所葉祥明
【摘要】利用通用嵌入式系統(tǒng)軟件測試平臺(ESITest)建立了某型電子監(jiān)測儀的軟件測試環(huán)境,通過在ESITest平臺中開發(fā)測試用例腳本,實現(xiàn)了電子監(jiān)測儀嵌入式軟件的自動化測試,提高了電子監(jiān)測儀嵌入式軟件測試的覆蓋率和可靠性。
【關(guān)鍵詞】嵌入式軟件;軟件測試;測試環(huán)境;腳本編碼
某型工程機械的電子監(jiān)測儀是集微電子技術(shù)、計算機技術(shù)、數(shù)字顯示技術(shù)和電子傳感技術(shù)為一體的嵌入式設(shè)備,主要用于變速油壓、燃油液位、發(fā)動機轉(zhuǎn)速、制動氣壓、冷卻液溫度、蓄電池電壓等信息的采集處理,并實現(xiàn)對全車各部件的狀態(tài)監(jiān)控與管理。為了完成該型電子監(jiān)測儀的嵌入式軟件測試,利用通用嵌入式系統(tǒng)軟件測試平臺(ESITest),模擬電子監(jiān)測儀需要處理的9路DI信號、2路脈沖信號和7路DA信號,通過ESITest測試平臺的測試用例腳本編碼功能,實現(xiàn)了電子監(jiān)測儀的功能、性能、負載以及連續(xù)運行時間等軟件的自動測試任務(wù),確保了電子監(jiān)測儀嵌入式軟件運行的可靠性。
2.1電子監(jiān)測儀的外部接口
電子監(jiān)測儀是工程機械裝備的一個重要零部件,是適應(yīng)工程機械裝備使用的電子化、數(shù)字化、信息化發(fā)展的高技術(shù)產(chǎn)品,主要用于工程機械的各類信號采集和狀態(tài)監(jiān)控管理,具有數(shù)據(jù)采集、接口通信、參數(shù)設(shè)置、信息報警等功能。圖1為該型電子監(jiān)測儀的外部接口關(guān)系圖。

圖1 電子監(jiān)測儀外部接口關(guān)系圖
電子監(jiān)測儀通過航插接口接收5類輸入信號,輸出2類輸出信號。
第一類輸入信號是4~20mA標準電流型信號,共7路,用于采集變速油壓、燃油液位、油溫、油壓、制動氣壓等傳感器的信號。
第二類輸入信號是脈沖信號,共2路,用于實現(xiàn)發(fā)動機轉(zhuǎn)速、車速的信號采集處理。第三類輸入信號是數(shù)字量輸入信號DI,共9路,為24V的高低電平,用于濾油器、空氣濾清器、轉(zhuǎn)向燈、遠光燈等狀態(tài)量的采集。
第四類輸入信號是模擬電壓信號,只有一路,為蓄電池電壓的采集輸入量,電壓范圍0~36V。
第五類輸入信號是來自于CAN總線的通信接口,用于接收外部發(fā)送來的各種指令。
電子監(jiān)測儀輸出2路的燈光報警信號,為TTL電平的數(shù)字量輸出信號。另外1路輸出信號為CAN總線輸出,需要將采集到的各類信息,通過CAN總線發(fā)送給工程機械的儀表終端,用于完成各類信息的顯示處理。
2.2測試需求分析
為了開展對電子監(jiān)測儀嵌入式軟件的全面測試,除需要對單個功能逐項測試外,還需要將多路輸入信號與輸出信號全部連接起來進行長時間的自動化測試[1,2],模擬電子監(jiān)測儀的實際運行情況,檢驗電子監(jiān)測儀嵌入式軟件對多路信號的采集處理以及CAN總線的通信處理,確保最終發(fā)布的電子監(jiān)測儀嵌入式軟件能可靠運行。
除了對電子監(jiān)測儀開展長時間的自動化綜合測試外,在電子監(jiān)測儀功能中,還有2項功能為報警輸出的時間性能要求,第1項是發(fā)動機油壓的報警延時,另外1項是變速箱油壓報警延時,這兩項報警延時都要求當(dāng)油壓低于設(shè)定的最低閾值時,5秒內(nèi)發(fā)出燈光報警。
3.1ESITest概要描述
通用嵌入式系統(tǒng)軟件測試平臺(ESITest)是北京凱云創(chuàng)智軟件技術(shù)有限公司研制的一款高度集成的可用于嵌入式系統(tǒng)軟件測試的綜合測試平臺,具有測試工程管理、測試交聯(lián)環(huán)境仿真建模、應(yīng)用協(xié)議描述與編譯處理、測試用例腳本編碼、測試監(jiān)控窗體設(shè)計、測試執(zhí)行過程控制、測試結(jié)果分析等功能[3]。
ESITest測試平臺主要用于支持嵌入式軟件配置項級別和系統(tǒng)級別的動態(tài)驗證測試,能夠?qū)η度胧较到y(tǒng)外部各類接口(CAN、AD、DA、DI、DO、RS232、RS422)進行輸入模擬和輸出監(jiān)視,可以完成軟件配置項單接口、多接口和多配置項的系統(tǒng)測試,具有攜帶方便、配置靈活的特點,可適應(yīng)不同類型的嵌入式系統(tǒng)測試要求。

圖2 ESITest測試平臺的軟硬件組成
3.2ESITest的系統(tǒng)組成
ESITest測試平臺由硬件部分和軟件部分組成,如圖2所示。硬件部分由PC機和各類USB接口設(shè)備組成,USB接口設(shè)備包括CAN通信設(shè)備、1553B通信設(shè)備,RS232、RS422/485串口通信設(shè)備,DA轉(zhuǎn)換設(shè)備,AD采集設(shè)備,DI/DO設(shè)備,繼電器模塊、虛擬示波器和波形發(fā)生器等。軟件部分主要包括測試設(shè)計軟件、測試執(zhí)行服務(wù)器軟件、測試執(zhí)行客戶端軟件、設(shè)備資源管理軟件以及USB接口設(shè)備所提供的輔助調(diào)試軟件。
USB接口設(shè)備一端與客戶端PC的USB接口相連,另一端與待測系統(tǒng)的特定接口相連。客戶端PC機負責(zé)運行測試執(zhí)行客戶端軟件,實現(xiàn)與待測系統(tǒng)的接口互聯(lián),處理測試數(shù)據(jù)。服務(wù)器端統(tǒng)一進行測試設(shè)計和測試執(zhí)行控制。多臺PC機構(gòu)成C/S結(jié)構(gòu)的分布式系統(tǒng),從而組成不同規(guī)模需求的測試環(huán)境。
3.3平臺使用流程
利用ESITest測試平臺進行嵌入式系統(tǒng)軟件測試的主要流程如下。
(1)首先在設(shè)備資源管理軟件中對通信設(shè)備及設(shè)備下的通道進行維護,生成資源配置文件,供測試設(shè)計軟件進行設(shè)備規(guī)劃時使用;
(2)使用測試設(shè)計軟件創(chuàng)建測試方案、測試項目,在測試項目下創(chuàng)建仿真模型,添加待測系統(tǒng)、外圍系統(tǒng)、通道、協(xié)議,創(chuàng)建設(shè)備規(guī)劃、PC規(guī)劃,設(shè)計測試監(jiān)控窗體;
(3)使用測試執(zhí)行服務(wù)器軟件,打開測試方案,監(jiān)聽客戶端的連接請求,建立與客戶端的連接,形成分布式的測試網(wǎng)絡(luò)結(jié)構(gòu);
(4)使用測試腳本編寫測試用例,測試用例執(zhí)行時發(fā)送測試數(shù)據(jù)經(jīng)客戶端到USB設(shè)備,最終到達待測系統(tǒng)中,并接收經(jīng)由客戶端返回的待測系統(tǒng)數(shù)據(jù);
(5)選擇編寫好的測試用例腳本執(zhí)行,在測試執(zhí)行過程中,服務(wù)器端和客戶端均能打開測試監(jiān)控窗臺,實時對測試執(zhí)行中的通信數(shù)據(jù)顯示和保存;
(6)測試用例腳本執(zhí)行完成后,如果測試用例腳本中具有預(yù)期結(jié)果與實際結(jié)果判斷的邏輯,則會自動給出本次測試執(zhí)行是否通過,如果腳本中沒有預(yù)期結(jié)果與實際結(jié)果的判斷邏輯,事后可以對記錄的測試數(shù)據(jù)進行分析,判斷本測試用例腳本是否執(zhí)行通過。
4.1測試環(huán)境搭建
圖3為利用ESITest測試平臺搭建的電子監(jiān)測儀綜合測試環(huán)境,測試環(huán)境由1個服務(wù)器端、2個客戶端、2塊AD/DA板卡(EM9636BD)、1塊繼電器板卡(USB2211)、1塊虛擬波形發(fā)生器卡(DDS3005)、1塊DI/DO板卡(USB-7660B/2)、1塊CAN通信板卡(GY8508)組成。

圖3 電子監(jiān)測儀的ESITest測試環(huán)境搭建
服務(wù)器端通過USB連接兩個EM9636BD,通過隔離模塊將EM9636BD的0-5V模擬電壓輸出轉(zhuǎn)為0-20mA的模擬電流輸出,共7路;同時通過第2塊EM9636BD 的DI輸入接收電子監(jiān)測儀的2路報警輸出信號;通過ESITest測試平臺客戶端1連接1個繼電器模塊USB-2211,通過繼電器開關(guān)的閉合模擬24V的開關(guān)量信號共9路,此開關(guān)量信號由24直流電源供電;同時客戶端1再連接1塊CAN總線GY8508板卡,用于與電子監(jiān)測儀之間實現(xiàn)CAN通信交互;通過ESITest測試平臺客戶端2連接1個任意波形發(fā)生器USB-DDS3005產(chǎn)生驅(qū)動USB-7660B/2的時鐘信號,由USB-7660B/2分頻產(chǎn)生2路計數(shù)器輸出,通過ESITest測試平臺客戶端設(shè)置分頻的計數(shù)值用于驅(qū)動產(chǎn)生發(fā)動機轉(zhuǎn)速和車速的脈沖信號。
4.2基于ESITest的測試設(shè)計
搭建好硬件測試環(huán)境后,需要利用ESITest測試平臺開展測試設(shè)計工作。首先在ESITest測試平臺中進行測試交聯(lián)環(huán)境仿真建模,添加外圍系統(tǒng)以及7 路DA(模擬量輸出)通道、1路DI(數(shù)字量輸入)通道、9路DO(數(shù)字量輸出)通道、2路CTO(計數(shù)器輸出)通道和1路CAN通信通道。并為每個通道設(shè)置相應(yīng)的屬性和添加相應(yīng)的協(xié)議。DA通道屬性設(shè)置為:輸出模式:物理值,輸出范圍:0V-10V,通道號:1-4;DO通道屬性只需設(shè)置通道號1-9;CTO通道:工作方式:方式3(輸出方波),計數(shù)初值:100,通道號:1-2。CAN通道:波特率:115200bps,過濾模式:雙濾波,過濾屏蔽碼:0xFF、0xED、0xfd、0xbe。
為設(shè)備規(guī)劃添加所用到的板卡設(shè)備,添加好設(shè)備后,將交聯(lián)環(huán)境建模的各個通道分別綁定到相應(yīng)的板卡設(shè)備上,2路CTO通道綁定到USB7660B/2上,7路DA與1路DI通道綁定到2塊EM9636BD上,9路DO綁定在USB-2211繼電器板卡上,CAN綁定在GY8508板卡上。然后將規(guī)劃好的硬件板卡與測試計算機終端相連,建立PC規(guī)劃方案,通過三臺筆記本電腦作為測試服務(wù)器與客戶端,設(shè)置各個測試終端的IP地址與端口號。

圖4 ESITest測試平臺交聯(lián)環(huán)境建模
為每個通道連線編寫應(yīng)用層的協(xié)議,對于AD、DA、DI、DO以及CTO通道,其協(xié)議只包括一個字段,定義為Segment Data StandardUInt8Default=0即可,對于CAN總線接口,按照CAN應(yīng)用協(xié)議的定義用ESITest測試平臺提供的通信協(xié)議描述編輯器描述如下:
Protocol ExtendedFrame
Segment LenRandomUInt Length=4
#數(shù)據(jù)長度
Segment h1 RandomInt Length=2 Format=Complement
#保留
Segment FrameType Boolean
#幀類型
Segment FrameFormatBoolean
#幀格式
Segment ID StandardUInt32 ByteOrder=Big
#ID
Segment LQYWD StandardUInt8Default=0
#冷卻液溫度
Segment ZLQWD StandardUInt8Default=0
#中冷器溫度
Segment YYYW StandardUInt8Default=0
#液壓油溫
Segment BJQYW StandardUInt8Default=0
#變矩器油溫
Segment h2 StandardInt32 Format=Complement
#保留
End
最后,為了方便對測試數(shù)據(jù)的觀測,在三個測試終端上分別建立數(shù)據(jù)監(jiān)控窗口,在監(jiān)控窗口設(shè)計時,對于每個監(jiān)控控件,只需要直接綁定協(xié)議描述語言中的字段變量,就可以實現(xiàn)測試過程中的自動監(jiān)控。

圖5 電子監(jiān)測儀測試執(zhí)行中的ESITest監(jiān)控窗體
4.3連續(xù)運行時間測試
編寫電子監(jiān)測儀連續(xù)運行時間的python測試用例腳本[4],主要代碼如下:
tm=8*60*1000
#設(shè)置連續(xù)運行8小時
steptm=4000
#設(shè)置每4秒改變一次輸入模擬
N=tm/400
#求取運行的次數(shù)
for i in range(N)
#多次循環(huán)以測試連續(xù)運行情況
DA1_P.P1.DA.Value = DA1[i]
#為通道協(xié)議賦值
DO1_P.P1.DO.Value = DO1[i]
CTO1_P.P1.CTO.Value = CTO1[i]
DA1_P.Write()
#進行通道輸出
DO1_P.Write()
CTO1_P.Write()
CAN1.Read(true)
#等待從CAN總線中讀取響應(yīng)數(shù)據(jù)
Assert(CAN1.ExtendedFrame.LQYWD.Value= DA1_P.P1.DA.Value/65536*100)
#判斷是否通過
Sleep(steptm)
#等待steptm ms,以進行下一循環(huán)測試
測試用例腳本編寫非常簡單,用戶只需要編寫很短的幾行代碼,就可以完成較復(fù)雜的自動化測試。在該測試用例腳本中,設(shè)置tm為需要運行的時間,這里設(shè)置運行8小時,就可以連續(xù)不斷地開展對電子監(jiān)測儀的測試,并且不同通道的數(shù)據(jù)可以根據(jù)事先設(shè)置的數(shù)組取值,確保了連續(xù)運行時間測試時對不同的數(shù)據(jù)輸入達到覆蓋率的要求,同時還可以在腳本中加入測試用例是否通過的判定語句。測試執(zhí)行時,只需要在ESITest測試平臺選擇編寫好的測試用例腳本進行執(zhí)行,執(zhí)行的過程中可以打開不同的監(jiān)控窗體監(jiān)控通道的數(shù)據(jù)變化情況。如圖5所示。
4.4報警時間性能測試
為測試油壓報警延時,需要利用ESITest測試平臺模擬報警事件,并計算出從電子監(jiān)測儀接收到超出閾值的信號到電子監(jiān)測儀輸出報警信號的時間,驗證電子監(jiān)測儀的報警延時時間是否在允許的誤差范圍內(nèi)。主要的測試腳本編碼如下:
DA1_P.P1.DA.Value = 3050
#設(shè)置模擬的油壓信號,使其超出閾值范圍
a = HNow()
#取出當(dāng)前時間
DA1_P.Write()
#輸出給電子監(jiān)測儀
while 1:
#等待報警輸出DO為高點平
DI1_P.Read(True)
if DI1_P.P1.DI7.Value == 1:
b = HNow()
break
printfb-a
#輸出給控制臺時間性能值
Assert(b-a<5000)
#判斷是否滿足5s的要求
在服務(wù)器端運行該測試用例腳本后,就可以輸出相應(yīng)的報警延時時間值,可以多次運行取出最大值、最小值以及平均值,以此來作為報警延時的時間性能測量結(jié)果。
ESITest測試平臺提供了高度集成的測試設(shè)計開發(fā)環(huán)境,具有測試項目管理、交聯(lián)環(huán)境仿真建模、應(yīng)用協(xié)議描述、測試資源規(guī)劃、實時監(jiān)控設(shè)計、測試用腳本開發(fā)及管理、測試執(zhí)行、測試數(shù)據(jù)統(tǒng)計及分析、測試報告生成等功能,分布式的系統(tǒng)架構(gòu)使其具有極強的擴展能力,可靈活組件不同規(guī)模要求的測試環(huán)境。利用ESITest測試平臺所完成的某型工程機械電子監(jiān)測儀的自動化測試任務(wù),極大地提高了電子監(jiān)測儀嵌入式軟件測試的覆蓋率和可靠性,通過ESITest測試平臺服務(wù)器的統(tǒng)一時鐘管理優(yōu)勢,實現(xiàn)了電子監(jiān)測儀油壓報警延時的時間性能測試,為電子監(jiān)測儀的報警反應(yīng)時間性能指標驗收提供了技術(shù)手段。
參考文獻
[1]William E Lewis. Software testing and continuous and quality improvement[M]. Florida CRC Press,2000:41-45.
[2]薛沖沖,陳 堅.軟件測試研究[J].計算機系統(tǒng)應(yīng)用,2010,20(2).
[3]陳策,胡勇,郭久武等.基于USB-LAN的通用嵌入式軟件測試平臺[C].全國抗惡劣環(huán)境計算機第二十四屆學(xué)術(shù)年會,2014(9).
[4]吳超,李玲,張燕.python腳本在整車控制系統(tǒng)HIL測試中的應(yīng)用[J].上海汽車,20129(2).
葉祥明,江西瑞昌人,工程師,目前主要從事裝備軟件測試工作。
作者簡介: