袁榆淞,饒 暢,張亞東,郭 進
(1.西南交通大學 信息科學與技術學院,成都611756;2.重慶交通大學 交通運輸學院,重慶400074)
CTCS-2級列車運行控制(簡稱:列控)系統是基于軌道電路和點式應答器傳輸行車許可的安全苛求系統[1]。車載設備作為列控系統安全完整性4級(SIL-4,Safety Integrity Level-4)安全關鍵設備,在投入使用前必須進行一系列嚴格的測試,以確保其質量特性滿足高可靠性、高安全性、高穩定性等標準的要求。
車載設備功能復雜,通常采用測試案例集的方式進行完備性測試。由于測試案例集的規模往往較為龐大,為提高測試效率,通常將測試案例按照一定方法和原則串接成若干測試序列,用于指導實施測試。其中,列控系統的測試過程通常可分為實驗室仿真測試、現場測試、聯調聯試、互聯互通測試等階段[2],現有工具生成的測試序列主要用于列控系統的仿真測試階段[3-6]。
不同于仿真測試,現場測試序列運用在現場實際環境中,在測試時不僅要考慮測試案例之間的狀態有序銜接,還要考慮執行測試案例的實際線路條件約束。目前,現場測試序列的生成主要由測試人員根據經驗進行人工編制,這種方式易出現測試案例串接不合理的情況,進而影響測試效率。
針對上述問題,本文開發了一種現場測試序列輔助生成工具——CTCS-2級列控車載設備現場測試序列輔助生成工具(簡稱:輔助生成工具),綜合考慮測試案例的狀態銜接和執行測試案例的實際線路條件,計算各測試案例的執行距離,并通過圖形界面直觀反映各個測試案例在實際線路中的執行點位置,可提高測試序列的生成效率和質量。
每一條測試序列可形成一個完整的測試場景,其設計遵循如下原則[7-8]。
原則1:一條測試序列應至少包含一條測試案例。
原則2:測試序列需覆蓋所有待測的測試案例,同時,盡可能地減少重復案例的使用。
原則3:測試序列中前一測試案例的結束狀態應與后一測試案例的起始狀態相匹配,保持狀態的連續性。
現場測試序列的串接不僅需要滿足上述基本原則,而且需要進一步考慮現場線路條件的約束,故串接原則可作如下補充。
原則4:測試序列中每一條測試案例的執行必須與列車當前所處測試環境相符合。
原則5:測試案例應盡可能地在待測線路上緊密布置,以減少列車的空跑距離。
現階段,現場測試序列的設計通常采用人工編制的方法,存在如下問題。
(1)測試線路基礎數據種類繁多且數據量大,采用廠家提供的工程線路數據表,以人工方式繪制線路數據圖。這種方式需要整理的信息量較多、步驟煩瑣且容易出錯。
(2)測試案例集通常規模較大,依靠人工方式篩選符合上述串接原則3和原則4的測試案例,容易出現測試案例串接不合理的情況,導致測試序列無法執行。
(3)測試人員需要預估測試案例的執行距離,以確定測試案例在實際線路的測試位置,但測試案例執行距離的估算目前仍是現場測試的一項技術難題。有的測試案例對測試地點無特殊要求(不涉及分相區、等級轉換點),現有方法往往采取固定長度對測試區段進行劃分[9-10],這種方法存在較大的估計偏差,易導致測試案例的執行區段發生重疊干擾,或出現列車大量空跑現象,影響測試效率。
(4)容易出現漏測或者大量重復測試的情況,增加了不必要的測試開銷。
(5)測試序列數據往往采用各類文字處理軟件進行人工編輯和管理,當測試案例存在變更時,需要逐個查找和修改涉及該案例的測試序列文檔,增加了序列的維護成本。
針對測試人員在進行人工編制現場測試序列中所遇到的實際問題,現場測試序列輔助生成工具需滿足以下要求。
(1)友好的人機交互界面。測試人員能便捷地利用工具對測試案例、測試序列進行檢索與查看,并能根據實際需求篩選相關信息。人機交互界面還支持測試線路的可視化展示,包括各個信號點、特殊區段的具體位置,線路速度、線路坡度的具體信息,便于測試人員根據實際線路條件在工程線路上鋪設測試案例。
(2)測試案例的自動篩選。在進行測試序列的設計過程中,輔助生成工具能自動篩選出符合串接條件的測試案例,同時能根據測試案例執行要求及測試案例之間的相關性,進行合理性檢驗,提高測試序列的有效性。
(3)測試案例執行距離的自動計算。輔助生成工具能根據所選測試案例的具體信息,結合當前所布置測試案例的實際位置,計算列車執行完該測試案例的走行距離,預估測試案例的執行范圍,并在人機交互界面上實現可視化展示。
(4)測試案例覆蓋率統計。輔助生成工具能實時反映待測測試案例的使用情況,避免出現漏測或大量重復測試的情況。
(5)測試序列的高效管理。輔助生成工具能根據實際需求對測試序列執行讀取、圖形化預覽、編輯、存儲等操作,并能提供測試序列文檔的一鍵導出功能,減少人工方式編輯的煩瑣性。
結合當前現場測試序列設計存在的問題,本文以線路數據的可視化、測試案例自動篩選、測試案例執行距離的自動計算、測試案例覆蓋率統計、測試序列高效管理等核心功能開發為輔助生成工具的實現目標,對上述輔助生成工具功能需求進行全覆蓋,從而使用輔助生成工具代替傳統人工編制測試序列的方式,最大程度地減少人工編制測試序列的工作量,提高現場測試序列編制的效率與質量。
測試序列輔助生成工具以測試案例集、列控工程數據表和車輛參數配置文件作為輸入,現場測試序列文檔作為輸出,總體架構如圖1所示。

