廖湘華
(上海富欣智能交通控制有限公司,上海201203)
城市軌道交通信號系統(tǒng)在室內(nèi)測試時需要對軌旁、車輛等外圍環(huán)境進行仿真,信號系統(tǒng)、環(huán)境仿真系統(tǒng)一起組成人工測試平臺。例如,陳祥獻[1]、白廣爭[2]、萬勇兵[3]等的研究。人工測試平臺對于大多數(shù)測試用例因能立即操作而取得立竿見影的效果,但是不能節(jié)省回歸測試、工程測試中重復(fù)性工作的人力和時間。
為了提高測試效率和能力,需要采用自動化測試。關(guān)于自動測試的研究很多,例如,張若時[4]以ABBET(測試泛環(huán)境)標(biāo)準(zhǔn)體系的產(chǎn)品描述層、測試策略/需求層、測試過程層、測試資源層、儀器控制層結(jié)構(gòu)為主,開發(fā)了面向信息的通用自動測試系統(tǒng)軟件,實現(xiàn)測試儀器無關(guān)性和測試程序集通用性;劉揚[5]提出一個基于模型驅(qū)動架構(gòu)的測試用例生成框架;任思思[6]基于MSC(消息序列圖)建模語言生成CBTC(基于通信的列車運行控制系統(tǒng))測試用例;胡甜[7]重點研究了自動測試腳本編程接口的實現(xiàn)框架。這些自動測試技術(shù)日趨全面,但是自動測試平臺開發(fā)周期長,對所有測試用例編寫腳本的工作量大,導(dǎo)致測試平臺往往趕不上被測系統(tǒng)前期調(diào)試、測試的工期需要。
本文擬根據(jù)信號系統(tǒng)從產(chǎn)品研制、工程實施到運營維護的生命周期內(nèi),先人工測試、自動測試從少到多的特點,對測試平臺的架構(gòu)進行設(shè)計。一方面,達到只迭代開發(fā)一套測試平臺,既能迅速支持各階段人工、自動測試,又能節(jié)省開發(fā)總成本的目的;另一方面,從測試資源的角度,既兼容各種自動測試技術(shù)從而具有開放性,又可集成已有自動測試產(chǎn)品從而減少自己研發(fā)的工作量。
城市軌道交通信號系統(tǒng)實質(zhì)是一個分布式控制系統(tǒng),決定了它的仿真測試平臺也宜是一個分布式控制系統(tǒng)。因此,把以環(huán)境仿真系統(tǒng)為主的測試資源抽象為人工、自動協(xié)同操作的分布式控制系統(tǒng),設(shè)計一套人工、自動協(xié)同的信號系統(tǒng)測試平臺。要支持人工、自動協(xié)同操作,分布式控制系統(tǒng)宜滿足以下要求:
一是人工、自動操作的對象應(yīng)是同一對象;
二是分布式控制系統(tǒng)的狀態(tài)信息應(yīng)既傳送給人工操作用戶界面,又傳送給自動操作腳本;
三是人工操作用戶界面產(chǎn)生的控制信息應(yīng)能被自動操作腳本捕獲,自動操作腳本產(chǎn)生的控制信息應(yīng)能在人工操作用戶界面上查看;
四是人工、自動操作的控制信息宜采用相同的協(xié)議傳送;
五是人工、自動操作的狀態(tài)信息宜采用相同的協(xié)議傳送;
六是協(xié)議應(yīng)能支持單個信息的傳送。
根據(jù)設(shè)計要求,人工、自動協(xié)同操作的分布式控制系統(tǒng)架構(gòu)設(shè)計如圖1所示。
圖1 人工、自動協(xié)同操作的分布式控制系統(tǒng)架構(gòu)
將系統(tǒng)的用戶界面功能、業(yè)務(wù)邏輯功能分離為獨立運行的用戶界面軟件、業(yè)務(wù)邏輯系統(tǒng)。用戶界面軟件承接通過鍵盤、鼠標(biāo)接收用戶操作信息,通過顯示器向用戶呈現(xiàn)信息的功能。業(yè)務(wù)邏輯系統(tǒng)承接將用戶界面功能剝離出去后剩余的系統(tǒng)功能。
用戶界面軟件將用戶操作信息轉(zhuǎn)換而來的控制信息,傳送給業(yè)務(wù)邏輯系統(tǒng)處理。業(yè)務(wù)邏輯系統(tǒng)把要顯示的狀態(tài)信息傳送給用戶界面軟件呈現(xiàn)??刂菩畔?、狀態(tài)信息中各變量的值可以單獨更新、傳送。
業(yè)務(wù)邏輯系統(tǒng)支持多個用戶界面軟件,采用相同的接口協(xié)議與之交互。業(yè)務(wù)邏輯系統(tǒng)把要顯示的狀態(tài)信息以同樣的接口協(xié)議傳送給所有用戶界面軟件呈現(xiàn);對多個用戶界面軟件以同樣的協(xié)議傳來的控制信息進行處理,并且把該信息轉(zhuǎn)發(fā)(或回送)給所有用戶界面軟件。這樣,各用戶界面軟件既能同步獲得業(yè)務(wù)邏輯系統(tǒng)的狀態(tài)信息,也能獲得用戶在任意其他用戶界面軟件輸入的控制信息。
用戶界面軟件分為兩類:人工操作用戶界面軟件、自動操作用戶界面軟件。自動操作用戶界面軟件理解為由三部分組成:腳本編程接口、自動操作腳本、腳本編輯運行環(huán)境。腳本編程接口負(fù)責(zé)與業(yè)務(wù)邏輯系統(tǒng)交互。它們之間的交互遵循人工操作用戶界面軟件與業(yè)務(wù)邏輯系統(tǒng)之間的接口協(xié)議。對業(yè)務(wù)邏輯系統(tǒng)來說,人工操作用戶界面軟件與自動操作用戶界面軟件是相同的。自動操作腳本通過調(diào)用腳本編程接口中的函數(shù)向業(yè)務(wù)邏輯系統(tǒng)傳送控制信息,獲得業(yè)務(wù)邏輯系統(tǒng)的狀態(tài)信息和其他用戶界面軟件(人工操作用戶界面軟件或自動操作用戶界面軟件)傳送給業(yè)務(wù)邏輯系統(tǒng)的控制信息。
分布式控制系統(tǒng)中業(yè)務(wù)邏輯系統(tǒng)由多個業(yè)務(wù)邏輯子系統(tǒng)組成。這些業(yè)務(wù)邏輯子系統(tǒng)分別實現(xiàn)相似或相異的功能子集,決定了控制信息相似或相異,狀態(tài)信息也相似或相異。分布式控制系統(tǒng)中人工操作用戶界面軟件、自動操作用戶界面軟件也可以分成多個。這些人工操作用戶界面軟件向業(yè)務(wù)邏輯系統(tǒng)傳送相似或相異的控制信息,呈現(xiàn)相似或相異的狀態(tài)信息。為了避免相似或相異的業(yè)務(wù)邏輯子系統(tǒng)、用戶界面軟件在處理信息時混淆,分布式控制系統(tǒng)中所有控制信息、狀態(tài)信息統(tǒng)一定義,確保唯一性。各業(yè)務(wù)邏輯子系統(tǒng)、用戶界面軟件只處理與己有關(guān)的信息。
太原地鐵2 號線JeRail?CBTC 全自動運行信號系統(tǒng)的仿真測試平臺既包括對信號系統(tǒng)外部的與CBI(計算機聯(lián)鎖子系統(tǒng))、OBCU(車載控制器)、ATS(列車自動監(jiān)控子系統(tǒng))對接的關(guān)聯(lián)設(shè)備/系統(tǒng)進行仿真,使信號系統(tǒng)的輸入/輸出形成閉環(huán),以支撐信號系統(tǒng)在實驗室里運行;也包括對信號系統(tǒng)內(nèi)部9 個設(shè)備集中站的CBI、ZC(區(qū)域控制器)進行仿真,使它們與一個設(shè)備集中站的真實CBI 設(shè)備、真實ZC 設(shè)備一起,以支撐信號系統(tǒng)在實驗室里覆蓋全線路運行;還包括對23 列及以上列車的OBCU 進行仿真,使它們與一列列車的真實OBCU 設(shè)備一起,以支撐信號系統(tǒng)在實驗室里多車追蹤運行,并對ATS、CBI、ZC、MMS(維護監(jiān)測子系統(tǒng))進行壓力測試。簡言之,仿真測試平臺涉及全線路的信號系統(tǒng)及其關(guān)聯(lián)設(shè)備/系統(tǒng),適宜按照分布式控制系統(tǒng)進行設(shè)計。這樣,實驗室既相似于現(xiàn)場信號系統(tǒng)分布式運行的情況,又方便把任一個設(shè)備集中站的仿真CBI 和/或ZC、任一列列車的仿真OBCU 替換為真實設(shè)備。
仿真測試平臺按照人工、自動協(xié)同操作分布式控制系統(tǒng)架構(gòu)設(shè)計,見圖2。
圖2 太原地鐵2 號線JeRail?CBTC 的人工、自動協(xié)同的仿真測試平臺架構(gòu)
JeRail?CBTC 的仿真測試平臺由仿真JeRail?CBTC外部關(guān)聯(lián)設(shè)備/系統(tǒng)及內(nèi)部子系統(tǒng)(即業(yè)務(wù)邏輯系統(tǒng))、人工測試用戶界面軟件、腳本編程接口組成。
仿真JeRail?CBTC 外部關(guān)聯(lián)設(shè)備/系統(tǒng)包括:
一是仿真軌旁信號設(shè)備及繼電器軟件:模擬全線路的道岔轉(zhuǎn)轍機、信號機、站臺門、站臺開門按鈕、站臺關(guān)門按鈕、站臺緊急關(guān)閉按鈕、站臺扣車按鈕、站臺清客按鈕、站臺自動折返按鈕、人員防護開關(guān)、庫門、洗車機、計軸區(qū)段及其繼電器功能,模擬全線路有源應(yīng)答器、無源應(yīng)答器的功能;
二是仿真繼電接口(真實接口)設(shè)備:實現(xiàn)仿真軌旁信號設(shè)備及繼電器軟件與真實CBI 設(shè)備關(guān)于繼電接口信號轉(zhuǎn)換的功能;
三是仿真繼電接口(網(wǎng)絡(luò)接口)設(shè)備:實現(xiàn)仿真軌旁信號設(shè)備及繼電器軟件與仿真CBI 軟件關(guān)于繼電接口信息適配的功能;
四是仿真線路電子單元軟件:模擬真實CBI 設(shè)備或仿真CBI 軟件所對接線路電子單元,接收CBI 發(fā)來的應(yīng)答器報文;
五是仿真車輛及OBCU 配套設(shè)備(真實接口):與同一列車的兩套真實OBCU 設(shè)備對接,模擬列車上除OBCU 以外部件功能;
六是仿真車輛及OBCU 配套設(shè)備(網(wǎng)絡(luò)接口):與同一列車的仿真OBCU 軟件對接;
七是仿真站臺門系統(tǒng)軟件;
八是仿真乘客信息系統(tǒng)軟件;
九是仿真無線通信系統(tǒng)軟件;
十是仿真廣播系統(tǒng)軟件;
十一是仿真車輛調(diào)系統(tǒng)軟件。
仿真JeRail?CBTC 內(nèi)部子系統(tǒng)包括以下軟件:
一是仿真CBI 軟件;
二是仿真ZC 軟件;
三是仿真OBCU 軟件。
人工測試用戶界面軟件主要有:
一是設(shè)備信息總覽軟件:以線路平面拓?fù)鋱D的形式陳列全線路軌旁信號設(shè)備,以圖標(biāo)的形式實時追蹤各列車的位置,呈現(xiàn)各設(shè)備的狀態(tài),并支持正常操作、故障注入。
二是接口信息總覽軟件:以編輯框、復(fù)選框、列表等控件的形式實時顯示業(yè)務(wù)邏輯系統(tǒng)中各設(shè)備、軟件與其他部件之間交互的接口信息,并支持故障注入。
腳本編程接口:采用DLL(動態(tài)鏈接庫)的形式,使得自動測試腳本既可以采用腳本語言(如Python、Perl、Ruby、lua),也可以采用編程語言(如C、C++、C#),還可以采用測試管理軟件(如NI TestStand)。自動測試腳本采用的語言及編輯調(diào)試運行環(huán)境,可由腳本編寫人員自行選擇。
設(shè)備信息總覽軟件、接口信息總覽軟件、自動測試腳本(通過腳本編程接口)的控制信息以UDP 單播的形式,發(fā)送給業(yè)務(wù)邏輯系統(tǒng)中相應(yīng)的設(shè)備或軟件。
業(yè)務(wù)邏輯系統(tǒng)各設(shè)備、軟件上傳給用戶界面的狀態(tài)信息、控制信息以UDP 組播的形式,發(fā)送到一個組播地址,使得監(jiān)聽該組播地址的設(shè)備信息總覽軟件、接口信息總覽軟件、腳本編程接口都能收到這些信息。
業(yè)務(wù)邏輯系統(tǒng)中各設(shè)備、軟件與用戶界面軟件交互的控制信息、狀態(tài)信息統(tǒng)一編碼,確保每個數(shù)據(jù)項在全系統(tǒng)中的唯一性,并形成數(shù)據(jù)字典,以供自動測試腳本編寫人員查閱。
業(yè)務(wù)邏輯系統(tǒng)持續(xù)運行,人工測試用戶界面軟件、自動測試腳本可以根據(jù)需要隨時退出、重啟。
人工測試時,測試人員通過人工測試用戶界面軟件向業(yè)務(wù)邏輯系統(tǒng)下發(fā)指令,查看業(yè)務(wù)邏輯系統(tǒng)上傳的信息,結(jié)合配置文件、日志文件判斷測試結(jié)果,填寫測試報告。
自動測試時,測試人員在自動測試腳本編輯調(diào)試運行環(huán)境中運行自動測試腳本,自動測試腳本調(diào)用腳本編程接口函數(shù)。腳本編程接口函數(shù)向業(yè)務(wù)邏輯系統(tǒng)下發(fā)指令,獲取、存儲邏輯系統(tǒng)上傳的信息,讀取配置文件、日志文件,填寫測試報告。
測試人員在調(diào)試、運行自動測試腳本時,可以用人工測試用戶界面軟件來核實自動測試腳本每次調(diào)用腳本編程接口函數(shù)是否成功下發(fā)指令,指令是否正確。在運行自動測試腳本時,測試人員可以在人工測試用戶界面軟件上,介入一些人工測試操作。
測試人員在人工測試用戶界面軟件向業(yè)務(wù)邏輯系統(tǒng)下發(fā)的指令,以及業(yè)務(wù)邏輯系統(tǒng)因此而改變的狀態(tài)可以被自動測試腳本調(diào)用腳本編程接口函數(shù)獲取。
自動測試腳本可以分解為自動操作程序段、自動評判程序段、自動報告程序段。這三種程序段既可組成一個包含自動操作程序段、自動評判程序段、自動報告程序段的自動測試腳本,也可分別組成只包含其中一種程序段的自動測試腳本。
經(jīng)實踐檢驗,采用人工、自動協(xié)同操作分布式控制系統(tǒng)架構(gòu)的JeRail?CBTC 仿真測試平臺體現(xiàn)了以下優(yōu)點:
4.1.1 支持人工與自動協(xié)同、人工與人工協(xié)同、自動與自動協(xié)同
人工與自動協(xié)同分為兩種:一種是在測試操作上的協(xié)同,即部分操作人工執(zhí)行,部分操作自動執(zhí)行;另一種是在測試環(huán)節(jié)上的協(xié)同,即部分測試環(huán)節(jié)人工進行,部分測試環(huán)節(jié)自動進行,見圖3。
圖3 人工、自動在測試環(huán)節(jié)上的協(xié)同
人工操作、自動評判協(xié)同:由于人工測試用戶界面產(chǎn)生的控制信息能夠被自動測試腳本捕獲,在自動測試腳本中可以評判人工操作及其結(jié)果。
自動操作、人工評判協(xié)同:由于自動測試腳本產(chǎn)生的控制信息能夠在人工測試用戶界面上查看,在人工測試用戶界面上可以評判自動操作及其結(jié)果。
自動評判、人工報告協(xié)同:對于自動評判的結(jié)果,既可以由自動測試腳本直接填寫到測試報告中,也可以由自動測試腳本輸出簡單的結(jié)果,再由人工填寫到測試報告中。
人工評判、自動報告協(xié)同:對于人工評判的結(jié)果,既可由人工直接填寫測試報告,也可以將人工評判的結(jié)果作為自動測試腳本的輸入信息,由自動測試腳本填寫到測試報告中。人工與人工協(xié)同分為兩種:一種是不同操作人員之間的協(xié)同,即部分操作由這些人執(zhí)行,部分操作由另一些人執(zhí)行;另一種是不同人工測試用戶界面軟件之間的協(xié)同,這些人工測試用戶界面軟件,既可能分別對應(yīng)不同的控制信息、狀態(tài)信息子集,也可能包含部分相同的控制信息、狀態(tài)信息子集。
自動與自動協(xié)同分為兩種:一種是不同自動測試腳本可以相互獨立地啟動、運行、退出,分別完成不同的測試項;另一種是對同一測試項,部分測試環(huán)節(jié)由這些自動測試腳本完成,部分測試環(huán)節(jié)由另一些自動測試腳本完成。
4.1.2 保證測試環(huán)境持久、測試活動連貫
每個人工測試用戶界面軟件、自動測試腳本的啟動、運行、暫停、繼續(xù)、退出、異常,均不必重啟業(yè)務(wù)邏輯系統(tǒng)、被測系統(tǒng),不僅節(jié)省了整個測試環(huán)境初始化時間,還保證了測試環(huán)境持久運行。
業(yè)務(wù)邏輯系統(tǒng)或被測系統(tǒng)中部分設(shè)備、軟件退出/重啟,也不會導(dǎo)致人工測試用戶界面軟件、自動測試腳本退出/重啟,從而確保與退出/重啟設(shè)備、軟件無關(guān)的測試活動的連貫性。
4.1.3 提高腳本調(diào)試、運行的可視性
自動測試腳本通過腳本編程接口函數(shù)下發(fā)的控制信息,將被業(yè)務(wù)邏輯系統(tǒng)轉(zhuǎn)發(fā)給人工測試用戶界面軟件呈現(xiàn)。自動測試腳本開發(fā)人員可以在人工測試用戶界面軟件上驗證腳本編程接口函數(shù)調(diào)用是否符合預(yù)期,從而提高自動測試腳本調(diào)試、運行的可視性。
4.1.4 支持全人工測試—人工測試為主—自動測試為主—全自動測試過渡
在全人工測試階段,提高測試用例的可操作性,優(yōu)化測試用例的執(zhí)行順序。在人工測試為主、自動測試為輔階段,可以用自動測試腳本初始化具有重復(fù)性的測試場景(例如使列車從車輛段運行到轉(zhuǎn)換軌),持續(xù)監(jiān)視(例如列車線信息),捕獲瞬間狀態(tài)變化,評判測試結(jié)果,填寫測試報告。在自動測試為主、人工測試為輔階段,執(zhí)行自動測試腳本時,可以介入人工操作、評判、報告。在全自動測試階段,測試操作、評判、報告全部由自動測試腳本完成。
4.1.5 適于測試正在研發(fā)的系統(tǒng)、在工程項目上應(yīng)用的成熟系統(tǒng)、工程項目交付周期特別短的系統(tǒng)
對于正在研發(fā)的系統(tǒng),依次采用全人工測試、人工測試為主、自動測試為主、全自動測試;對于在工程項目上應(yīng)用的成熟系統(tǒng),采用自動測試為主、全自動測試;對于工程項目交付周期特別短的系統(tǒng),可以一部分人做人工測試,一部分人編寫自動測試腳本。當(dāng)自動測試腳本來不及開發(fā)時,可以補充對腳本不太熟練的人員,完成人工測試;對于人工測試積累、優(yōu)化過的測試用例,可以補充對腳本比較熟練的人員,轉(zhuǎn)換成自動測試腳本。
4.1.6 支持工作日、白天人工測試,休息日、夜間自動測試
工作日、白天比較適合需要人實時響應(yīng)的測試。休息日、夜間比較適合無人值守的持久性測試,如穩(wěn)定性測試。
人工、自動協(xié)同操作分布式控制系統(tǒng)架構(gòu)由于業(yè)務(wù)邏輯系統(tǒng)中各設(shè)備、軟件無差別地向所有人工操作用戶界面軟件、自動操作腳本編程接口發(fā)送狀態(tài)信息,轉(zhuǎn)發(fā)或回送控制信息,使人工操作用戶界面軟件、自動操作腳本編程接口接收到與己無關(guān)的信息,這就要求:一是傳送控制信息、狀態(tài)信息的通信協(xié)議應(yīng)便于接收方過濾掉與己無關(guān)的信息;二是業(yè)務(wù)邏輯系統(tǒng)應(yīng)平常只發(fā)送值發(fā)生變化的信息,以減少通信量;三是業(yè)務(wù)邏輯系統(tǒng)應(yīng)周期性或回應(yīng)人工操作用戶界面軟件、自動操作腳本編程接口的請求發(fā)送全部信息,以使剛啟動的人工操作用戶界面軟件、自動操作腳本編程接口獲得全部信息的歷史值。
綜上,該架構(gòu)比較適合于業(yè)務(wù)邏輯、用戶界面之間所傳送的信息符合以下特點的系統(tǒng):一是信息的值變化不頻繁;二是值變化頻繁的信息數(shù)量較少;三是能將值變化頻繁的狀態(tài)信息轉(zhuǎn)換為值變化不頻繁的狀態(tài)信息。
人工、自動協(xié)同的測試平臺架構(gòu)使上海富欣智能交通控制有限公司能夠同時快速測試CBTC、TACS(列車自主運行系統(tǒng))等多制式產(chǎn)品并驗證工程應(yīng)用項目,對于工業(yè)控制自動化領(lǐng)域也具有借鑒意義。