


摘要:針對CBTC系統數據轉換工具測試中由于數據量大、回歸輪次多等原因導致的耗時、耗力的現狀,提出了一種自動化測試框架,旨在提高測試效率,縮短測試時間,減少人為錯誤。該自動化測試框架易于擴展,可以靈活地應用到各個項目中。
關鍵詞:自動化測試框架;測試腳本;數據轉換
0? ? 引言
基于通信的列車控制(Communication Based Train Control,簡稱CBTC)系統已經成為城市軌道交通信號系統的發展方向[1]。數據,作為CBCT系統中的核心組成部分,肩負著為整個CBTC系統的運行提供線路數據信息、子系統數據信息等重要功能。為了快速準確地生成數據,數據轉換工具應運而生,該工具提供了子系統設計數據的生成、系統數據和子系統設計數據的安全校驗以及子系統應用數據的生成等功能。由于生成數據的安全性和準確性是CBTC系統安全連續運行的重要保證,因此需要對數據轉換工具進行充分有效的測試。
在項目執行過程中發現,目前的數據轉換工具測試存在以下問題:
(1)手工黑盒測試回歸效率低。
(2)由于數據量大,手動測試存在偶然性和不確定性。
(3)回歸的覆蓋率不足,容易遺漏問題。在項目執行過程中,由于執行進度和交付時間緊等原因,測試策略通常是回歸測試,也就是根據需求變更和代碼變更挑選回歸范圍,在回歸覆蓋率和測試時間之間折中,但這樣很容易遺漏問題。
本文針對前面提到的數據轉換工具測試中由于數據量大、回歸輪次多等原因導致的耗時、耗力的現狀,提出一種自動化測試框架,旨在:
(1)降低回歸成本,減少人力和時間投入;
(2)提高回歸覆蓋率,每一輪測試都可以做到全回歸;
(3)提高回歸的穩定性,使測試結果確定。
1? ? CBTC系統數據轉換工具概述
圖1是CBTC信號系統的架構,包括列車自動監控子系統(簡稱“ATS子系統”)、區域控制器(簡稱“ZC子系統”)、聯鎖子系統(簡稱“CBI子系統”)和車載子系統(簡稱“OBCU子系統”)[2]。
下面簡單介紹一下各子系統的功能:
(1)ATS子系統完成列車運行監控、報警顯示、進路排列和運行圖的調整等功能,還可以提供近期的列車運行記錄的查詢。
(2)OBCU子系統是控制列車運行和保證列車實現移動閉塞制式的關鍵設備。
(3)ZC子系統是重要的地面控制設備,主要功能是對本區域內運行的列車進行管理,同時考慮列車進路、道岔狀態、線路限速以及其他障礙物的條件,向列車發送“移動授權”。
(4)CBI子系統是為了保證行車安全,在進路、道岔和信號機之間存在的相互制約關系。主要負責采集道岔、信號機、屏蔽門、緊急按鈕等的狀態信息,并控制它們,完成列車進路的辦理和取消。
每個子系統都需要軌旁數據(比如線路上道岔、軌道等軌旁設備的信息)和子系統數據(比如站臺信息、進路信息等)的支持,而子系統軟件運行時則要讀取特定格式(比如二進制或者XML格式)的文件,數據轉換工具的作用就是將軌旁數據和子系統數據根據各子系統的設計要求,轉換成規定格式的設計數據。下面簡單介紹一下數據轉換工具。
CBTC系統數據轉換工具是用于系統設計和數據轉換的軟件平臺,功能包括:
(1)導入、導出軌旁數據;
(2)導入、導出系統參數;
(3)導入、導出子系統設計數據;
(4)數據校驗,工具可以檢查出源數據的格式錯誤,并正確報警。
該工具的輸入數據是軌旁數據和子系統設計數據,多為Excel格式;輸出為子系統數據,多為二進制格式。
為了確保系統運行正常,一定要保證轉換前后數據的一致性。
2? ? 自動化測試框架概述
框架是整個或部分系統的可重用設計,表現為一組抽象構件及構件實例間交互的方法;另一種定義認為,框架是可被應用開發者定制的應用骨架。前者是從應用方面給出的定義,而后者是從目的方面給出的定義。從框架的定義可以了解,框架可以是被重用的基礎平臺,也可以是組織架構類的東西。其實后者更為貼切,因為框架本來就是組織和歸類所用的。
自動化測試框架可以提供自動化測試執行和管理功能的架構模塊,測試完成后統計測試結果。自動化測試框架需要滿足以下幾個要求:
(1)自動化測試更便于實施,也就是說,寫測試腳本要方便,要讓不怎么懂技術的測試人員也可以寫自動化測試腳本。
(2)解決自動化測試腳本本身存在的問題,如異常處理和場景恢復等[3]。一個自動化測試框架在批量執行腳本的情況下,不論遇到什么情況,如腳本運行錯誤、腳本質量錯誤、測試環境異常、被測設備死機或掛起等,都要有能力重新清理測試環境,使測試環境恢復到最初始的狀態,并執行接下來需要執行的腳本。
(3)易于維護。自動化測試是為了提高效率,因此測試框架和測試腳本都要易于維護,不能讓維護變成另一種工作量。
(4)可重用性[4],在框架里,可以實現一些通用功能,簡化腳本開發過程。
(5)測試報告美觀易讀。
因此,自動化測試框架應具備以下功能:
(1)Log:日志記錄和管理功能,針對不同情況,設置不同的日志級別,方便定位問題。
(2)Report:生成測試報告。
(3)Common:公共函數、方法以及通用操作的管理,遵循高內聚、低耦合的原則,為編寫腳本提供便利。
(4)TestCase:測試用例管理功能。
(5)Harness:提供多種測試用例的執行方式,方便測試人員執行腳本;還負責異常梳理和場景恢復。
3? ? 針對數據轉換工具的自動化測試框架
3.1? ? 測試框架架構
測試框架架構如圖2所示,其中DataTool為被測體,測試框架包括:
(1)Log:提供日志功能,設置不同的日志級別,可以在案例執行過程中寫入日志,方便定位問題。
(2)Harness:提供了測試案例的管理方式和執行方式。
(3)TestCase:提供腳本編寫的模板,測試人員可以基于框架編寫測試腳本。
(4)Common:提供一些可重用功能,以簡化腳本編寫難度。
(5)Report:測試結束生成測試報告,提供簡潔明了的測試結果和測試日志。
(6)ExcelReader:針對數據轉換工具開發的Excel讀取和修改模塊,用來讀取數據工具的輸入數據。
(7)BinaryReader:針對數據轉換工具開發的二進制文件讀取模塊,用來讀取和解析數據工具的輸出數據。
對于數據轉換的測試流程為:測試腳本分別讀取輸入數據和輸出數據,依據一定的規則進行運算,然后將輸入數據和輸出數據進行比對,記錄日志。
對于數據校驗的測試流程為:根據測試目的,修改輸入數據,運行數據轉換工具讀取修改后的輸入數據,通過測試腳本讀取報警內容,和期望結果進行比對,記錄日志。
3.2? ? Log功能
Log功能提供如下接口:
(1)LogPass(string msg):記錄測試通過。
(2)LogFail(string msg):記錄測試失敗。
(3)LogInfo(InfoType iType,string msg):記錄測試日志,其中日志類型分為Info、Error、Debug和Highlight四種類型,方便測試人員定位問題。
測試人員可以在編寫腳本時調用Log模塊記錄日志,還可以通過該模塊根據判據記錄測試結果。
3.3? ? Harness功能
Harness模塊提供了如下3個主要功能:
(1)測試腳本管理:該模塊提供了測試腳本的編寫模板,測試人員可以根據模板編寫腳本,如果有其他需求,該框架也可以很簡便地擴展。
(2)測試腳本執行:該模塊支持多種執行方式,使用模塊提供的命令行,可以按照測試人員分類執行,也可以按照測試類別分類執行。
(3)測試場景恢復:測試框架還支持在腳本執行前后進行特定的場景恢復操作,保證腳本之間的獨立性。
3.4? ? TestCase功能
在該測試框架中,每個測試腳本均為一個命名唯一的函數,且都有唯一的屬性,Harness模塊會根據該屬性讀取并執行測試腳本。這樣,測試人員只需要關注腳本編寫本身,極大地降低了對測試人員編碼水平的要求。
測試人員編寫腳本時可以根據測試目的調用Common和Log模塊提供的接口。
3.5? ? Common功能
Common模塊提供了一些可復用的功能,封裝成統一的接口,供測試腳本調用,降低了腳本編寫難度。主要功能包含:
(1)支持多種數據類型的結果比對,并生成日志;
(2)讀取二進制文件,支持大小端,并且按照規定的格式解析二進制文件;
(3)讀取XML文件;
(4)讀取和修改Excel文件,這樣,測試人員可以通過接口調用來修改Excel文件,而非人工操作,極大地提高了測試效率和測試準確率。
3.6? ? Report功能
Report模塊提供了兩種形式的報告:txt格式和xml格式。
(1)txt格式的測試報告包含測試腳本執行過程中生成的日志,如圖3所示。
(2)xml格式的測試報告提供了測試結果總結,如圖4所示,包含測試環境、測試時間、測試腳本名稱和測試結果,執行失敗的腳本會高亮。測試報告的內容和格式也可以根據測試需求進行修改和擴展。
4? ? 結語
數據工具自動化測試框架可以用于數據工具測試,作為框架,它的結構是開放的,使用時可以根據測試的需要對其進行擴展和改進,可靈活運用到各種項目中。在項目執行過程中,通過使用該工具,可以極大地提高測試效率和測試準確率,對測試人員的代碼水平也沒有太高的要求。
[參考文獻]
[1] 2009—2012年中國城市軌道交通線網規劃及行業設備報告[R].
[2] IEEE Standard for User Interface Requirements in Communications-Based Train Control (CBTC) Systems: 1474.2—2003[S],2003.
[3] KELLY M.Choosing a test automation framework[EB/OL]. [2020-03-20].https://www.ibm.com/developerworks/rational/library/591.html.
[4] NAGLE C.Test Automation Frameworks[EB/OL].[2020-03-
20].http://safsdev.sourceforge.net/FRAMESDataDriven-TestAutomationFrameworks.htm.
收稿日期:2020-03-24
作者簡介:胡甜(1982—),女,湖北紅安人,博士,工程師,軟件測試主管,研究方向:嵌入式軟件白盒測試、軟件自動化測試。