宋 惠
(通號城市軌道交通技術(shù)有限公司,北京 100070)
信號產(chǎn)品的生命周期一般包括需求分析、風(fēng)險分析、設(shè)計實(shí)現(xiàn)、功能測試、驗(yàn)證確認(rèn)等幾個階段,功能測試階段主要驗(yàn)證產(chǎn)品是否滿足需求設(shè)計的要求,是否能在錯誤輸入和異常場景下做出正確反應(yīng),這就要求測試環(huán)境能夠在功能特性、時間特性、故障特性等方面模擬被測產(chǎn)品的真實(shí)運(yùn)行環(huán)境,能夠按照測試人員的測試意圖模擬測試場景需要的輸入數(shù)據(jù)和輸入時序,完成測試執(zhí)行。
本文在既有信號產(chǎn)品測試控制器的基礎(chǔ)上,研究設(shè)計一種新型的、通用的測試控制器,以期使不同信號產(chǎn)品能夠使用統(tǒng)一的測試環(huán)境完成功能測試,簡化測試環(huán)境的維護(hù),使測試環(huán)境標(biāo)準(zhǔn)化和規(guī)范化,從而提高測試的質(zhì)量和效率。
信號產(chǎn)品普遍與多個外部設(shè)備相連,它要與每個外部設(shè)備進(jìn)行數(shù)據(jù)交互,且不同設(shè)備間的通信協(xié)議也不大相同,這就使得信號產(chǎn)品的測試環(huán)境天然具有接口眾多、數(shù)據(jù)格式復(fù)雜的特點(diǎn)。一個典型的信號產(chǎn)品的測試環(huán)境結(jié)構(gòu)如圖1 所示。
測試控制器是整個測試環(huán)境的“大腦”,它從外部獲取測試需要的輸入,維護(hù)整個測試環(huán)境的運(yùn)行,調(diào)度驅(qū)動各個模擬設(shè)備和被測設(shè)備進(jìn)行通信,獲取被測設(shè)備的輸出,并向外部返回測試結(jié)果。測試控制器全程參與整個測試過程,是測試環(huán)境的核心模塊。
圖1 測試環(huán)境結(jié)構(gòu)圖Fig.1 Structure diagram of test environment
模擬設(shè)備是測試控制器與被測設(shè)備之間的“轉(zhuǎn)換器”,它主要模擬與被測設(shè)備真實(shí)通信的外部設(shè)備,將測試控制器下發(fā)的測試命令翻譯成被測設(shè)備可以識別的輸入,驅(qū)動被測設(shè)備進(jìn)行輸出,翻譯被測設(shè)備的輸出并轉(zhuǎn)發(fā)給測試控制器。例如在基于通信的列車控制系統(tǒng)(CBTC)的地面設(shè)備區(qū)域控制器(ZC)的測試環(huán)境中,ZC 作為被測設(shè)備,模擬設(shè)備主要模擬與ZC 進(jìn)行通信的外部設(shè)備,包括聯(lián)鎖模擬器、列車自動監(jiān)控模擬器、列車模擬器、相鄰ZC 模擬器等。
一個典型的測試流程如圖2 所示。
圖2 測試流程圖Fig.2 Test flow chart
1)測試控制器讀取測試輸入。測試輸入定義了整個測試需要的基本信息,包括測試環(huán)境定義,測試步驟以及測試標(biāo)準(zhǔn)。測試環(huán)境定義說明被測設(shè)備和模擬設(shè)備是誰,以及各個設(shè)備的啟動參數(shù)和設(shè)備間的連接關(guān)系。測試步驟由一組有序的測試命令組成,其中測試命令負(fù)責(zé)驅(qū)動模擬設(shè)備向被測設(shè)備進(jìn)行輸出,即定義模擬設(shè)備向被測設(shè)備輸出的信息內(nèi)容。測試標(biāo)準(zhǔn)定義執(zhí)行完前述測試步驟中的測試命令后,被測設(shè)備根據(jù)預(yù)期應(yīng)該輸出的信息。
2)測試控制器啟動測試環(huán)境。在讀入測試輸入后,測試控制器根據(jù)測試環(huán)境定義依次啟動各個模擬設(shè)備和被測設(shè)備,完成整個測試環(huán)境的部署。
3)執(zhí)行測試步驟。測試控制器依次解析測試步驟中定義的測試命令,將測試命令發(fā)送給模擬設(shè)備。模擬設(shè)備收到測試命令后“翻譯”并發(fā)送給被測設(shè)備。
4)輸出測試結(jié)果。模擬設(shè)備收到被測設(shè)備的輸出后“翻譯”并發(fā)送給測試控制器,測試控制器根據(jù)測試輸入中定義的測試標(biāo)準(zhǔn)判斷被測設(shè)備的輸出是否符合預(yù)期。
雖然不同信號產(chǎn)品之間由于其功能和接口的差異,測試環(huán)境各不相同,但它們在原理和結(jié)構(gòu)上非常相似,這種相似性尤其體現(xiàn)在測試控制器上,使測試控制器通用化成為可能。
測試控制器通用化有很多優(yōu)點(diǎn),這體現(xiàn)在以下幾個方面。
1)減少重復(fù)工作量。如果為每個信號產(chǎn)品都單獨(dú)開發(fā)一套測試控制器,定義不同的測試輸入接口和模擬設(shè)備接口,開發(fā)和調(diào)試測試控制器將花費(fèi)可觀的人力和時間成本,不僅直接導(dǎo)致信號產(chǎn)品的生命周期拉長,同時也帶來潛在的不穩(wěn)定性,間接降低信號產(chǎn)品的安全性。相反,如果使得信號產(chǎn)品的測試控制器通用化,則免去測試控制器的開發(fā)和調(diào)試,節(jié)約大量的人力和時間,同時保證信號產(chǎn)品的質(zhì)量。
2)提高復(fù)用性。不同的測試控制器其測試輸入和模擬設(shè)備接口各不相同,這使得測試輸入和模擬設(shè)備不能在信號產(chǎn)品的測試中復(fù)用。相反,如果使得信號產(chǎn)品的測試控制器通用化,則可以大大提高既有信號產(chǎn)品的測試輸入和模擬設(shè)備的復(fù)用率。
3)簡化測試執(zhí)行。由于測試控制器的通用化,多個信號產(chǎn)品的測試可以共享同一個測試控制器,在實(shí)際測試中可以大大加快測試環(huán)境的部署,降低測試環(huán)境的維護(hù)難度,簡化測試執(zhí)行。
通用測試控制器的設(shè)計出發(fā)點(diǎn)就是其通用性。通用性就是當(dāng)通用測試控制器從一個信號產(chǎn)品的測試環(huán)境移植到另一個信號產(chǎn)品的測試環(huán)境時,不需要對通用測試控制器本身做任何修改,只需通過改變它的一些配置即可適配新的測試環(huán)境。
這對通用測試控制器提出了以下要求。
1)具有靈活的模擬設(shè)備管理功能。同一個測試環(huán)境的不同測試場景或者不同測試環(huán)境對模擬設(shè)備的需求不同,通用測試控制器應(yīng)根據(jù)不同的測試需要對模擬設(shè)備進(jìn)行靈活配置。
2)具有靈活的模擬設(shè)備通信協(xié)議管理功能。測試環(huán)境中的模擬設(shè)備為了完成各自的功能其通信協(xié)議各不相同,通用測試控制器應(yīng)適配不同模擬設(shè)備的不同通信協(xié)議。
通用測試控制器主要由模擬設(shè)備管理模塊、測試信息解析模塊、模擬設(shè)備通信協(xié)議模塊、日志記錄模塊等組成。其架構(gòu)如圖3 所示。
圖3 通用測試控制器架構(gòu)圖Fig.3 Framework diagram of general test controller
1)模擬設(shè)備管理模塊
模擬設(shè)備管理模塊的主要功能是在啟動測試環(huán)境時對模擬設(shè)備進(jìn)行初始化設(shè)置,包括模擬設(shè)備的類型、名稱、網(wǎng)絡(luò)參數(shù)配置等。在測試執(zhí)行過程中,負(fù)責(zé)模擬設(shè)備的狀態(tài)監(jiān)控,即實(shí)時檢測模擬設(shè)備是否運(yùn)行正常,與測試控制器是否通信正常。協(xié)調(diào)模擬設(shè)備,即通過對模擬設(shè)備進(jìn)行時鐘同步消除由于時鐘漂移帶來的影響。
可擴(kuò)展標(biāo)記語言XML 是標(biāo)準(zhǔn)通用標(biāo)記語言的子集,是一種用于標(biāo)記電子文件使其具有結(jié)構(gòu)性的標(biāo)記語言。它具有開放性、簡單性、自我描述性、結(jié)構(gòu)和內(nèi)容分離、可擴(kuò)展性等一系列優(yōu)點(diǎn),因此選擇用XML 文件存儲模擬設(shè)備的配置信息。通過XML 文件描述整個測試環(huán)境,可以方便的根據(jù)測試需要調(diào)整模擬設(shè)備的類型、個數(shù)、參數(shù)等。
2)測試信息解析模塊
測試信息解析模塊的主要功能是在測試過程中實(shí)時解析模擬設(shè)備需要執(zhí)行的測試命令并發(fā)送給模擬設(shè)備,實(shí)時解析從模擬設(shè)備收到的被測設(shè)備的輸出并與預(yù)期結(jié)果比較,判斷測試是否成功。
該模塊主要涉及的信息有兩類,一類是發(fā)送給模擬設(shè)備的測試命令,另一類是模擬設(shè)備返回的被測設(shè)備輸出。由于信號產(chǎn)品之間的差異性,上述兩類信息在具體形式上千差萬別,如果測試控制器針對具體的信息格式去解析則無法實(shí)現(xiàn)通用性。經(jīng)過統(tǒng)計分析可以發(fā)現(xiàn),各信號產(chǎn)品上述兩類信息有著共同的特點(diǎn),即它們都可以抽象為如下的表現(xiàn)形式。
T={H,N,A}
其中:
H 是命令的接收者或者結(jié)果的返回者;
N 是命令或結(jié)果的名稱;
A 是命令或結(jié)果的屬性集合。
通用測試控制器可以解析的測試命令或測試輸出必須按照H、N、A 的順序進(jìn)行組織,H 和N 不可省略,A 是一組屬性名稱和屬性值的集合,屬性集合可以為空,也可以不為空。
3)模擬設(shè)備通信協(xié)議模塊
模擬設(shè)備通信協(xié)議模塊的主要功能是將測試信息解析模塊解析的測試命令按照通用測試控制器與模擬設(shè)備之間的通信協(xié)議發(fā)送給對應(yīng)模擬設(shè)備。將模擬設(shè)備收到的被測設(shè)備的輸出按照通用測試控制器與模擬設(shè)備之間的通信協(xié)議解析并交給測試信息解析模塊。
隨著信號產(chǎn)品的研發(fā),其測試環(huán)境需要的模擬設(shè)備會不斷增加,模擬設(shè)備與測試控制器之間的通信協(xié)議也會相應(yīng)不斷擴(kuò)展。如果測試控制器只針對具體的通信協(xié)議去解析則無法實(shí)現(xiàn)通用性。模擬設(shè)備通信協(xié)議模塊對不同模擬設(shè)備的通信協(xié)議處理借鑒動態(tài)鏈接庫的思想,即當(dāng)通用測試控制器需要接入新的模擬設(shè)備時,通用測試控制器本身不需要做任何變更,只需將新模擬設(shè)備的通信協(xié)議解析部分單獨(dú)封裝,以庫的形式在通用測試控制器啟動時動態(tài)加載。
模擬設(shè)備通信協(xié)議模塊的工作流程為:
a.啟動通用測試控制器前根據(jù)測試需要,配置模擬設(shè)備的通信協(xié)議庫;
b.通用測試控制器啟動時根據(jù)配置加載模擬設(shè)備通信協(xié)議庫;
c.模擬設(shè)備通信協(xié)議模塊向模擬設(shè)備發(fā)送測試命令時,調(diào)用模擬設(shè)備通信協(xié)議庫將測試命令轉(zhuǎn)換為對應(yīng)的協(xié)議后發(fā)送給模擬設(shè)備;從模擬設(shè)備收到信息時,調(diào)用模擬設(shè)備通信協(xié)議庫將信息轉(zhuǎn)換為測試輸出。
4)日志記錄模塊
日志記錄模塊的主要功能是記錄測試過程中通用測試控制器和模擬設(shè)備的狀態(tài)信息、通用測試控制器和模擬設(shè)備之間交互的信息以及整個測試環(huán)境的異常情況。
日志記錄模塊可以通過配置實(shí)現(xiàn)按照重要程度記錄日志、按照模塊記錄日志、按照不同輸出方式記錄日志等功能,以實(shí)現(xiàn)通用性。
本文在既有信號產(chǎn)品測試環(huán)境的基礎(chǔ)上,設(shè)計實(shí)現(xiàn)了一種新型通用測試控制器,大大簡化測試環(huán)境的開發(fā)難度,提高測試環(huán)境的通用性和穩(wěn)定性,對保障信號產(chǎn)品的安全性有重要意義。