專家筆記:如何利用ETest制作標準化的測試工裝頁面
測試是保證重要資產(chǎn)設備質量和可靠性的重要手段。行之有效的測試工裝已成為提升產(chǎn)品測試效率、保證測試質量的必備要素,是各裝備行業(yè)保障產(chǎn)品開發(fā)與交付的關鍵。
為了方便學習,小編為大家奉上凱云科技專家筆記,手把手教您從0開始開始搭建測試工裝頁面~
01
?ETest簡介?
ETest作為一款自動化測試平臺開發(fā)工具,具有測試環(huán)境拓撲描述、測試監(jiān)控、測試腳本開發(fā)、測試數(shù)據(jù)設計、測試執(zhí)行數(shù)據(jù)采集與展示、測試結果分析等功能,基于該開發(fā)工具可以完成半實物仿真測試軟件的開發(fā)與部署。
該產(chǎn)品是由凱云科技率先在行業(yè)內推出的國產(chǎn)自主可控半實物仿真測試開發(fā)平臺,有效打破了國內該領域長期由進口軟件LabView、DSpace等產(chǎn)品壟斷的格局。ETest可廣泛應用于航空航天、武器裝備、工業(yè)控制、汽車電子、儀器儀表等各行業(yè)測試工裝、測試儀器等設備的研發(fā)。具有應用范圍廣、實時性強、開發(fā)效率高、使用簡單、易于擴展、國產(chǎn)自主等特點,支持各種國產(chǎn)CPU+國產(chǎn)操作系統(tǒng)的部署方案,同時兼容Windows、linux、Mac等多種操作系統(tǒng)。

02
?需求分析?
對于如下圖所示的連接關系拓撲,“設備A”與“設備B”之間通過RS232接口進行通信,“設備A”發(fā)送的報文,自然就是“設備B”需要接收的,“設備B”發(fā)送的報文自然也就是“設備A”需要接收的。

“設備A”與“設備B”均是“系統(tǒng)S”的組成部分,為了對系統(tǒng)S中的各個設備進行有效的測試,需要分別對A進行單獨測試,也要對B進行單獨測試,然后將“設備A”與“設備B”連成“系統(tǒng)S”,進行“系統(tǒng)S”的功能、性能測試等。
之所以要進行“設備A”與“設備B”的分別獨立測試,可能的原因包括:
(1)“設備A”、“設備B”由不同的廠家研制,不可能等到集成時再進行測試與試驗;
(2)“設備A”或“設備B”邏輯處理均十分復雜,測試與試驗需要的觸發(fā)條件或測試環(huán)境均需要有良好的可控性,可以方便地進行各種容錯性測試;
(3)“設備A”或“設備B”不僅是“系統(tǒng)S”的組成部分,可能還是“系統(tǒng)T”的組成部分,也就需要分別對“設備A”和“設備B”進行獨立驗證。
03
?ETest設計原理?
在對“設備A”進行測試時,自然就需要模擬“設備B”向“設備A”發(fā)送報文,然后模擬的“設備B”也需要接收“設備A”發(fā)出的報文,對其進行解析和判斷。
同理,在對“設備B”進行測試時,則需要模擬“設備A”向“設備B”發(fā)送報文,然后從模擬的“設備A”也需要接收“設備B”發(fā)出的報文,對其進行解析和判斷。
ETest作為一款自動化測試平臺開發(fā)工具,所承擔的角色就是作為測試設備,模擬“設備A”或“設備B”,并在模擬設備的基礎上,加入故障注入能力和測試處理邏輯。
3.1測試環(huán)境的描述
ETest中測試環(huán)境的描述包括了設備、連接拓撲和通信協(xié)議。設備目錄下可以包含組成系統(tǒng)的所有設備;連接拓撲可以通過設備組成連接拓撲,可以有多個連接拓撲,用于實現(xiàn)對系統(tǒng)中的不同設備進行分別測試。

上圖給出了對“設備B”進行測試的連接拓撲,在該連接拓撲中“設備B”作為被測設備,“設備A”就作為了仿真測試設備。
同理,對“設備A”進行測試的連接拓撲就需要另外建立,形成如下的連接拓撲,在該連接拓撲中“設備A”作為被測設備,“設備B”則變?yōu)榱朔抡鏈y試設備。

“設備A”與“設備B”之間互傳的協(xié)議包括三條,分別是AtoB01、AtoB02、BtoA00,如下圖所示。