圖1 測試序列輔助生成工具總體架構
輔助生成工具主要劃分為6個模塊:列控基礎數據管理模塊、圖形界面繪制模塊、測試案例數據管理模塊、測試案例執行距離計算模塊、測試序列生成模塊和測試序列數據管理模塊。各模塊總體功能如下。
(1)列控基礎數據管理模塊:讀取來自列控工程數據表的線路數據及被測車輛的參數配置文件后,將數據提供給圖形界面繪制模塊、測試案例執行距離計算模塊和測試序列生成模塊使用。
(2)圖形界面繪制模塊:對線路數據、現場測試案例和測試序列等實現可視化展示。
(3)測試案例數據管理模塊:通過讀取數據庫里的測試案例并整理后,將案例信息傳遞給測試案例執行距離計算模塊和測試序列生成模塊供后續調用。
(4)測試案例執行距離計算模塊:對接收的數據按照內嵌算法進行執行距離的計算,并將計算結果傳遞給測試序列生成模塊。
(5)測試序列生成模塊:完成測試序列的生成功能,將生成的測試序列傳遞給測試序列管理模塊進行統一管理。
(6)測試序列管理模塊:對測試序列進行存儲,同時,導出測試序列文檔供測試人員現場測試使用。
測試序列輔助生成工具將6個功能模塊細分為若干子功能,如圖2所示。

圖2 測試序列輔助生成工具功能結構
原始的線路工程數據大多數采用Excel數據表的格式進行存儲,故輔助生成工具需要支持Excel文件的讀入。其中,所需的列控工程數據以相關技術規范作為編制依據[11-12],主要包括信號數據表、線路坡度表、線路速度表、分相區信息表、應答器位置表等列控工程數據表。讀取的信號數據表主要涵蓋信號點數據與軌道區段數據。本文以某高速鐵路下行線正向信號為例,展示部分數據內容,如表1所示。

表1 某高速鐵路下行線正向信號數據(部分)
本文利用Java POI對Excel文件讀取的穩定性與快速性,實現對上述列控工程數據表及相關試驗列車車輛參數的讀取工作,并根據測試人員的需求對具體線路條件與車輛參數進行檢索查詢。其中,列控工程數據表的導入流程如圖3所示。

圖3 列控工程數據表導入流程
輔助生成工具采用JavaFX關鍵技術對信號機、信號牌、軌道區段、應答器等圖元進行可視化設計,并將讀取的線路數據中具體信號點所在的里程坐標按比例映射于圖形顯示界面,實現對列控工程數據的圖形繪制,同時,測試序列生成后在圖形界面上顯示各個測試案例的執行范圍。下行線的部分顯示界面如圖4所示,其中,綠色部分表示當前軌道區段放置有測試案例,對應的實際里程長度即為測試案例的執行距離。

圖4 下行線部分圖形界面顯示
測試案例是對被測設備某一功能特征進行針對性測試的指導文件,具有統一規范的描述格式,其主要內容如表2所示。

表2 測試案例的主要內容
基于表2對測試案例主要內容的分類情況,對測試案例進行分解,建立相應的數據表存儲于MySQL數據庫,并使用JDBC(Java Database Connectivity)實現對數據庫的訪問。通過選擇測試案例編號對目標案例執行檢索、查詢等操作,同時可預覽該測試案例的具體信息,并在進行序列串接工作時實現對測試案例覆蓋度實時更新的統計功能,其中,測試案例檢索流程如圖5所示。

