嵌入式系統軟件配置項和系統測試時需要構建出半實物仿真測試環境(Hardawre in Loop Simution Test Platform,HIL),與被測系統(Unit Under Test,UUT)相連的各個外圍系統的信號、總線數據報文通過HIL系統產生,HIL系統則接收由UUT發送的各類信號和總線數據報文。建立通用化的半實物仿真測試平臺是測試建設的必然選擇,也是面向不同領域裝備快速構建各類工裝測試系統的基礎。長期以來,我國在半實物仿真測試平臺的建設方面主要依賴兩個渠道,一是以國外進口的半實物仿真測試平臺為基礎進行二次開發,形成滿足特定裝備領域應用的測試系統;二是采用通用編程開發環境開發具體裝備的測試。這兩種渠道都難以形成自主可控的產業生態,不利于國家在工業基礎軟件方面的技術進步和發展。
ETest是一款面向半實物仿真測試系統開發的國產自主可控集成開發環境,其核心是嵌入式測試領域描述語言ETL(Embedded Test Language),可完整用語言描述設備及其接口、接口連接關系、通信協議模板、操作監控面板以及測試腳本,并為ETL設計和開發了智能化代碼編輯器、圖形化交聯環境繪制工具、可視化監控面板設計工具、ETL實時運行引擎等模塊。ETest可顯著提高測試系統的開發效率,具有1 ms級實時響應性能,可以為用戶提供異步操作的測試程序開發模式,在多接口上執行并發I/O,是測試系統開發的利器。
1ETest的架構設計與工作原理
1.1ETest的架構設計
ETest技術架構設計如圖1所示。
圖1? ETest架構設計
構成ETest的核心是測試系統描述語言ETL,ETL描述的語義可在ETL運行器上直接執行。最下層為驅動層,所有硬件板卡的驅動采用VISA虛擬化儀器標準進行封裝,確保硬件驅動對上服務的標準化。當采用的硬件板卡不同時,如果硬件板卡不符合VISA協議標準,通過修改ET-VISA層的軟件代碼可以屏蔽不同廠家硬件板卡驅動的差異。若硬件板卡符合VISA協議標準,則可以直接使用。ET-VISA組件的存在,使得無需更改ETestX之上的軟件就能快速完成采用不同硬件系統的測試工裝搭建。
在驅動層之上是ETestX執行器,ETestX執行器實現了ET-AYSN異步I/O與事件循環、ET-DPD協議解析器、ET-ENGINE腳本運行引擎、ET-RECORD實時記錄儀、ET-TIMER高分辨定時器、ET-RTTASK實時任務調度、ETVDMAN虛擬儀器管理、ET-SIMU仿真引擎、ET-DEBUG遠程調試。ETestX執行器實現了在目標機之上可運行測試腳本。ETestD API服務實現上位機和下位機之間的通信服務,使得上層的各類腳本可以直接運行。
ETestD API遠程代理運行在上位機中,處理各類測試腳本,實現測試腳本在上位機透明運行,ETestD API遠程代理中提供了C#、Lua、Python、C/C++、JavaScript、Java等多種語言的軟件開發工具包,ETestD API的存在使得ETestDEV具有在VSCode、PyCharm、Visual Studio等通用開發平臺中開發測試系統的能力,ETest也在這些通用開發平臺中提供了ETL插件。除了可以在VSCode、PyCharm、Visual Studio等通用開發平臺中使用ETL插件外,ETest也提供了完整的設計器,在設計器中可以完成測試環境設計、測試數據與流程設計、通信協議設計、監控界面設計、測試腳本編輯、測試數據分析等功能,采用ETest設計器可以開發出完整的測試系統,從而打造屬于國產自主可控的嵌入式系統測試平臺開發生態。
1.2ETest的運行原理
ETest的核心是嵌入式測試領域專用語言ETL,用于描述測試環境中各要素,包含了設備接口描述device、連接拓撲描述topology、通信協議描述protocol、操作面板描述panel、測試執行腳本語言ETLua,其中device、topology、protocol、panel部分采用根、元素、元素屬性的語法規則,ETLua則采用Lua形式的語法規則。
采用ETL編寫的測試程序可在ETL運行器上直接執行,運行器的核心是異步事件循環,測試腳本在主循環上執行,主循環中無任何阻塞操作,所有的I/O都被異步執行,在高性能線程池中運行著異步I/O、復雜的計算模型、數學仿真模型以及遠程的驅動代理,線程池與主循環之間同樣采用異步通信的方式進行同步。
ETest的數據流圖如圖2所示,使用系統時由測試需求分析人員根據被測軟件的需求規格說明進行測試需求分析,形成外部接口需求、外部接口的信號與協議特征需求。測試設計人員利用ETest上位機軟件對外部接口需求、信號與協議特征需求進行可視化的描述,對外接口需求通過交聯環境可視化繪制功能繪制出交聯關系拓撲圖,信號與協議特征需求通過協議可視化配置形成協議模板。測試設計人員利用ETest進行測試用例設計、測試數據設計,測試用例設計與測試數據設計結果連同交聯關系拓撲圖、協議模板一起打包形成測試項目方案文件。
測試執行時,測試項目方案文件下載到ETest下位機中,下位機執行引擎對測試腳本程序、信號與協議數據包進行解析,形成輸出數據流,通過硬件接口板卡發送到被測件中。硬件接口板卡將輸出數據流轉換為線路信號輸入到被測件中,被測件根據接收到的輸入信號按照自身邏輯執行,若有輸出數據,則通過被測件自身的接口輸出到硬件接口板卡。硬件接口板卡將被測件輸出的信號通過驅動程序轉換為ETest下位機執行引擎的輸入數據流。ETest下位機執行引擎根據測試用例設計邏輯、輸入數據流、輸出數據流對測試結果進行判斷,形成測試結果數據,將測試結果數據向ETest上位機回傳。
圖2 ETest的數據流圖
ETest上位機一方面將回傳的測試結果數據通過UI渲染引擎作為人機交互界面進行展示,另一方面將回傳的測試結果通過報告模板與測試報告生成模塊生成測試報告。
1.3測試執行綁定關系
利用ETest所編寫的測試程序要運行在測試執行引擎上,需要將監控頁面、網絡變量、連接拓撲、測試用例數據以及運行時的控制臺組成有機整體,形成圖3所示的測試執行綁定關系。
圖3 測試執行綁定關系
測試程序是運行在測試執行引擎上的,測試執行引擎執行時可以向控制臺輸出調試信息,控制臺通過交互命令在測試執行時調用測試程序中的函數或使用臨時編寫的腳本向測試執行引擎進行命令交互,以應對測試過程中的命令突發情況。
若使測試程序在測試執行引擎上有序進行,必須建立測試程序與環境拓撲的綁定關系,測試程序只有綁定到交聯環境圖中,才能使所編寫的測試程序與交聯環境拓撲圖相連起來。一個測試程序只能綁定到一個環境拓撲圖中,測試程序綁定環境拓撲圖后,就說明該測試程序是針對怎樣的測試環境進行的,實現了測試程序與測試環境分離,測試程序不再需要與測試環境緊密耦合在一起,而是通過這種綁定關系聯系在一起。也就確保了測試程序能夠運行在測試環境拓撲所對應的硬件設備中。
交聯環境拓撲中包含了測試設備與被測件之間的連接關系,測試設備也就是這里看到的虛擬設備,在繪制圖形時會指明該測試設備有哪些接口通道、是哪種通道的類型。虛擬的測試設備需要將接口通道綁定到具體的硬件板卡上,硬件板卡通過與被測件相連,則建立了ETest與被測系統之間的通信與信號連接通道。
在利用ETest設計測試監控頁面時,在監控頁面中包含有面板、面板上有組件,監控界面需要綁定到測試用例數據上,綁定上之后監控界面就能具有測試項目的執行能力,因為測試用例數據又綁定在測試程序上。
在ETest中,設計了網絡變量,用于在各個執行器之間或執行器與監控界面共享網絡數據,網絡變量的設計使得測試程序的開發不用考慮各個執行器之間的通信,通過網絡變量解決了多執行器分布式環境下變量定義的問題,在測試程序中可以如同測試程序中定義的變量一樣使用網絡變量,這極大地方便了多執行器之間的協同。
監控頁面中的每個組件都會綁定一個網絡變量,也會綁定一個動作響應函數,動作響應函數可傳遞網絡變量作為響應參數,這樣前端的監控頁面就可以從組件中讀取出網絡變量值,并把網絡變量值作為動作響應函數的參數值傳遞到響應函數中,在響應函數中就可以使用傳入的網絡變量。
2ETest的開發模式
2.1ETest主界面
ETest采用VSCode類似的布局,最左側是功能工具欄區,從上到下依次包含測試用例腳本、監控面板、仿真模型、通信協議、連接拓撲、設備接口、項目設置、資源庫、項目庫等;然后是功能目錄區,切換到每個功能后,該區列出該功能的目錄結構組成;點擊功能目錄區相應的葉子節點后,中間顯示出工作區,根據葉子節點的不同類型,工作區的可操作的內容會有所不同;最右側則是屬性設置區,工作區中選中某個對象后,右側直接顯示出相應的屬性,可以進行屬性值的設置,ETest的主界面窗口如圖4所示。
圖4 ETest的主界面窗口
在使用ETLua進行測試腳本開發時,提供了ETLua代碼編輯器,該編輯器全面支持語法高亮、自動完成、代碼塊折疊、實時語法檢查等,并在最右側提供了導航圖。
2.2ETest的使用模式
ETest提供了快速測試、自動化測試和測試系統開發3種使用模式。
快速測試使用模式通過配置測試環境和通信協議后,就可以自動生成可視化的測試頁面,在測試頁面中直接進行人工操作,執行快速的調試與測試。快速測試使用模式無需編程,通過簡單的測試環境、信號與協議的配置,就可以開展測試工作。
自動化測試使用模式通過可視化的配置測試環境和通信協議后,設計測試用例和開發測試腳本程序,測試用例使用YAML標記語言定義測試數據,基本結構為key: value鍵值對象。key代表了變量名稱,value可以是包括鍵值對象、數組、純量的數據,也可以使用縮進表示層級關系,組成更復雜的測試用例數據。測試程序開發時,ETest則提供了ETLua、Python、etl三種測試程序開發模式,ETLua、Python分別使用Lua和Python語法開發測試程序,etl則使用圖形化的方式開發測試程序,并且可將etl測試程序同步轉化為ETLua語言形式的測試程序。
完成測試程序開發后,就可以開展測試用例的執行,執行時可以選擇單個用例執行,也可以選擇多個用例直接批量執行,執行結果在右側控制臺顯示測試程序中的print信息以及elog信息。
測試系統開發使用模式是ETest最強大的使用模式,在這種使用模式下,可以開發出面向不同行業應用的測試系統。利用ETest開發測試系統時,下位機部分只需要開發信號采集處理板驅動程序、總線通信驅動程序,上位機部分開發可直接利用ETest集成開發環境開發操作終端的測試應用軟件。ETest開發測試應用軟件如圖5所示。圖5? ETest開發測試應用軟件
在下位機軟件開發過程中,ETest定義了驅動開發的標準ET-VISA,提供了驅動開發的規范,這使得所開發出來的板卡驅動具有一定的標準互換性。
ETestD API服務、ETestX執行器直接二進制復用,它們與板卡驅動以及嵌入式操作系統一起構成了測試單元可執行包,這個測試單元可執行包是完全通用的,不會因被測試對象的不同而不同。
在上位機軟件開發過程中,利用測試環境編輯器開發測試環境描述,利用監控面板設計器開發檢測應用軟件的人機交互界面,利用測試程序編輯器開發測試程序邏輯。開發完成后,通過將這些內容與ETest提供的ETL語言引擎、UI渲染器、測試數據記錄、測試執行調度、ETestD遠程代理等二進制包打包發布為測試應用軟件。
雖然針對不同的測試對象所打包發布的測試應用軟件整體上會有所不同,看似不具有通用性,但ETL語言引擎、UI渲染器、測試執行調度、測試數據記錄、測試報告生成、ETestD遠程代理等模塊都不需要修改,改動部分只需要包括ETL描述數據包即可。針對每種不同被測對象,只需要做簡單的配置和腳本化的測試程序邏輯開發,就可以快速形成測試應用軟件,大幅提高了開發效率,而且節省了研發經費。
在最終形成的操作終端可執行包和測試單元可執行包,按照包模塊劃分,共有11個模塊。其中,針對不同的被測對象,軟件模塊需要編寫的部分只有信號采集處理板驅動、總線通信板驅動、ETL語言描述包3部分,通用率達到了72%。由于信號采集板驅動、總線通信板驅動可以作為系列化驅動,也可以作為通用部分看待,那么在所有的軟件模塊中針對不同的被檢測對象,只需要更改ETL語言描述包部分就可以實現,從這個意義上來講,軟件通用性達到了90.9%。通過架構設計和測試領域的組件化開發,可以將測試設備研發的工作量降低為10%。
2.3ETLua開發與調試
ETest提供的編程接口包括了全局API、數據緩存庫ebuff、定時器庫etimer、日志輸出庫elog、數學計算庫math、數字信號處理庫e_dsp、界面開發庫eUI、并發操作庫e_sync、matlab集成庫e_matlab、Simulink集成庫e_simulink等。這些編程接口為ETest開發測試系統提供了便利。
使用ETlua開發測試程序時,對于協議收發的兩個基本API是write_msg和read_msg,分別用于向通道寫入報文數據和從通道讀出并解析出消息對象,其函數原型如下:
result=write_msg(channel,prot,msg,is_strict,option)
result=read_msg(channel,prot,tout_ms,option)
其中,channel為通道對象,prot為協議描述對象,msg為測試程序中的消息對象,msg為ETLua中的dict類型。
只要在ETest集成開發環境中描述出測試環境拓撲、協議模板后,測試程序就只需要操作msg以實現測試邏輯即可,通道的buffer操作以及由msg到protocal的打包與解包均由ETest框架來完成。
ETLua測試程序可以操作測試用例,測試用例中具有專用于開展測試的數據結構eTestData,可用如下類似的形式表示:
eTestData: {min: 0,max: 100,value: 30}
其含義是測試數據最小值為0、最大值為100、默認值為30。在測試程序中可以直接使用eTestData.GetValue(Str)生成測試程序,Str可以為“min”、“min+”、 “min-”、“max”、 “max+”、 “max-”以及“Random”,實現出測試中的等價類、邊界值以及隨機值數據的產生。
ETLua還提供了on_buff_recv用于訂閱通道發生數據輸入時的事件,其函數原型為:
on_buff_recv(channel,callback)
在callback回調函數中可以直接對數據緩存區ebuff進行操作,進行解包處理。
為進一步簡化測試程序的編寫,在ETest的復用庫中提供了OnRcvFromChannel模塊,用于進行協議OnRcvFromChannel以及協議處理函數的注冊,原型如下:
OnRcvFromChannel.RegisterProto(Proto,fun)
其中,Proto為在ETest中定義的協議,fun是當解析到具有該協議包的數據時,協議包的處理函數可以在這個處理函數中對接收到已經解包完成的協議包進行各種處理,如計算、界面顯示、通信響應等。
有了write_msg、read_msg、on_buff_recv、eTestData以及OnRcvFromChannel等機制,使得測試程序的開發既簡單又有效。但即使如此,開發完成后的測試程序也難免存在錯誤,對測試程序調試就顯得尤為重要。
測試程序需要與被測件的各個通道相連才能進行真正的調試工作,而在現實情況下,被測件并不一定能在開發測試程序時拿到,或者即使能拿到,由于被測件需要有串口、總線以及各類I/O資源以及被測件本身存在錯誤而導致調試困難。此時被測件的模擬以及虛擬通道就顯得尤為重要。
在ETest中提供了包括串口、CAN、DI/DO、AI/AO等mocker通道,用于模擬真實的通道資源,同時可以將測試程序設置為模擬被測件。通過被測件的模擬就可以驅動測試程序的調試工作,模擬被測件以一個單獨控制臺的形式運行在模擬執行器上,模擬被測件在接到測試程序發送的數據后,向測試程序反饋數據包,以檢驗測試程序在打包、解包處理中的正確性。
3ETest應用案例
測試系統集成開發環境ETest軟件的執行器不僅具有Windows、Linux、銀河麒麟等桌面非實時操作系統版本,也具有VxWorks、RTLinux、RTX等實時操作系統版本,另外執行器可以分布在由網絡組成的不同節點上,這使得ETest可以搭建出從單機到多機應用的不同規模的仿真測試環境。基于ETest軟件,我們已開發出針對列車控制系統、核電DCS控制系統、無人機飛行控制系統、底盤電子系統等測試工裝與檢測設備,經過各行業測試系統開發過程的檢驗,ETest已成為測試系統開發的利器。
某型號無人機飛行控制系統由氣壓空速傳感器、姿態傳感器、GPS定位導航、飛控計算機、電源控制器、旋翼舵機等部分組成,為完成飛控系統的聯調聯試、性能鑒定、故障檢測等任務,需要開發一款既能在無人機飛控系統研發階段實驗室使用的仿真測試系統,又能在使用維護階段使用的檢測維修設備。測試系統需要具有5路RS232、2路RS422、2路CAN、4路開關量、4路PWM輸出、2路頻率輸出接口。整套測試系統軟件部分采用ETest作為軟件開發環境,通過測試環境的連接拓撲描述出飛控計算機的連接拓撲,如圖6所示。
圖6 無人機飛控系統仿真測試連接拓撲
利用ETest的ETL協議描述語言描述涉及到的總線通信協議以及信號,如圖7所示,對于協議中的字段,設置自動匹配、自動驗證、自動值等屬性,自動值屬性在報文打包時若沒有消息賦值,則采用自動值作為該字段的值,自動匹配在報文解包時用于解析出符合要求的協議報文,自動驗證則對接收到的報文自動驗證該字段值是否正確,這些屬性為測試程序開發提供了便利。
圖7 無人機飛控系統協議開發
在連接拓撲、信號與協議描述配置完成后,使用ETest的測試用例數據描述、測試程序開發、測試監控窗體開發等模塊,設計開發出測試用例數據、測試程序和測試監控窗體,測試監控窗體的運行界面如圖8所示。
圖8 無人機飛控系統測試監控窗體
ETest提供了測試工裝程序的打包輸出功能,打包時可以通過配置界面配置系統名稱、測試模式、被測設備、測試套、測試項,在測試項配置頁面選擇測試套、適用的測試模式、適用的被測設備后,配置該被測設備的所有測試項。在ETest的UI設計管理頁面,具有打包輸出的工具欄按鈕,執行打包輸出后,可在配置的目錄下生成由ETestPlayer.exe為主體的測試工裝程序,執行ETestPlayer.exe可直接運行,運行后可在主界面框架的上部選擇被測設備,在下部選擇測試項,可調出被測設備測試項對應的測試頁面,如圖9所示,在該測試頁面中可以開展收、發數據的測試工作。
圖9 被測設備測試項測試頁面
4 結論與展望
ETest是首款符合ATML標準的國產自主可控的仿真測試系統集成開發環境,具有跨平臺的運行能力,可利用ETest開發出運行于國產計算平臺的測試系統,廣泛應用于第三方測試機構的測試環境搭建、裝備研制部門的測試工裝開發以及檢測設備研發單位的產品研制。作為工業基礎軟件,ETest填補了我國在測試系統集成開發環境方面的空白,提出的ETL語言具有完善的工具鏈,測試系統的設計與開發模式便捷、靈活,突破了領域語言定義與應用、異步事件循環調度、動態腳本實時處理、跨平臺的IDE架構設計與開發等多項關鍵技術,顯著提高了測試系統的開發效率,該IDE已在多個型號研制中發揮了重要作用,可以推廣應用于航空、航天、船舶等領域的裝備研制過程的軟硬件開發調試和測試試驗。期待早日建立起國產國產自主可控自動測試系統的裝備開發生態,迎接工業軟件中國制造的光明未來。
審核編輯:湯梓紅
-
嵌入式
+關注
關注
5092文章
19177瀏覽量
307673 -
接口
+關注
關注
33文章
8691瀏覽量
151917 -
測試系統
+關注
關注
6文章
825瀏覽量
62248 -
集成開發環境
+關注
關注
0文章
68瀏覽量
17754
原文標題:測試系統集成開發環境ETest及其工程應用
文章出處:【微信號:麥克泰技術,微信公眾號:麥克泰技術】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論