何謝振,周志飛,蔣 劍
(湖南中車時代通信信號有限公司,湖南 長沙 410100)
LKJ-15C型列車運行監(jiān)控系統(tǒng)(簡稱“LKJ-15C”)是基于安全計算機系統(tǒng)、具有高安全性和高可靠性的新一代列車運行監(jiān)控裝置。它能防止列車冒進、超速,并能輔助司機操縱,在保障列車運行安全方面起著極為重要的作用[1-3]。LKJ-15C主機軟件是LKJ-15C的核心控制軟件,其功能的正確性和可靠性直接影響列車的行車安全。
LKJ-15C主機軟件的功能繁多、應(yīng)用場景復(fù)雜,而且經(jīng)常要根據(jù)客戶需求進行適應(yīng)性修改,其手工測試方法存在諸多弊端[1-2,4]:(1)工作量大、效率低、耗時費力,以至于軟件變更發(fā)布時,根本沒有時間做整體回歸測試,存在較大的安全隱患;(2)測試過程中無法人機分離,測試人員必須待在LKJ-15C設(shè)備旁,不間斷地進行測試操作,勞動強度大;(3)人工觀察測試執(zhí)行過程并對測試結(jié)果進行判斷,容易出現(xiàn)缺陷遺漏或?qū)y試結(jié)果誤判的情況;(4)測試過程不易重復(fù)或復(fù)現(xiàn),不利于測試用例的積累、固化等。實現(xiàn)對LKJ-15C主機軟件的自動化測試是解決手工測試諸多問題的有效方案。為此,本文設(shè)計了一套LKJ-15C主機軟件自動化測試系統(tǒng),真正實現(xiàn)了主機軟件的自動化發(fā)布測試。
LKJ-15C主機軟件自動化測試系統(tǒng)采用半實物仿真技術(shù),即主機軟件運行于LKJ-15C真實的硬件環(huán)境中,與LKJ-15C交互的信號設(shè)備采用計算機仿真模擬,LKJ-15C與虛擬信號設(shè)備之間通過真實的硬件接口相連接[4]。自動化測試系統(tǒng)由面向儀器系統(tǒng)的PCI擴展(PCI extensions for instrumentation, PXI)主機模塊、信號調(diào)理模塊、以太網(wǎng)交換機、電源模塊和計算機操作模塊構(gòu)成,如圖1所示。
圖1 LKJ-15C主機軟件自動化測試系統(tǒng)結(jié)構(gòu)Fig. 1 Structure of the automatic test system for LKJ-15C host software
PXI主機模塊由PXI機箱、控制器、通用采集插件、模擬量IO插件、數(shù)字量IO插件、串口通信擴展插件和CAN通信擴展插件組成[5],主要用于模擬機車運行時各種LKJ-15C工作條件[6]??刂破髋c通用采集插件、模擬量IO插件、數(shù)字量IO插件、串口通信擴展插件、CAN通信擴展插件均安裝于PXI機箱中,并通過PXI總線進行數(shù)據(jù)交互。自動化測試系統(tǒng)軟件運行于控制器中,用以控制PXI主機模塊實現(xiàn)自動化測試功能。
通用采集插件為LKJ-15C提供速度脈沖信號和柴油機轉(zhuǎn)速(簡稱“柴速”)信號;模擬量IO插件為LKJ-15C提供各種壓力和直流電壓信號;數(shù)字量IO插件為LKJ-15C提供機車工況和平面無線調(diào)車燈顯信號,并采集LKJ-15C輸出的制動信號;串口通信擴展插件用于模擬其他自動列車防護(automatic train protection, ATP)設(shè)備信息;CAN通信擴展插件用于模擬機車信號和地面點式應(yīng)答器信息。
信號調(diào)理模塊包括速度隔離插件、波形調(diào)理插件、電流調(diào)理插件、電壓調(diào)理插件、電平檢測插件及繼電器輸出插件,用于對PXI主機模塊的輸入輸出信號進行隔離調(diào)理。其中,速度隔離插件用于對通用采集插件輸出的速度信號進行隔離放大;波形調(diào)理插件用于對通用采集插件輸出的柴速信號進行隔離放大;電流調(diào)理插件用于對模擬量IO插件輸出的各壓力信號(4~20 mA)進行隔離;電壓調(diào)理插件用于對模擬量IO插件輸出的直流電壓信號進行隔離;繼電器輸出插件用于對數(shù)字量IO插件輸出的機車工況、平面無線調(diào)車燈顯信號進行隔離轉(zhuǎn)換,并輸出至LKJ-15C;電平檢測插件用于采集LKJ-15C輸出的制動信號,將其隔離轉(zhuǎn)換后送入數(shù)字量IO插件。
PXI主機模塊通過以太網(wǎng)交換機,輸入人機界面單元(driver machine interface, DMI)模擬司機操作信息給LKJ-15C,獲取的LKJ-15C主機輸出信息用于測試結(jié)果判斷并控制程控電源。
電源模塊由2個程控電源組成,其中一個程控電源為LKJ-15C設(shè)備提供DC 110 V的電源,另一個程控電源為信號調(diào)理模塊提供電源。
自動化測試系統(tǒng)軟件用于對LKJ-15C的外部信號和數(shù)據(jù)環(huán)境進行計算機仿真建模,并通過測試腳本技術(shù)實現(xiàn)對LKJ-15C主機軟件的自動化測試。自動化測試系統(tǒng)軟件由測試腳本開發(fā)模塊、測試腳本執(zhí)行模塊及仿真模型庫構(gòu)成,如圖2所示。
圖2 自動化測試系統(tǒng)軟件結(jié)構(gòu)Fig. 2 Software structure of the automatic test system
測試腳本開發(fā)模塊用于測試腳本的編輯、編譯、調(diào)試及管理,主要由腳本編輯器、腳本編譯器、腳本調(diào)試器和腳本管理器構(gòu)成。其中,腳本編輯器用于提供智能、友好、便捷的測試腳本編輯環(huán)境,如智能輸入和修改、用顏色區(qū)分不同類別的標識符、自動腳本語法檢查、自動格式調(diào)整等。腳本編譯器用于對測試腳本進行詞法、語法和語義分析,以及生成目標代碼;編譯不通過時,能夠顯示和定位編譯錯誤信息。腳本調(diào)試器支持對測試腳本進行非中斷和中斷(斷點設(shè)置、單步執(zhí)行等)兩種模式的調(diào)試。腳本管理器以資源管理器的形式對測試腳本進行組織管理。測試腳本開發(fā)工具如圖3所示。
圖3 測試腳本開發(fā)工具Fig. 3 Test script development tool
測試腳本執(zhí)行模塊實現(xiàn)對測試腳本執(zhí)行解釋、測試結(jié)果驗證分析等功能,主要由測試項目管理器、測試執(zhí)行管理器、測試信息顯示器、腳本解釋執(zhí)行器、測試結(jié)果驗證器和測試結(jié)果分析器構(gòu)成。系統(tǒng)軟件測試執(zhí)行主界面如圖4所示。
圖4 自動化測試系統(tǒng)軟件主界面Fig. 4 Main operation interface of the automatic test system software
(1)測試項目管理器。其用于測試項目的創(chuàng)建、打開、保存及設(shè)置等。
(2)測試執(zhí)行管理器。其用于運行或停止測試,定制測試任務(wù)。例如,測試用例選擇性執(zhí)行、全部執(zhí)行、只選擇上次不通過的用例、重復(fù)執(zhí)行、控制測試執(zhí)行時間等。
(3)測試信息顯示器。其以豐富友好的形式輸出各種測試信息,包括測試用例信息、測試運行過程信息、測試結(jié)果信息及測試日志等,以便測試狀態(tài)監(jiān)測和問題分析。
(4)腳本解釋執(zhí)行器。其用于解釋執(zhí)行測試腳本,驅(qū)動仿真模型運行,按測試邏輯發(fā)送和接收測試數(shù)據(jù),并調(diào)度管理測試任務(wù)。其中,測試腳本以測試類為單元,每個測試類中包含多個測試用例。如圖5所示,測試腳本的執(zhí)行流程為:首先執(zhí)行測試類建立腳本,通常會調(diào)用系統(tǒng)控制模型進行系統(tǒng)初始化并執(zhí)行本測試類特有的一些初始化操作;然后逐個執(zhí)行測試類中的測試用例,在每個測試用例執(zhí)行之前,先執(zhí)行測試用例建立腳本,執(zhí)行完之后,會執(zhí)行測試用例拆卸腳本,這樣做的目的是保證測試用例之間能夠相互獨立,互不影響;在所有測試用例執(zhí)行完之后,執(zhí)行測試類拆卸腳本,通常會執(zhí)行一些測試清理復(fù)位操作并關(guān)閉系統(tǒng)。
圖5 測試腳本執(zhí)行流程Fig. 5 Test script execution process
(5)測試結(jié)果驗證器。其用來自動判斷測試結(jié)果。測試用例的測試結(jié)果有4種狀態(tài):通過(經(jīng)過一系列的操作后,LKJ-15C主機輸出信息與預(yù)期值一致,則測試通過)、失?。↙KJ-15C主機輸出信息與預(yù)期值不一致,則測試失?。?、錯誤(由于系統(tǒng)異常錯誤造成的測試不通過,如通信斷鏈、非法輸入等)和忽略(由于前置條件不滿足之類特殊原因而忽略執(zhí)行的測試用例,其測試結(jié)果為忽略)。
(6)測試結(jié)果分析器。其能統(tǒng)計和存儲測試結(jié)果,分析測試不通過的原因,定位測試不通過的腳本語句,生成和打印測試報告等。圖6為用例測試失敗原因分析示例。
圖6 測試失敗原因分析Fig. 6 Cause analysis for failure of test
仿真模型庫是針對LKJ-15C的數(shù)據(jù)運行環(huán)境的計算機仿真模型的集合。仿真模型通過調(diào)用PXI主機模塊的硬件驅(qū)動程序?qū)崿F(xiàn)與被測LKJ-15C主機軟件之間的信息交互。本系統(tǒng)設(shè)計的主要仿真模型如表1所示,其中輸入和輸出是相對于被測LKJ-15C而言的。仿真模型是測試腳本的操作對象,測試腳本通過調(diào)用仿真模型接口來控制仿真模型與被測LKJ-15C主機軟件間按照測試邏輯進行交互,并對測試結(jié)果進行判斷,從而達到自動化測試的目的。以下為測試走停走控制功能[7-8]的一個用例腳本:
表1 仿真模型Tab. 1 Simulation models
LKJ-15C主機軟件自動化系統(tǒng)的測試流程見圖7,具體如下:
圖7 自動化測試系統(tǒng)測試流程Fig. 7 Test process of the automatic test system
(1)根據(jù)LKJ-15C主機軟件測試用例規(guī)范編寫測試腳本,編輯完后對測試腳本進行編譯,編譯無誤后生成目標代碼;
(2)創(chuàng)建新的或打開已存在的測試項目,選擇并執(zhí)行所需的測試腳本;
(3)測試運行時,腳本解釋執(zhí)行器對測試腳本進行實時解釋,調(diào)用仿真模型接口以驅(qū)動仿真模型收發(fā)測試數(shù)據(jù),并通過系統(tǒng)硬件實現(xiàn)與被測LKJ-15C主機軟件之間的信息交互;
(4)測試結(jié)果驗證器自動比對被測主機軟件的實際輸出數(shù)據(jù)(通過主機輸出模型獲取)和預(yù)期結(jié)果,以判斷測試是否通過;
(5)測試結(jié)果分析器統(tǒng)計測試結(jié)果,分析定位錯誤并生成測試報告。
目前,LKJ-15C主機軟件自動化測試系統(tǒng)的測試腳本庫已覆蓋LKJ-15C主機軟件需求分析說明書中98%的應(yīng)用處理功能需求,設(shè)計測試用例4 000多個。
以前采用手工測試方式時,測試人員只能對主機軟件的變更功能部分進行測試;現(xiàn)在每次發(fā)布LKJ-15C主機軟件時,都會對其所有功能進行完整的自動化回歸測試。該系統(tǒng)完成一輪主機軟件所有功能的自動化測試只需2天多的時間,而且是全晝夜無人值守運行,測試完后系統(tǒng)自動出具測試報告,極大地提升了測試效率和質(zhì)量;且真正實現(xiàn)了人機分離,減輕了測試人員的工作強度;并避免了測試結(jié)果受人為因素干擾,可以準確復(fù)現(xiàn)測試過程和測試結(jié)果。在本自動化測試系統(tǒng)投入應(yīng)用的兩年時間內(nèi),已完成主機軟件自動化發(fā)布測試20余次,累計發(fā)現(xiàn)LKJ-15C主機軟件缺陷360多個。
LKJ-15C主機軟件自動化測試系統(tǒng)基于半實物仿真技術(shù)和測試腳本技術(shù),真正意義上實現(xiàn)了無人值守的自動化發(fā)布測試。目前,該測試腳本庫覆蓋了主機軟件的絕大部分功能需求,已成為主機軟件質(zhì)量的有力防護網(wǎng)。近兩年的應(yīng)用實踐表明,本自動化測試系統(tǒng)穩(wěn)定可靠,測試結(jié)果可信,應(yīng)用成效顯著,已成為主機軟件的主要測試工具。
自動化測試系統(tǒng)的測試準確性取決于其測試腳本庫的豐富程度。因不斷有新的或需變更的功能需求補充到主機軟件需求分析說明書中,為此,應(yīng)持續(xù)對測試腳本庫進行維護和擴充,不斷提升其對主機軟件功能需求的測試覆蓋率,并沉淀和固化主機軟件現(xiàn)場應(yīng)用反饋的測試用例。
后續(xù)將研究開發(fā)滿足多樣化、使用便捷等需求的自動化測試系統(tǒng)。例如,開發(fā)便攜式自動化測試系統(tǒng),以簡化系統(tǒng),方便攜帶;開發(fā)基于PC的全數(shù)字化自動測試系統(tǒng),不依賴特殊的硬件環(huán)境,以方便開發(fā)人員和測試人員對主機軟件的應(yīng)用邏輯功能進行調(diào)試和預(yù)測試,提前發(fā)現(xiàn)和修正軟件缺陷;研究測試腳本自動生成技術(shù),以減輕測試腳本編寫的工作量,等等。