圖5 測試案例檢索流程
在構建查詢器流程中,輔助生成工具通過SQL語句查詢測試人員想要預覽的具體信息,例如,測試人員想要查看某測試案例的具體執行流程,程序將 通 過 語 句selset*from tc_execution_step where tc_id=?,調取表格tc_execution_step(測試案例執行步驟表)中指定編號的測試案例具體內容,并在系統界面的對應表格中顯示查詢結果。
現場測試案例通常具備一定的執行距離,執行距離預估的準確性將影響生成的測試序列對于原則4和原則5的吻合程度。為使預估的測試案例執行距離逼近于實際執行距離,本文通過分析測試案例的執行步驟,發現列車在測試過程中始終在牽引狀態、惰行狀態、巡航狀態、常用制動狀態、緊急制動狀態及停車狀態之間不斷變化,故提取列車在執行測試步驟過程中的運行狀態變化路徑,例如某測試案例的運行狀態路徑可表示為:牽引—惰行—緊急制動—停車—牽引—巡航,結合被測列車的車輛參數及實際線路條件,基于典型的單質點模型對列車作受力分析,利用列車動力學公式計算列車在執行測試步驟過程中的速度變化和運行距離,能有效提升對于測試案例執行距離的估算精度。其中,測試案例執行距離計算流程如圖6所示。

圖6 測試案例執行距離計算流程
測試序列生成功能模塊輔助測試人員完成測試序列的編制工作,同時完成測試序列的合理性校驗。在測試人員為測試線路分配測試案例的過程中,辨識測試案例的屬性特征,并結合案例執行所需滿足的測試環境的線路特征,例如,執行位置約束(站內或區間)、是否需要應答器發送報文、特殊區段約束等,自動篩選出滿足上述現場測試序列設計原則3和原則4的測試案例集供測試人員選擇,從而提高測試序列的生成效率。其中,測試序列的生成流程如圖7所示。

圖7 測試序列生成流程
編制好測試序列后,測試序列數據管理功能模塊可以對測試序列進行保存、查看、編輯、刪除等操作,其中,每條測試序列中所包含的每個測試案例具有在實際線路上的里程位置和執行距離。同時,測試序列數據管理功能模塊可以以Word文件形式進行導出,便于測試人員將其作為現場測試的指導依據。
輔助生成工具利用Intellij IDEA 2019集成開發環境進行開發,采用Java編程語言,其主界面如圖8所示。界面共分為4個顯示區,具體分區信息如表3所示。

表3 主界面分區信息表

圖8 輔助生成工具主界面區域劃分
利用本文工具串接測試序列的具體步驟如下。
步驟1:測試人員點擊“加載測試案例”,從數據庫中導入測試案例集,并根據實際需求確定需要執行測試的測試案例。
步驟2:測試人員點擊“加載測試線路”選擇被測線路,輔助生成工具自動在主界面C區完成線路數據的圖形繪制。
步驟3:測試人員點擊“車輛參數配置”,選擇待測試的列車車型和具體車輛參數。
步驟4:測試人員通過點擊軌道區段的方式在線路上配置測試案例來生成測試序列。其中,測試案例配置信息如圖9所示,輔助生成工具將根據上述現場測試序列設計原則3和原則4篩選符合串接條件的測試案例于測試案例選擇框中供測試人員選擇,并自動計算所選測試案例的執行距離。

圖9 測試案例配置信息
步驟5:在測試序列串接完成后,在主界面D區中選擇“序列保存”,將測試序列上傳至數據庫,至此,序列串接工作結束。測試人員可單擊A區中“管理測試序列”,對該條測試序列執行讀取、查看、導出及刪除等管理操作,其中,測試序列管理界面如圖10所示。點擊查看按鈕后,可對選定案例的執行步驟進行預覽,如圖11所示。

圖10 測試序列管理界面

圖11 測試案例執行步驟
同人工串接現場測試序列作對比,輔助生成工具完成了線路數據的圖形化繪制、自動篩選符合串接條件的測試案例、測試案例執行距離的自動計算及測試案例覆蓋度統計等功能,顯著減少了人工開銷,并縮短了測試序列的生成周期,提高了序列質量和有效性,同時,當測試案例內容出現變更時(不影響串接順序),只需要修改數據庫中對應測試案例內容,測試序列將實現自動更新,進而減少了測試序列的維護成本。
本文針對當前人工編制現場測試序列存在的問題,開發了具有良好人機交互界面的現場測試序列輔助生成工具。該輔助生成工具實現了列控基礎數據管理、圖形界面繪制、測試案例數據管理、測試案例執行距離自動計算、測試序列輔助生成等功能,操作簡單且使用方便,不僅提高了測試序列的生成效率,而且進一步提升了測試序列的質量。今后可以采用相關優化理論和算法,實現測試序列的一鍵高效生成,最大限度地降低測試序列編制的工作量,提高測試序列生成的自動化水平。