黃曉帆,歐陽敏
(卡斯柯信號有限公司 測試部,上海 200071)
城市軌道交通信號系統主要包括車載控制器(CC,Carbone Controller)、區域控制器(ZC,Zone Controller)、線路控制器(LC, Line Controller)、計算機聯鎖(CI, Computer Interlocking)系統和自動列車監控(ATS,Automatic Train Supervision)系統。其中,ATS系統主要提供列車運行監督和控制的自動化行車調度指揮功能[1-3]。隨著城市軌道交通建設的不斷發展,地鐵運營自動化程度不斷提高,地鐵列車運營管理日趨復雜,原先由司機執行的許多工作轉變為由自動化系統和中心調度員聯合完成,ATS系統涉及的運營場景更加復雜[4]。為此,對ATS軟件的測試要求更高,有必要研究和開發ATS軟件的自動化測試系統,實現對多場景、多功能的測試覆蓋,支持迭代開發的自動化回歸測試,有效發現軟件中存在的缺陷,降低測試人員工作強度。
常見的軟件動態測試方法分為2類:白盒測試和黑盒測試。白盒測試又稱為結構測試,需要了解程序內部結構,據此設計測試用例[5]。黑盒測試又稱為功能測試,測試人員無需了解程序內部結構,重點關注系統功能是否滿足用戶要求。目前,雖有不少成熟的商用自動化測試工具,如LR(LoadRunner)和QTP(QuickTest Professional)等,但這些工具不滿足實時性要求,且不支持專用協議,多適用于單一類型測試等[6-7],不適用于具有復雜專用接口和業務流程的軌道交通信號系統的測試。
在分析ATS系統相關接口、系統構成和主要功能的基礎上,提出ATS軟件自動化測試系統(簡稱:測試系統)方案,利用虛擬機技術搭建了ATS系統模擬測試環境,設計基于場景模擬的測試用例,驗證ATS組合功能的正確性,以快速交付可靠的ATS軟件產品。
ATS系統自身功能的實現建立在通過接口與相關系統進行通信和信息交互的基礎上,其接口包括2類:
(1)與信號系統內部的其它子系統的接口,包括 CI、CC、ZC、LC;
(2)與信號系統之外的其它系統的接口,包括綜合監控系統(ISCS,Integrated Supervisory Control System)、時鐘系統(CLOCK,Clock System)、旅客信息系統(PIS,Passenger Information Service System)、廣播系統(PA, Public Address System)、牽引供電系統(SCADA, Supervisory Control and Data Acquisition System)、 發車表示器(TDT,Train Depart Timer)等。
ATS系統主要由工作站、應用服務器、通信前置機、網關服務器、車站服務器、在線時刻表等組成。
工作站通常設置2個或3個屏幕的窗口,其中,1個為運行圖顯示窗口,主要用于顯示計劃運行圖,提供運行圖修改、打印等操作界面;另外1個或2個為站場圖顯示窗口,主要用于顯示站場設備狀態、時間、報警,提供權限管理、列車運行控制、車輛管理、報警管理、報表等操作的人機交互界面[8]。
應用服務器作為ATS系統的數據處理中樞,向工作站發送站場圖顯示數據、告警、列車狀態信息,處理調度人員、維護人員、派班人員的各種操作請求,并將請求發送給相關系統執行;保存系統日常運行的各種數據,提供事后分析和回放。
通信前置機負責ATS系統與信號系統之外其它系統的通信;根據項目的不同要求,實現ATS與PIS、ISCS、PA、CLOCK等的接口,以及與其它線路的接口[9]。
網關服務器為ATS系統的關鍵核心模塊,負責與ATC接口,完成與CC、ZC和LC子系統通信,提供會話管理、臨時限速管理、計軸有效性確認、列車控制命令管理、列車告警管理、列車連掛管理等。
車站服務器為ATS系統的集中站數據處理中樞,完成與CI和TDT系統的通信,本集中站內列車追蹤和計劃調整;自動辦理進路。若ATS接入車輛段,還可提供自動洗車和自動出入庫控制功能。
在線時刻表主要用于日常運營過程中當天計劃圖、當天實際圖、歷史計劃圖、基本計劃圖、預測計劃圖的顯示,提供增加列車、刪除列車、變更列車運行車次等時刻表在線調整的操作界面。
場景是指由事件觸發形成相應的流程,進而形成一系列事件的結果,通常用于描述軟件使用過程中的基本流程和功能需求。基于場景的測試方法從最終用戶的角度來測試軟件是否滿足用戶需求,針對軟件中所有可能出現的業務流程,重點關注測試場景中各個功能項是否能夠滿足需求且正確執行。
在軌道交通信號領域,相對于CI、CC、ZC、LC,ATS系統直接面向地鐵運營管理人員。面對日益復雜的運營場景,用戶需求變化更為頻繁。ATS系統的軟件測試不僅要求驗證ATS軟件單個功能項的正確性,還需要考慮地鐵運營場景和用戶使用習慣,驗證ATS軟件多個功能項組合的正確性,對測試資源和效率的要求更高,亟需借助自動化測試代替部分手工測試,以提高測試效率。
如圖1所示,基于場景模擬的ATS軟件自動化測試系統由被測對象服務器、模擬集成服務器、測試管理服務器3臺服務器組成。
被測對象服務器上運行被測試的ATS系統的軟件,即需要被驗證的軟件。模擬集成服務器運行除ATS系統之外的其它仿真軟件,提供ATS軟件模擬運行所需的外部接口條件。測試管理服務器主要完成測試場景的編輯,啟動測試流程,調用被測對象服務器和模擬集成服務器執行和終止測試,自動生成測試報告。
被測對象服務器采用虛擬機技術,提供運行被驗證的ATS軟件所需的操作系統(Windows server 2012、Windows 10或Redhat Linux7.2)環境,以模擬運行ATS工作站、在線時刻表、應用服務器、車站服務器、通信前置機和網關服務器等ATS軟件,測試應覆蓋ATS系統所有操作,包括運行圖編輯下發、站場控制、用戶管理、列車運行控制、臨時限速管理、自動排路、人工排路等[10]。
模擬集成服務器運行模擬ATS系統外部環境的仿真程序,包括與信號系統內部其它子系統或設備(CI系統、CC、ZC、LC)接口的仿真程序,以及與信號系統之外的其它系統(SCADA、ISCS、CLOCK、PIS、PA)接口的仿真程序。對ATS系統外部環境的模擬并不模擬相關子系統或設備/系統功能,僅按照ATS系統與這些子系統或設備/系統的接口協議中規定的消息格式和內容,實時地向被測試的ATS系統發送消息,為被測試的ATS系統提供與真實的列車運行環境一致的運行條件。例如,可使列車按照CI模擬產生的信號開放信息,沿著進路鎖閉方向前行,自動產生符合信號規則的紅光帶移動信息,按照指定的速度運行,以支持ATS軟件的測試。
除了可模擬真實的列車運行環境,測試系統還支持2類故障注入:(1)信號設備故障,包括道岔失表、燈絲斷絲、區間紅光帶;(2)信號系統各個子系統或設備間的通信異常,包括時序錯誤和通信內容錯誤。
測試管理服務器運行測試系統自身的軟件,用于控制測試過程,實施測試管理,主要包括測試流程編輯、測試場景編輯、測試日志分析、測試報告自動生成4個模塊。
2.4.1 測試流程編輯模塊
該模塊主要用于定義自動化測試的基本流程,如圖2所示,同時存儲測試所需要的軟件、配置數據以及測試使用的工具(測試環境自動部署工具、通信信息網絡封包分析工具等)。
當該模塊收到測試場景編輯模塊發送的測試服務請求之后,按照收到的軟件版本和配置數據版本,啟動自動部署工具,遠程部署被測對象服務器上的ATS系統測試環境,模擬集成服務器上ATS接口系統的仿真環境。在測試執行階段,該模塊調用模擬集成服務器模擬ATS系統外部環境,配合被測ATS系統軟件的測試場景執行;同時,該模塊記錄測試過程中ATS界面上所有的控件狀態,ATS與其它子系統/外部系統的所有接口通信信息內容,并將其存儲在測試日志存儲模塊中,供測試報告自動生成模塊調用。
2.4.2 測試場景編輯模塊
該模塊主要用于測試計劃策略的編輯、查看和管理,設置被測試的軟件版本和配置數據版本,存儲為每個測試場景設計的測試用例腳本,存儲各個測試場景預期測試結果,包括控件狀態及對應的接口通信信息。
2.4.3 測試日志存儲模塊
該模塊主要用于存儲被測對象服務器上ATS界面所有的控件狀態、ATS系統各軟件模塊的運行日志、以及模擬集成服務器上運行的ATS外部環境的模擬生成的所有接口通信信息,并根據預定義的接口通信信息解析腳本,自動解析通信信息包中各個字段的內容。
2.4.4 測試報告自動生成模塊
該模塊將測試日志存儲模塊中存儲的測試執行產生的接口通信信息內容和ATS界面上的控件狀態,與測試場景編輯模塊中的存儲的預期結果對應的控件狀態和接口通信信息內容進行比較。如果兩者一致,則判斷本測試場景通過測試;如果兩者不一致,則判斷本測試場景未通過測試。
測試系統根據測試用例腳本自動執行測試過程,全部測試用例腳本執行完成后,能自動生成測試報告,可極大提高測試人員的工作效率,使測試人員將精力集中于測試場景的設計。
以上海地鐵1號線信號系統升級項目中ATS軟件測試為例,編輯多輛列車運行計劃,仿真列車自動按照計劃模擬運行,描述其自動化測試過程。
(1)在被測對象服務器上,存儲ATS軟件、網絡配置、數據文件;在模擬集成服務器上存放CI系統仿真、CC仿真、ZC仿真、LC仿真設備軟件及數據。
(2)運行測試環境自動部署工具,分別遠程安裝被測對象服務器和模擬集成服務器上的ATS系統內部測試環境和ATS系統外部環境。
(3)測試人員編寫列車運行計劃腳本,如圖3所示,測試場景中設置5列列車按3 min發車間隔,從轉換軌所在站臺出發;命名為sched0.dat放置在測試管理服務器上。