測試環(huán)境構建完成后,需要開發(fā)測試程序和測試用例,測試程序也就是我們俗稱的測試腳本,而測試用例則是測試程序所使用的網(wǎng)絡變量或測試數(shù)據(jù)變量。除了開發(fā)測試程序和測試用例外,想要形成專業(yè)化的測試工裝,則需要利用ETest開發(fā)出測試用的UI頁面。
3.2ETest的綁定和運行機制
要想按照測試需求在測試環(huán)境基礎上組織好測試程序、測試用例、界面UI,就必須首先理解ETest中測試程序、測試用例、界面UI以及測試環(huán)境的關聯(lián)綁定和運行機制。
在ETest中,測試程序是運行在測試執(zhí)行引擎上的,測試執(zhí)行引擎執(zhí)行時可以向控制臺輸出調試信息,控制臺通過交互命令在測試執(zhí)行時調用測試程序中的函數(shù)或使用臨時編寫的腳本,向測試執(zhí)行引擎進行命令交互,以應對測試過程中的命令突發(fā)情況。

在ETest要達到測試能在測試執(zhí)行引擎上有序進行,必須建立測試程序與連接拓撲的綁定關系,測試程序只有綁定到連接拓撲中,才能使得所編寫的測試程序與測試環(huán)境相連起來。一個測試程序只能綁定到一個連接拓撲中,測試程序綁定連接拓撲后,就說明該測試程序是針對怎樣的測試環(huán)境進行的,實現(xiàn)了測試程序與測試環(huán)境分離,測試程序不再需要與測試環(huán)境緊密耦合在一個,而是通過這種綁定關系聯(lián)系在一起。也就確保了測試程序能夠運行在測試環(huán)境拓撲所對應的硬件設備中。
連接拓撲中包含了測試設備與被測件之間的連接關系,測試設備也就是這里看到的虛擬設備,在繪制圖形時會指明該測試設備有哪些接口通道,通道的類型是什么樣的。虛擬的測試設備需要將接口通道綁定到具體的硬件板卡上,硬件板卡通過與被測件相連,則建立了ETest與被測系統(tǒng)之間的通信與信號連接通道。
在利用ETest設計測試監(jiān)控頁面時,在監(jiān)控頁面中包含有面板、面板上有組件,監(jiān)控界面需要綁定到測試用例數(shù)據(jù)上,綁定上之后監(jiān)控界面就能具有測試項目的執(zhí)行能力,因為測試用例數(shù)據(jù)又綁定在測試程序上。
在ETest中,設計了網(wǎng)絡變量,用于在各個執(zhí)行器之間或執(zhí)行器與監(jiān)控界面共享網(wǎng)絡數(shù)據(jù),網(wǎng)絡變量的設計使得測試程序的開發(fā)不用考慮各個執(zhí)行器之間的通信,通過網(wǎng)絡變量巧妙地解決了多執(zhí)行器分布式環(huán)境下變量定義的問題,在測試程序中可以如同測試程序中定義的變量一樣使用網(wǎng)絡變量,這極大地方便了多執(zhí)行器之間的協(xié)同。
監(jiān)控頁面中的每個組件都會綁定一個網(wǎng)絡變量,也會綁定一個動作響應函數(shù),動作響應函數(shù)可傳遞網(wǎng)絡變量作為響應參數(shù),這樣前端的監(jiān)控頁面就可以從組件中讀取出網(wǎng)絡變量值,并把網(wǎng)絡變量值作為動作響應函數(shù)的參數(shù)值傳遞入響應函數(shù)中,在響應函數(shù)中就可以使用傳入的網(wǎng)絡變量了。響應函數(shù)是測試程序的一部分,在測試程序中既有界面組件的響應函數(shù),也會有一些測試與仿真邏輯所需要的一些函數(shù)。
3.3綁定操作與關系分析
現(xiàn)在我們看看在ETest中實現(xiàn)如何這種綁定,測試程序綁定連接拓撲,如下操作是測試程序向連接拓撲的綁定。

以下操作是測試用例向測試程序的綁定。

而在測試的UI頁面上,UI組件綁定測試用例中的網(wǎng)絡變量、綁定測試腳本中的響應函數(shù)如下圖。

測試UI頁面與測試用例之間的綁定則通過執(zhí)行配置實現(xiàn)。

下面我們分析一下測試用例、測試程序、頁面、連接拓撲之間的綁定關系,如下圖所示。

一個UI頁面可以綁定多個用例,一個用例只能綁定一個程序,一個程序只能綁定一個連接拓撲。
關于UI頁面的綁定對應關系,可以得到以下結論
(1)一個UI頁面可以綁定多個用例(2)一個UI頁面可以綁定多個程序(3)一個UI頁面可以綁定多個連接拓撲
關于用例的綁定對應關系,可以得到如下結論:
(1)一個用例只能綁定一個程序(2)一個用例只能綁定一個連接拓撲(3)一個用例可以綁定多個UI頁面
關于程序的綁定關系,可以得到如下結論:
(1)一個程序只能綁定一個連接拓撲(2)一個程序可以綁定多個用例(3)一個程序可以綁定多個UI頁面
3.4UI頁面的標準化設計
由于“設備A”與 “設備B”相連交互,各自展現(xiàn)的UI界面實際上是相同,因為無論是發(fā)送還是接收,都要按照字段解析顯示在頁面組件上,如下圖所示。

