袁榆淞,饒 暢,張亞東,郭 進(jìn)
(1.西南交通大學(xué) 信息科學(xué)與技術(shù)學(xué)院,成都611756;2.重慶交通大學(xué) 交通運(yùn)輸學(xué)院,重慶400074)
CTCS-2級列車運(yùn)行控制(簡稱:列控)系統(tǒng)是基于軌道電路和點(diǎn)式應(yīng)答器傳輸行車許可的安全苛求系統(tǒng)[1]。車載設(shè)備作為列控系統(tǒng)安全完整性4級(SIL-4,Safety Integrity Level-4)安全關(guān)鍵設(shè)備,在投入使用前必須進(jìn)行一系列嚴(yán)格的測試,以確保其質(zhì)量特性滿足高可靠性、高安全性、高穩(wěn)定性等標(biāo)準(zhǔn)的要求。
車載設(shè)備功能復(fù)雜,通常采用測試案例集的方式進(jìn)行完備性測試。由于測試案例集的規(guī)模往往較為龐大,為提高測試效率,通常將測試案例按照一定方法和原則串接成若干測試序列,用于指導(dǎo)實(shí)施測試。其中,列控系統(tǒng)的測試過程通??煞譃閷?shí)驗(yàn)室仿真測試、現(xiàn)場測試、聯(lián)調(diào)聯(lián)試、互聯(lián)互通測試等階段[2],現(xiàn)有工具生成的測試序列主要用于列控系統(tǒng)的仿真測試階段[3-6]。
不同于仿真測試,現(xiàn)場測試序列運(yùn)用在現(xiàn)場實(shí)際環(huán)境中,在測試時不僅要考慮測試案例之間的狀態(tài)有序銜接,還要考慮執(zhí)行測試案例的實(shí)際線路條件約束。目前,現(xiàn)場測試序列的生成主要由測試人員根據(jù)經(jīng)驗(yàn)進(jìn)行人工編制,這種方式易出現(xiàn)測試案例串接不合理的情況,進(jìn)而影響測試效率。
針對上述問題,本文開發(fā)了一種現(xiàn)場測試序列輔助生成工具——CTCS-2級列控車載設(shè)備現(xiàn)場測試序列輔助生成工具(簡稱:輔助生成工具),綜合考慮測試案例的狀態(tài)銜接和執(zhí)行測試案例的實(shí)際線路條件,計算各測試案例的執(zhí)行距離,并通過圖形界面直觀反映各個測試案例在實(shí)際線路中的執(zhí)行點(diǎn)位置,可提高測試序列的生成效率和質(zhì)量。
每一條測試序列可形成一個完整的測試場景,其設(shè)計遵循如下原則[7-8]。
原則1:一條測試序列應(yīng)至少包含一條測試案例。
原則2:測試序列需覆蓋所有待測的測試案例,同時,盡可能地減少重復(fù)案例的使用。
原則3:測試序列中前一測試案例的結(jié)束狀態(tài)應(yīng)與后一測試案例的起始狀態(tài)相匹配,保持狀態(tài)的連續(xù)性。
現(xiàn)場測試序列的串接不僅需要滿足上述基本原則,而且需要進(jìn)一步考慮現(xiàn)場線路條件的約束,故串接原則可作如下補(bǔ)充。
原則4:測試序列中每一條測試案例的執(zhí)行必須與列車當(dāng)前所處測試環(huán)境相符合。
原則5:測試案例應(yīng)盡可能地在待測線路上緊密布置,以減少列車的空跑距離。
現(xiàn)階段,現(xiàn)場測試序列的設(shè)計通常采用人工編制的方法,存在如下問題。
(1)測試線路基礎(chǔ)數(shù)據(jù)種類繁多且數(shù)據(jù)量大,采用廠家提供的工程線路數(shù)據(jù)表,以人工方式繪制線路數(shù)據(jù)圖。這種方式需要整理的信息量較多、步驟煩瑣且容易出錯。
(2)測試案例集通常規(guī)模較大,依靠人工方式篩選符合上述串接原則3和原則4的測試案例,容易出現(xiàn)測試案例串接不合理的情況,導(dǎo)致測試序列無法執(zhí)行。
(3)測試人員需要預(yù)估測試案例的執(zhí)行距離,以確定測試案例在實(shí)際線路的測試位置,但測試案例執(zhí)行距離的估算目前仍是現(xiàn)場測試的一項(xiàng)技術(shù)難題。有的測試案例對測試地點(diǎn)無特殊要求(不涉及分相區(qū)、等級轉(zhuǎn)換點(diǎn)),現(xiàn)有方法往往采取固定長度對測試區(qū)段進(jìn)行劃分[9-10],這種方法存在較大的估計偏差,易導(dǎo)致測試案例的執(zhí)行區(qū)段發(fā)生重疊干擾,或出現(xiàn)列車大量空跑現(xiàn)象,影響測試效率。
(4)容易出現(xiàn)漏測或者大量重復(fù)測試的情況,增加了不必要的測試開銷。
(5)測試序列數(shù)據(jù)往往采用各類文字處理軟件進(jìn)行人工編輯和管理,當(dāng)測試案例存在變更時,需要逐個查找和修改涉及該案例的測試序列文檔,增加了序列的維護(hù)成本。
針對測試人員在進(jìn)行人工編制現(xiàn)場測試序列中所遇到的實(shí)際問題,現(xiàn)場測試序列輔助生成工具需滿足以下要求。
(1)友好的人機(jī)交互界面。測試人員能便捷地利用工具對測試案例、測試序列進(jìn)行檢索與查看,并能根據(jù)實(shí)際需求篩選相關(guān)信息。人機(jī)交互界面還支持測試線路的可視化展示,包括各個信號點(diǎn)、特殊區(qū)段的具體位置,線路速度、線路坡度的具體信息,便于測試人員根據(jù)實(shí)際線路條件在工程線路上鋪設(shè)測試案例。
(2)測試案例的自動篩選。在進(jìn)行測試序列的設(shè)計過程中,輔助生成工具能自動篩選出符合串接條件的測試案例,同時能根據(jù)測試案例執(zhí)行要求及測試案例之間的相關(guān)性,進(jìn)行合理性檢驗(yàn),提高測試序列的有效性。
(3)測試案例執(zhí)行距離的自動計算。輔助生成工具能根據(jù)所選測試案例的具體信息,結(jié)合當(dāng)前所布置測試案例的實(shí)際位置,計算列車執(zhí)行完該測試案例的走行距離,預(yù)估測試案例的執(zhí)行范圍,并在人機(jī)交互界面上實(shí)現(xiàn)可視化展示。
(4)測試案例覆蓋率統(tǒng)計。輔助生成工具能實(shí)時反映待測測試案例的使用情況,避免出現(xiàn)漏測或大量重復(fù)測試的情況。
(5)測試序列的高效管理。輔助生成工具能根據(jù)實(shí)際需求對測試序列執(zhí)行讀取、圖形化預(yù)覽、編輯、存儲等操作,并能提供測試序列文檔的一鍵導(dǎo)出功能,減少人工方式編輯的煩瑣性。
結(jié)合當(dāng)前現(xiàn)場測試序列設(shè)計存在的問題,本文以線路數(shù)據(jù)的可視化、測試案例自動篩選、測試案例執(zhí)行距離的自動計算、測試案例覆蓋率統(tǒng)計、測試序列高效管理等核心功能開發(fā)為輔助生成工具的實(shí)現(xiàn)目標(biāo),對上述輔助生成工具功能需求進(jìn)行全覆蓋,從而使用輔助生成工具代替?zhèn)鹘y(tǒng)人工編制測試序列的方式,最大程度地減少人工編制測試序列的工作量,提高現(xiàn)場測試序列編制的效率與質(zhì)量。
測試序列輔助生成工具以測試案例集、列控工程數(shù)據(jù)表和車輛參數(shù)配置文件作為輸入,現(xiàn)場測試序列文檔作為輸出,總體架構(gòu)如圖1所示。
圖1 測試序列輔助生成工具總體架構(gòu)
輔助生成工具主要劃分為6個模塊:列控基礎(chǔ)數(shù)據(jù)管理模塊、圖形界面繪制模塊、測試案例數(shù)據(jù)管理模塊、測試案例執(zhí)行距離計算模塊、測試序列生成模塊和測試序列數(shù)據(jù)管理模塊。各模塊總體功能如下。
(1)列控基礎(chǔ)數(shù)據(jù)管理模塊:讀取來自列控工程數(shù)據(jù)表的線路數(shù)據(jù)及被測車輛的參數(shù)配置文件后,將數(shù)據(jù)提供給圖形界面繪制模塊、測試案例執(zhí)行距離計算模塊和測試序列生成模塊使用。
(2)圖形界面繪制模塊:對線路數(shù)據(jù)、現(xiàn)場測試案例和測試序列等實(shí)現(xiàn)可視化展示。
(3)測試案例數(shù)據(jù)管理模塊:通過讀取數(shù)據(jù)庫里的測試案例并整理后,將案例信息傳遞給測試案例執(zhí)行距離計算模塊和測試序列生成模塊供后續(xù)調(diào)用。
(4)測試案例執(zhí)行距離計算模塊:對接收的數(shù)據(jù)按照內(nèi)嵌算法進(jìn)行執(zhí)行距離的計算,并將計算結(jié)果傳遞給測試序列生成模塊。
(5)測試序列生成模塊:完成測試序列的生成功能,將生成的測試序列傳遞給測試序列管理模塊進(jìn)行統(tǒng)一管理。
(6)測試序列管理模塊:對測試序列進(jìn)行存儲,同時,導(dǎo)出測試序列文檔供測試人員現(xiàn)場測試使用。
測試序列輔助生成工具將6個功能模塊細(xì)分為若干子功能,如圖2所示。
圖2 測試序列輔助生成工具功能結(jié)構(gòu)
原始的線路工程數(shù)據(jù)大多數(shù)采用Excel數(shù)據(jù)表的格式進(jìn)行存儲,故輔助生成工具需要支持Excel文件的讀入。其中,所需的列控工程數(shù)據(jù)以相關(guān)技術(shù)規(guī)范作為編制依據(jù)[11-12],主要包括信號數(shù)據(jù)表、線路坡度表、線路速度表、分相區(qū)信息表、應(yīng)答器位置表等列控工程數(shù)據(jù)表。讀取的信號數(shù)據(jù)表主要涵蓋信號點(diǎn)數(shù)據(jù)與軌道區(qū)段數(shù)據(jù)。本文以某高速鐵路下行線正向信號為例,展示部分?jǐn)?shù)據(jù)內(nèi)容,如表1所示。
表1 某高速鐵路下行線正向信號數(shù)據(jù)(部分)
本文利用Java POI對Excel文件讀取的穩(wěn)定性與快速性,實(shí)現(xiàn)對上述列控工程數(shù)據(jù)表及相關(guān)試驗(yàn)列車車輛參數(shù)的讀取工作,并根據(jù)測試人員的需求對具體線路條件與車輛參數(shù)進(jìn)行檢索查詢。其中,列控工程數(shù)據(jù)表的導(dǎo)入流程如圖3所示。
圖3 列控工程數(shù)據(jù)表導(dǎo)入流程
輔助生成工具采用JavaFX關(guān)鍵技術(shù)對信號機(jī)、信號牌、軌道區(qū)段、應(yīng)答器等圖元進(jìn)行可視化設(shè)計,并將讀取的線路數(shù)據(jù)中具體信號點(diǎn)所在的里程坐標(biāo)按比例映射于圖形顯示界面,實(shí)現(xiàn)對列控工程數(shù)據(jù)的圖形繪制,同時,測試序列生成后在圖形界面上顯示各個測試案例的執(zhí)行范圍。下行線的部分顯示界面如圖4所示,其中,綠色部分表示當(dāng)前軌道區(qū)段放置有測試案例,對應(yīng)的實(shí)際里程長度即為測試案例的執(zhí)行距離。
圖4 下行線部分圖形界面顯示
測試案例是對被測設(shè)備某一功能特征進(jìn)行針對性測試的指導(dǎo)文件,具有統(tǒng)一規(guī)范的描述格式,其主要內(nèi)容如表2所示。
表2 測試案例的主要內(nèi)容
基于表2對測試案例主要內(nèi)容的分類情況,對測試案例進(jìn)行分解,建立相應(yīng)的數(shù)據(jù)表存儲于MySQL數(shù)據(jù)庫,并使用JDBC(Java Database Connectivity)實(shí)現(xiàn)對數(shù)據(jù)庫的訪問。通過選擇測試案例編號對目標(biāo)案例執(zhí)行檢索、查詢等操作,同時可預(yù)覽該測試案例的具體信息,并在進(jìn)行序列串接工作時實(shí)現(xiàn)對測試案例覆蓋度實(shí)時更新的統(tǒng)計功能,其中,測試案例檢索流程如圖5所示。
圖5 測試案例檢索流程
在構(gòu)建查詢器流程中,輔助生成工具通過SQL語句查詢測試人員想要預(yù)覽的具體信息,例如,測試人員想要查看某測試案例的具體執(zhí)行流程,程序?qū)?通 過 語 句selset*from tc_execution_step where tc_id=?,調(diào)取表格tc_execution_step(測試案例執(zhí)行步驟表)中指定編號的測試案例具體內(nèi)容,并在系統(tǒng)界面的對應(yīng)表格中顯示查詢結(jié)果。
現(xiàn)場測試案例通常具備一定的執(zhí)行距離,執(zhí)行距離預(yù)估的準(zhǔn)確性將影響生成的測試序列對于原則4和原則5的吻合程度。為使預(yù)估的測試案例執(zhí)行距離逼近于實(shí)際執(zhí)行距離,本文通過分析測試案例的執(zhí)行步驟,發(fā)現(xiàn)列車在測試過程中始終在牽引狀態(tài)、惰行狀態(tài)、巡航狀態(tài)、常用制動狀態(tài)、緊急制動狀態(tài)及停車狀態(tài)之間不斷變化,故提取列車在執(zhí)行測試步驟過程中的運(yùn)行狀態(tài)變化路徑,例如某測試案例的運(yùn)行狀態(tài)路徑可表示為:牽引—惰行—緊急制動—停車—牽引—巡航,結(jié)合被測列車的車輛參數(shù)及實(shí)際線路條件,基于典型的單質(zhì)點(diǎn)模型對列車作受力分析,利用列車動力學(xué)公式計算列車在執(zhí)行測試步驟過程中的速度變化和運(yùn)行距離,能有效提升對于測試案例執(zhí)行距離的估算精度。其中,測試案例執(zhí)行距離計算流程如圖6所示。
圖6 測試案例執(zhí)行距離計算流程
測試序列生成功能模塊輔助測試人員完成測試序列的編制工作,同時完成測試序列的合理性校驗(yàn)。在測試人員為測試線路分配測試案例的過程中,辨識測試案例的屬性特征,并結(jié)合案例執(zhí)行所需滿足的測試環(huán)境的線路特征,例如,執(zhí)行位置約束(站內(nèi)或區(qū)間)、是否需要應(yīng)答器發(fā)送報文、特殊區(qū)段約束等,自動篩選出滿足上述現(xiàn)場測試序列設(shè)計原則3和原則4的測試案例集供測試人員選擇,從而提高測試序列的生成效率。其中,測試序列的生成流程如圖7所示。
圖7 測試序列生成流程
編制好測試序列后,測試序列數(shù)據(jù)管理功能模塊可以對測試序列進(jìn)行保存、查看、編輯、刪除等操作,其中,每條測試序列中所包含的每個測試案例具有在實(shí)際線路上的里程位置和執(zhí)行距離。同時,測試序列數(shù)據(jù)管理功能模塊可以以Word文件形式進(jìn)行導(dǎo)出,便于測試人員將其作為現(xiàn)場測試的指導(dǎo)依據(jù)。
輔助生成工具利用Intellij IDEA 2019集成開發(fā)環(huán)境進(jìn)行開發(fā),采用Java編程語言,其主界面如圖8所示。界面共分為4個顯示區(qū),具體分區(qū)信息如表3所示。
表3 主界面分區(qū)信息表
圖8 輔助生成工具主界面區(qū)域劃分
利用本文工具串接測試序列的具體步驟如下。
步驟1:測試人員點(diǎn)擊“加載測試案例”,從數(shù)據(jù)庫中導(dǎo)入測試案例集,并根據(jù)實(shí)際需求確定需要執(zhí)行測試的測試案例。
步驟2:測試人員點(diǎn)擊“加載測試線路”選擇被測線路,輔助生成工具自動在主界面C區(qū)完成線路數(shù)據(jù)的圖形繪制。
步驟3:測試人員點(diǎn)擊“車輛參數(shù)配置”,選擇待測試的列車車型和具體車輛參數(shù)。
步驟4:測試人員通過點(diǎn)擊軌道區(qū)段的方式在線路上配置測試案例來生成測試序列。其中,測試案例配置信息如圖9所示,輔助生成工具將根據(jù)上述現(xiàn)場測試序列設(shè)計原則3和原則4篩選符合串接條件的測試案例于測試案例選擇框中供測試人員選擇,并自動計算所選測試案例的執(zhí)行距離。
圖9 測試案例配置信息
步驟5:在測試序列串接完成后,在主界面D區(qū)中選擇“序列保存”,將測試序列上傳至數(shù)據(jù)庫,至此,序列串接工作結(jié)束。測試人員可單擊A區(qū)中“管理測試序列”,對該條測試序列執(zhí)行讀取、查看、導(dǎo)出及刪除等管理操作,其中,測試序列管理界面如圖10所示。點(diǎn)擊查看按鈕后,可對選定案例的執(zhí)行步驟進(jìn)行預(yù)覽,如圖11所示。
圖10 測試序列管理界面
圖11 測試案例執(zhí)行步驟
同人工串接現(xiàn)場測試序列作對比,輔助生成工具完成了線路數(shù)據(jù)的圖形化繪制、自動篩選符合串接條件的測試案例、測試案例執(zhí)行距離的自動計算及測試案例覆蓋度統(tǒng)計等功能,顯著減少了人工開銷,并縮短了測試序列的生成周期,提高了序列質(zhì)量和有效性,同時,當(dāng)測試案例內(nèi)容出現(xiàn)變更時(不影響串接順序),只需要修改數(shù)據(jù)庫中對應(yīng)測試案例內(nèi)容,測試序列將實(shí)現(xiàn)自動更新,進(jìn)而減少了測試序列的維護(hù)成本。
本文針對當(dāng)前人工編制現(xiàn)場測試序列存在的問題,開發(fā)了具有良好人機(jī)交互界面的現(xiàn)場測試序列輔助生成工具。該輔助生成工具實(shí)現(xiàn)了列控基礎(chǔ)數(shù)據(jù)管理、圖形界面繪制、測試案例數(shù)據(jù)管理、測試案例執(zhí)行距離自動計算、測試序列輔助生成等功能,操作簡單且使用方便,不僅提高了測試序列的生成效率,而且進(jìn)一步提升了測試序列的質(zhì)量。今后可以采用相關(guān)優(yōu)化理論和算法,實(shí)現(xiàn)測試序列的一鍵高效生成,最大限度地降低測試序列編制的工作量,提高測試序列生成的自動化水平。