蔣倩 岳龍 李書杰


摘要:針對ATS系統在工程化應用測試過程中大批量回歸測試耗時耗力的問題,構建了一個自動化測試平臺。該平臺的核心模塊仿真管理器提供測試腳本編寫、構造測試環境、自動加載被測對象、自動執行測試等功能。在結合ATS系統功能及內部接口特征人工完成測試腳本的基礎上,可重復進行大批量回歸測試。本文以ATS應用服務器子系統為例,展示了如何在該平臺上實現自動化測試,并總結了每輪回歸試驗的測試用時和人力資源消耗情況。試驗結果表明該自動化測試平臺幫助測試人員提高測試效率,幫助研發人員進行缺陷預防,以減少系統開發成本、縮短系統開發周期,為系統持續集成提供可能性。
關鍵詞:自動化測試;缺陷預防;ATS系統
中圖分類號:TP24 文獻標識碼:A 文章編號:1007-9416(2019)05-0160-03
0 引言
ATS系統(列車自動監控系統)廣泛應用于城市軌道交通信號控制領域,它與ATP系統(列車自動防護系統)、ATO系統(列車自動駕駛系統)合稱ATC系統(列車自動運行控制系統),共同完成高密度城市軌道交通安全高效運輸作業。ATS系統主要提供列車運行監督和控制的自動化行車調度指揮功能[1],對保障軌道交通線路運營高效率和高質量具有重要意義。
目前,湖南中車時代通信信號有限公司的ATS系統已投入長沙地鐵3號線,長沙地鐵4號線的工程應用,在項目后期系統已趨于成熟,功能需求不會發生重大變更。當系統發生輕微變更時,除對變更點及其影響范圍進行測試外,為防止變更影響范圍識別不充分會期望對整個系統進行全面的回歸測試。然而該階段工期緊、任務重,這就對測試效率及測試資源提出更高要求。為解決這一困難,提出用自動化測試方法代替一部分人工手動的測試方法來提高測試效率,解放生產力。
現有的軟件自動化測試工具種類繁多,例STAF,LR(Load Runner)和QTP(QuickTest Professional)等,但是對于軌道交通信號系統領域,商業的自動化測試工具都存在一定的不足,例如,無法滿足實時性要求,無法支持專用協議,傾向于單一類型測試[2][3][4]。本文根據ATS子系統測試方法,設計出一套通用ATS系統自動化測試平臺。
1 ATS自動化測試平臺設計
ATS系統自動化測試平臺采用黑盒測試的方式,只調用被測子系統的接口來測試程序的功能。測試平臺的結構如圖1所示,由被測對象、子系統模擬器和仿真管理器組成。測試平臺采用VisualC++軟件開發。
1.1 仿真管理器
仿真管理器主要提供配置測試環境、編譯測試腳本、加載測試計劃、執行測試腳本、生成測試報告等功能。人機界面如圖2所示。
1.1.1 測試腳本編譯模塊
腳本的編輯環境和執行模塊。測試人員根據測試用例人工在仿真管理器上手動編寫測試腳本,將測試用例轉化為測試腳本語言。該模塊支持測試腳本的增加、刪除、重命名、編寫、保存、關鍵字查找功能。測試腳本可采用JS和VBS兩種格式來儲存,需要構造發送的消息和期望接收的消息。該模塊在執行測試腳本的過程中記錄并顯示發送和接收的消息,根據測試腳本中的預期結果進行比較和判斷,輸出測試結果,更新腳本執行狀態。
1.1.2 消息發送模塊
消息發送處理模塊根據測試腳本中設置的輸出消息的目的地隊列和類型,向目標隊列中發送構造好的數據,可支持批量發送消息。
1.1.3 消息接收模塊
消息接收處理模塊根據測試腳本中設置的輸入消息的源隊列和類型,當監聽到消息隊列中接收到期望的消息類型時,觸發消息處理函數對消息進行反解。該模塊能同時處理多個消息源發送來的多包消息。
1.1.4 生成測試報告模塊
每次測試計劃的腳本全部執行完畢都會自動生成本次測試的測試報告,記錄和存儲每個測試用例的編號,測試執行的開始時間結束時間,測試結果,測試日志以及測試過程中出現的異常。報告采用excel格式統一模板輸出,以供測試人員再次編輯。
1.2 子系統模擬器
由于ATS系統是一個基于網絡通信的分布式系統,針對某個子系統的測試往往需要其他多個子系統同時配合參與,因此,設計了子系統模擬器來構造外部測試環境。子系統模擬器類似于消息路由器,作為仿真管理器和被測子系統的通信橋梁,可自定義消息路由規則和消息收發隊列。子系統模擬器是個只讀對話框,只顯示收發的消息信息不可編輯。
1.3 被測子系統
在該自動化測試平臺中,被測對象可以是ATS系統中某一子系統,也可以是多個子系統的集成,該設計可同時支持ATS子系統階段和系統集成階段的測試。
2 ATS自動化測試平臺應用
應用服務器子系統為ATS核心服務器,提供主要處理列車跟蹤識別,列車調整,自動進路,運行圖編輯,派班管理等功能。與應用服務器交互的子系統有車站服務器、通信服務器、運行圖管理客戶端、站場監控客戶端等。應用服務器承擔功能重大,涉及子系統眾多,交互消息復雜,對其開展自動化測試顯得尤為重要。本章以應用服務器單個子系統為被測對象,選擇設置道岔定操功能為例來詳細說明如何在該平臺上實現自動化測試。
2.1 測試用例定義
設置道岔定操功能是指聯鎖系統與ATS系統通信正常的情況下,ATS系統向聯鎖系統發送道岔定操命令,由聯鎖系統來實現將道岔置于定位。從各個子系統之間相互傳遞消息的順序關系,可設計一條正向測試用例描述為:采用中心調度臺模擬器向應用服務器發送內部消息m,采用車站服務器模擬器驗證應用服務器是否向其發送正確的內部消息n,采用中心調度臺模擬器驗證應用服務器是否向其發送正確的記錄事件消息k。
2.2 測試腳本編寫
在完成測試用例定義后,即可在仿真管理器中編寫腳本。為便于測試腳本與測試用例的追溯,腳本名稱直接采用測試用例的用例編號。測試腳本在編寫過程中要注意以下幾個關鍵點:
(1)構造測試前置條件。構造正確的測試環境,離不開對前置條件的充分理解,只有構造了正確的前置條件測試才是有效的。本條測試用例中隱藏的前置條件有:中心調度在客戶端登錄,控制模式為中心控。(2)構造輸入消息和監聽輸出消息。無論是構造輸入消息還是監聽輸出消息,都需要了解兩個交互子系統之間的內部接口協議,明確消息的每個字段含義。本條測試用例中客戶端與應用服務器內部消息m的字段有時間戳、CRC校驗、消息ID、消息長度、控制句柄值、聯鎖區編號等。(3)發送消息隊列和接收消息隊列。如果隊列配置錯誤,則會導致消息發不出去或者接收不到,所以明確被測對象的收發隊列也是測試執行的關鍵。這個需要平臺配置和腳本共同配合解決。從平臺配置上看,針對某個子系統模擬器需要配置四個隊列,分別是從被測節點接收消息隊列A,向仿真管理器發送消息隊列B,從仿真管理器接收消息隊列C和向被測節點發送消息隊列D;針對仿真管理器,與其交互的所有子系統模擬器的隊列B都需要配置正確。從測試腳本上看,需在腳本中寫入正確的隊列B和D,保持一致則可使消息發送成功或者監聽到期望消息。(4)判定測試通過條件。被測對象輸出的消息是待驗證的消息,在測試過程中需實時監聽,一旦收到消息反解后,需根據消息字段含義對其關鍵字段進行驗證,以確保被測對象輸出消息的正確性。本條測試用例中內部消息n和記錄事件消息k是驗證對象。驗證的內容包含消息n的消息ID、聯鎖區編號、控制句柄值等,消息k的消息ID、報警等級等。
2.3 測試用例執行
完成腳本編寫后便可在仿真管理器上直接執行測試腳本。執行腳本可以一次執行一條腳本,也可以一次執行一個文件夾下的所有腳本,也可以按測試計劃執行腳本。在仿真管理器上,執行腳本開始時會打印開始時間和被執行腳本名稱,執行腳本過程中會根據腳本打印出關鍵消息以及出現的異常,執行腳本結束后會打印執行完畢的時間和執行結果。在子系統模擬器上,會打印出收發消息的時間,隊列名稱和消息內容。針對本條測試用例,選擇當前測試腳本點擊執行,執行成功后在被執行腳本名稱前更新一個畫勾的圖標顯示測試通過。
2.4 測試結果分析
執行本條腳本共耗時2s,針對該功能還需定義很多反向測試用例,例如,發送CRC錯誤,消息長度錯誤,時間戳錯誤的內部消息m,發送被篡改的內部消息m,未登陸的客戶端發送內部消息m等。事實上,對于該功能我們共定義了13條測試用例,只需要一個操作耗時78s即可完成測試,大大節省了人工成本和時間成本。
當系統功能趨于穩定時,工人編寫的測試腳本利用率極高,只需人工啟動本次測試計劃就可以開展自動測試。測試過程無需人工參與,選擇非工作時間執行測試,既可以節省人工成本又可以節省時間成本。測試腳本一旦創建對測試執行人員要求較低,可釋放更多的人力用于維護測試腳本和開展進一步測試開發工作。當軟件變更不影響系統功能時,研發人員在完成軟件變更發布給測試人員前對其進行全功能自動化測試,便可以提前發現軟件缺陷,對軟件缺陷進行預防,避免一次無用發布。
3 結語
ATS系統自動化測試平臺的意義在于,第一,執行測試的過程無需人工參與無需上班時間,有效節省了人工成本和時間成本;第二,有效杜絕修改一個缺陷引入更多缺陷;第三,在發布前由研發人員執行自動化測試可有效預防缺陷發生;第四,針對業主不斷提出的新需求,可縮短開發周期。然而,該測試平臺仍存在一定的局限,當功能發生變更則需要人工重新編寫測試用例和測試腳本,維護成本較高。在未來,ATS系統自動化測試平臺仍有很多工作可以開展,例如:與現有的缺陷管理系統結合將測試發現的缺陷自動錄入系統,或通過e-mail將測試結果通知指定人員;與現有的配置管理系統結合對編譯完成的代碼自動下載部署,自動執行測試腳本;與測試用例結合探討自動生成測試腳本的方法等;與人機交互界面結合探討UI功能測試。
參考文獻
[1] 趙威.城市軌道交通列車自動監控系統的研究[J].鐵路通信信號工程技術(RSCE),2008,5(5):30-32.
[2] 傅李育.軌交信號系統自動化測試集成平臺設計與實現[M].上海:上海交通大學,2013.
[3] 高璐瑤.安全苛求軟件的自動化測試技術研究[M].杭州:浙江大學,2013.
[4] 王丹.CBTC系統的自動化測試研究[M].北京:北京交通大學,2010.