圖3 列車運行計劃腳本示例
(4)測試人員在測試模擬集成服務器上配置轉換軌所在站臺的位置信息:集中站號、站臺號、方向等,如圖4所示。其它配置信息,如圖5所示。

圖4 轉換軌位置信息配置示例

圖5 其它配置信息示例
(5)運行測試用例腳本命令;當測試系統時間到達列車計劃中設置的出發時間時,CC模擬會依次加車到轉換軌所在站臺,模擬限制人工駕駛模式(RM,Restricted Mode)駕駛列車精確停靠站臺,接收運行計劃后,進入正線模擬運行。在列車模擬運行過程中,測試系統記錄并存儲ATS系統日志,如圖6所示。與預期結果進行比較,自動生成測試報告。

圖6 日志示例
針對上海地鐵1號線信號系統升級中的ATS軟件測試,結合運營場景設計了基于13個場景的測試用例,覆蓋47個功能項。從測試環境自動化部署到測試報告自動生成共耗時2 h。在使用自動化測試平臺前,人工搭建測試環境并完成測試,通常需要8 h。利用該自動化測試平臺,可大幅減少測試時間。隨著測試系統日趨完善,測試人員編寫的測試場景腳本的復用率將會逐漸提升,利用已創建的測試場景腳本,測試執行人員可將更多精力用于其它有助于測試效率提升的工作。
開發了基于場景模擬的ATS軟件自動化測試系統。測試系統由被測對象服務器、模擬集成服務器和測試管理服務器構成,將ATS系統內部環境的模擬與ATS系統外部環境的模擬相分離,降低ATS軟件仿真測試系統的復雜度。目前,已完成測試管理服務器軟件模塊的開發,包括測試流程編輯、測試場景編輯、測試日志存儲、測試報告生成4個主要模塊。使用該測試系統時,將單一功能項與運營場景結合起來設計測試用例,使用基于一個場景模擬的測試用例即可驗證多個功能項組合的正確性,可顯著提高軟件測試效率。此外,測試系統可自動執行測試過程,并自動生成測試報告,測試人員可將精力集中于測試場景設計和測試策略優化,不斷優化測試系統。
地鐵ATS系統與鐵路分散自律調度集中控制(CTC,Centralized Traffic Control)系統的功能類似,雖然兩者外部接口存在很大差別,但測試方法可以借鑒。