這個頁面設計,不考慮誰向誰發(fā)的問題,可以選擇測試設備;如果選擇了測試設備為“設備A”,則就是“設備A”向“設備B”發(fā)送報文,從“設備B”中接收數(shù)據(jù);如果選擇了測試設備為“設備B”,則就是“設備B”向“設備A”發(fā)送報文,從“設備A”中接收數(shù)據(jù)。
對于“設備A”作被測設備的需求來講,需要這個UI頁面;對于“設備B”作被測設備的需求來講,也需要這個UI頁面。
這個UI頁面對于“設備A”與“設備B”之間傳輸?shù)拿織l協(xié)議。均有組包、發(fā)送與解包、接收的操作,也具有使用“接收處理”自動從測試設備接收報文并顯示的功能。
04
?ETest中的UI頁面實現(xiàn)??
4.1UI頁面設計的困境
3.4節(jié)中描述的UI頁面顯然可以用于“設備A”的測試,也可以用于“設備B”的測試。UI頁面要用于“設備A”的測試就需要綁定“設備A”的連接拓撲,也需要綁定“設備B”的連接拓撲。根據(jù)上一節(jié)的結論,在ETest中是支持這樣做的。我們再進一步分析,就發(fā)現(xiàn)要這么支持,必然只能形成如下圖所示的綁定關系。

要實現(xiàn)上述綁定關系所決定測試需求,自然我們就需要兩套用例和程序,來使得UI支持對“設備A”和“設備B”的測試。
而我們知道,對于用例和程序來講,如果以通信協(xié)議為中心,則無非就是協(xié)議的發(fā)送、接收和判斷,以協(xié)議為中心來規(guī)劃測試程序和測試程序,也比較自然,我們只有一套用例和程序,想要既支持對“設備A”的測試,也要支持對“設備A”的測試。按照上述綁定關系,顯然是無法做到的,怎么辦呢?
4.2解決途徑
我們只有一套用例和程序,要實現(xiàn)出如下圖所示的連接拓撲綁定關系。

自然就需要在UI頁面上可以動態(tài)選定連接拓撲,因此我們專門在UI頁面上放置了一個通用的面板,這個面板可以應用于所有的UI頁面中,在該面板上具有測試設備的選擇下拉框,選擇測試設備后,執(zhí)行“確定”按鈕操作,如下圖所示。

由于目前程序到連接拓撲的綁定為靜態(tài)綁定,綁定后才下傳到執(zhí)行器進行綁定的解析。因此,我們在執(zhí)行確定時,判斷連接拓撲中是否允許這樣的測試設備選擇,如果選擇的測試設備與連接拓撲不符,則提示“測試設備與測試環(huán)境不匹配”,需要重新選擇,確保測試設備與測試環(huán)境匹配,如圖所示。

當看到測試設備與測試環(huán)境不匹配的提示后,我們需要重新選擇正確的測試設備。
通過上述途徑,可以實現(xiàn)一套UI頁面、一套測試程序、一套測試用例,測試系統(tǒng)中不同測試設備的功能。
4.3匹配的判定
在測試程序中,需要編寫選擇測試設備的響應函數(shù),這個響應函數(shù)需要遍歷環(huán)境拓撲中的devices集合,devices集合中包含當前連接拓撲中的全部測試設備描述對象,不包含被測設備對象,因此如果將被測設備設置為當前連接拓撲中的測試設備時,自然是無法在devices集合中找到的。見下面的響應函數(shù)Lua腳本。

注釋掉的腳本語句中,不能直接使用被測設備devices.***.TaskManagerRS232,會導致執(zhí)行器出錯。

因此,我們遍歷devices,用通道的名稱與預制的設備通道名稱進行匹配,匹配后將通道賦值給一個全局的通道對象TestDeviceRS232,在程序的所有處理函數(shù)中均用這個通道對象進行處理,這樣就可以實現(xiàn)測試程序與通道對象的松耦合,有利于測試程序的復用和移植。
05
?最后啟示?
使用ETest時,需要深刻地理解ETest中的綁定關系,為了實現(xiàn)更加通用化的測試程序、UI頁面、測試用例,就需要利用好ETest中的綁定關系原理,簡化測試設計工作。進一步,ETest在接口開放上,可以開放出更多的內部接口,用于在測試程序中使用,實現(xiàn)更加靈活的測試程序開發(fā)。對于ETest專業(yè)級的用戶,則可以實現(xiàn)更加高級的應用。