摘要:針對(duì)CBTC系統(tǒng)數(shù)據(jù)轉(zhuǎn)換工具測(cè)試中由于數(shù)據(jù)量大、回歸輪次多等原因?qū)е碌暮臅r(shí)、耗力的現(xiàn)狀,提出了一種自動(dòng)化測(cè)試框架,旨在提高測(cè)試效率,縮短測(cè)試時(shí)間,減少人為錯(cuò)誤。該自動(dòng)化測(cè)試框架易于擴(kuò)展,可以靈活地應(yīng)用到各個(gè)項(xiàng)目中。
關(guān)鍵詞:自動(dòng)化測(cè)試框架;測(cè)試腳本;數(shù)據(jù)轉(zhuǎn)換
0? ? 引言
基于通信的列車(chē)控制(Communication Based Train Control,簡(jiǎn)稱CBTC)系統(tǒng)已經(jīng)成為城市軌道交通信號(hào)系統(tǒng)的發(fā)展方向[1]。數(shù)據(jù),作為CBCT系統(tǒng)中的核心組成部分,肩負(fù)著為整個(gè)CBTC系統(tǒng)的運(yùn)行提供線路數(shù)據(jù)信息、子系統(tǒng)數(shù)據(jù)信息等重要功能。為了快速準(zhǔn)確地生成數(shù)據(jù),數(shù)據(jù)轉(zhuǎn)換工具應(yīng)運(yùn)而生,該工具提供了子系統(tǒng)設(shè)計(jì)數(shù)據(jù)的生成、系統(tǒng)數(shù)據(jù)和子系統(tǒng)設(shè)計(jì)數(shù)據(jù)的安全校驗(yàn)以及子系統(tǒng)應(yīng)用數(shù)據(jù)的生成等功能。由于生成數(shù)據(jù)的安全性和準(zhǔn)確性是CBTC系統(tǒng)安全連續(xù)運(yùn)行的重要保證,因此需要對(duì)數(shù)據(jù)轉(zhuǎn)換工具進(jìn)行充分有效的測(cè)試。
在項(xiàng)目執(zhí)行過(guò)程中發(fā)現(xiàn),目前的數(shù)據(jù)轉(zhuǎn)換工具測(cè)試存在以下問(wèn)題:
(1)手工黑盒測(cè)試回歸效率低。
(2)由于數(shù)據(jù)量大,手動(dòng)測(cè)試存在偶然性和不確定性。
(3)回歸的覆蓋率不足,容易遺漏問(wèn)題。在項(xiàng)目執(zhí)行過(guò)程中,由于執(zhí)行進(jìn)度和交付時(shí)間緊等原因,測(cè)試策略通常是回歸測(cè)試,也就是根據(jù)需求變更和代碼變更挑選回歸范圍,在回歸覆蓋率和測(cè)試時(shí)間之間折中,但這樣很容易遺漏問(wèn)題。
本文針對(duì)前面提到的數(shù)據(jù)轉(zhuǎn)換工具測(cè)試中由于數(shù)據(jù)量大、回歸輪次多等原因?qū)е碌暮臅r(shí)、耗力的現(xiàn)狀,提出一種自動(dòng)化測(cè)試框架,旨在:
(1)降低回歸成本,減少人力和時(shí)間投入;
(2)提高回歸覆蓋率,每一輪測(cè)試都可以做到全回歸;
(3)提高回歸的穩(wěn)定性,使測(cè)試結(jié)果確定。
1? ? CBTC系統(tǒng)數(shù)據(jù)轉(zhuǎn)換工具概述
圖1是CBTC信號(hào)系統(tǒng)的架構(gòu),包括列車(chē)自動(dòng)監(jiān)控子系統(tǒng)(簡(jiǎn)稱“ATS子系統(tǒng)”)、區(qū)域控制器(簡(jiǎn)稱“ZC子系統(tǒng)”)、聯(lián)鎖子系統(tǒng)(簡(jiǎn)稱“CBI子系統(tǒng)”)和車(chē)載子系統(tǒng)(簡(jiǎn)稱“OBCU子系統(tǒng)”)[2]。
下面簡(jiǎn)單介紹一下各子系統(tǒng)的功能:
(1)ATS子系統(tǒng)完成列車(chē)運(yùn)行監(jiān)控、報(bào)警顯示、進(jìn)路排列和運(yùn)行圖的調(diào)整等功能,還可以提供近期的列車(chē)運(yùn)行記錄的查詢。
(2)OBCU子系統(tǒng)是控制列車(chē)運(yùn)行和保證列車(chē)實(shí)現(xiàn)移動(dòng)閉塞制式的關(guān)鍵設(shè)備。
(3)ZC子系統(tǒng)是重要的地面控制設(shè)備,主要功能是對(duì)本區(qū)域內(nèi)運(yùn)行的列車(chē)進(jìn)行管理,同時(shí)考慮列車(chē)進(jìn)路、道岔狀態(tài)、線路限速以及其他障礙物的條件,向列車(chē)發(fā)送“移動(dòng)授權(quán)”。
(4)CBI子系統(tǒng)是為了保證行車(chē)安全,在進(jìn)路、道岔和信號(hào)機(jī)之間存在的相互制約關(guān)系。主要負(fù)責(zé)采集道岔、信號(hào)機(jī)、屏蔽門(mén)、緊急按鈕等的狀態(tài)信息,并控制它們,完成列車(chē)進(jìn)路的辦理和取消。
每個(gè)子系統(tǒng)都需要軌旁數(shù)據(jù)(比如線路上道岔、軌道等軌旁設(shè)備的信息)和子系統(tǒng)數(shù)據(jù)(比如站臺(tái)信息、進(jìn)路信息等)的支持,而子系統(tǒng)軟件運(yùn)行時(shí)則要讀取特定格式(比如二進(jìn)制或者XML格式)的文件,數(shù)據(jù)轉(zhuǎn)換工具的作用就是將軌旁數(shù)據(jù)和子系統(tǒng)數(shù)據(jù)根據(jù)各子系統(tǒng)的設(shè)計(jì)要求,轉(zhuǎn)換成規(guī)定格式的設(shè)計(jì)數(shù)據(jù)。下面簡(jiǎn)單介紹一下數(shù)據(jù)轉(zhuǎn)換工具。
CBTC系統(tǒng)數(shù)據(jù)轉(zhuǎn)換工具是用于系統(tǒng)設(shè)計(jì)和數(shù)據(jù)轉(zhuǎn)換的軟件平臺(tái),功能包括:
(1)導(dǎo)入、導(dǎo)出軌旁數(shù)據(jù);
(2)導(dǎo)入、導(dǎo)出系統(tǒng)參數(shù);
(3)導(dǎo)入、導(dǎo)出子系統(tǒng)設(shè)計(jì)數(shù)據(jù);
(4)數(shù)據(jù)校驗(yàn),工具可以檢查出源數(shù)據(jù)的格式錯(cuò)誤,并正確報(bào)警。
該工具的輸入數(shù)據(jù)是軌旁數(shù)據(jù)和子系統(tǒng)設(shè)計(jì)數(shù)據(jù),多為Excel格式;輸出為子系統(tǒng)數(shù)據(jù),多為二進(jìn)制格式。
為了確保系統(tǒng)運(yùn)行正常,一定要保證轉(zhuǎn)換前后數(shù)據(jù)的一致性。
2? ? 自動(dòng)化測(cè)試框架概述
框架是整個(gè)或部分系統(tǒng)的可重用設(shè)計(jì),表現(xiàn)為一組抽象構(gòu)件及構(gòu)件實(shí)例間交互的方法;另一種定義認(rèn)為,框架是可被應(yīng)用開(kāi)發(fā)者定制的應(yīng)用骨架。前者是從應(yīng)用方面給出的定義,而后者是從目的方面給出的定義。從框架的定義可以了解,框架可以是被重用的基礎(chǔ)平臺(tái),也可以是組織架構(gòu)類(lèi)的東西。其實(shí)后者更為貼切,因?yàn)榭蚣鼙緛?lái)就是組織和歸類(lèi)所用的。
自動(dòng)化測(cè)試框架可以提供自動(dòng)化測(cè)試執(zhí)行和管理功能的架構(gòu)模塊,測(cè)試完成后統(tǒng)計(jì)測(cè)試結(jié)果。自動(dòng)化測(cè)試框架需要滿足以下幾個(gè)要求:
(1)自動(dòng)化測(cè)試更便于實(shí)施,也就是說(shuō),寫(xiě)測(cè)試腳本要方便,要讓不怎么懂技術(shù)的測(cè)試人員也可以寫(xiě)自動(dòng)化測(cè)試腳本。
(2)解決自動(dòng)化測(cè)試腳本本身存在的問(wèn)題,如異常處理和場(chǎng)景恢復(fù)等[3]。一個(gè)自動(dòng)化測(cè)試框架在批量執(zhí)行腳本的情況下,不論遇到什么情況,如腳本運(yùn)行錯(cuò)誤、腳本質(zhì)量錯(cuò)誤、測(cè)試環(huán)境異常、被測(cè)設(shè)備死機(jī)或掛起等,都要有能力重新清理測(cè)試環(huán)境,使測(cè)試環(huán)境恢復(fù)到最初始的狀態(tài),并執(zhí)行接下來(lái)需要執(zhí)行的腳本。
(3)易于維護(hù)。自動(dòng)化測(cè)試是為了提高效率,因此測(cè)試框架和測(cè)試腳本都要易于維護(hù),不能讓維護(hù)變成另一種工作量。
(4)可重用性[4],在框架里,可以實(shí)現(xiàn)一些通用功能,簡(jiǎn)化腳本開(kāi)發(fā)過(guò)程。
(5)測(cè)試報(bào)告美觀易讀。
因此,自動(dòng)化測(cè)試框架應(yīng)具備以下功能:
(1)Log:日志記錄和管理功能,針對(duì)不同情況,設(shè)置不同的日志級(jí)別,方便定位問(wèn)題。
(2)Report:生成測(cè)試報(bào)告。
(3)Common:公共函數(shù)、方法以及通用操作的管理,遵循高內(nèi)聚、低耦合的原則,為編寫(xiě)腳本提供便利。
(4)TestCase:測(cè)試用例管理功能。
(5)Harness:提供多種測(cè)試用例的執(zhí)行方式,方便測(cè)試人員執(zhí)行腳本;還負(fù)責(zé)異常梳理和場(chǎng)景恢復(fù)。
3? ? 針對(duì)數(shù)據(jù)轉(zhuǎn)換工具的自動(dòng)化測(cè)試框架
3.1? ? 測(cè)試框架架構(gòu)
測(cè)試框架架構(gòu)如圖2所示,其中DataTool為被測(cè)體,測(cè)試框架包括:
(1)Log:提供日志功能,設(shè)置不同的日志級(jí)別,可以在案例執(zhí)行過(guò)程中寫(xiě)入日志,方便定位問(wèn)題。
(2)Harness:提供了測(cè)試案例的管理方式和執(zhí)行方式。
(3)TestCase:提供腳本編寫(xiě)的模板,測(cè)試人員可以基于框架編寫(xiě)測(cè)試腳本。
(4)Common:提供一些可重用功能,以簡(jiǎn)化腳本編寫(xiě)難度。
(5)Report:測(cè)試結(jié)束生成測(cè)試報(bào)告,提供簡(jiǎn)潔明了的測(cè)試結(jié)果和測(cè)試日志。
(6)ExcelReader:針對(duì)數(shù)據(jù)轉(zhuǎn)換工具開(kāi)發(fā)的Excel讀取和修改模塊,用來(lái)讀取數(shù)據(jù)工具的輸入數(shù)據(jù)。
(7)BinaryReader:針對(duì)數(shù)據(jù)轉(zhuǎn)換工具開(kāi)發(fā)的二進(jìn)制文件讀取模塊,用來(lái)讀取和解析數(shù)據(jù)工具的輸出數(shù)據(jù)。
對(duì)于數(shù)據(jù)轉(zhuǎn)換的測(cè)試流程為:測(cè)試腳本分別讀取輸入數(shù)據(jù)和輸出數(shù)據(jù),依據(jù)一定的規(guī)則進(jìn)行運(yùn)算,然后將輸入數(shù)據(jù)和輸出數(shù)據(jù)進(jìn)行比對(duì),記錄日志。
對(duì)于數(shù)據(jù)校驗(yàn)的測(cè)試流程為:根據(jù)測(cè)試目的,修改輸入數(shù)據(jù),運(yùn)行數(shù)據(jù)轉(zhuǎn)換工具讀取修改后的輸入數(shù)據(jù),通過(guò)測(cè)試腳本讀取報(bào)警內(nèi)容,和期望結(jié)果進(jìn)行比對(duì),記錄日志。
3.2? ? Log功能
Log功能提供如下接口:
(1)LogPass(string msg):記錄測(cè)試通過(guò)。
(2)LogFail(string msg):記錄測(cè)試失敗。
(3)LogInfo(InfoType iType,string msg):記錄測(cè)試日志,其中日志類(lèi)型分為Info、Error、Debug和Highlight四種類(lèi)型,方便測(cè)試人員定位問(wèn)題。
測(cè)試人員可以在編寫(xiě)腳本時(shí)調(diào)用Log模塊記錄日志,還可以通過(guò)該模塊根據(jù)判據(jù)記錄測(cè)試結(jié)果。
3.3? ? Harness功能
Harness模塊提供了如下3個(gè)主要功能:
(1)測(cè)試腳本管理:該模塊提供了測(cè)試腳本的編寫(xiě)模板,測(cè)試人員可以根據(jù)模板編寫(xiě)腳本,如果有其他需求,該框架也可以很簡(jiǎn)便地?cái)U(kuò)展。
(2)測(cè)試腳本執(zhí)行:該模塊支持多種執(zhí)行方式,使用模塊提供的命令行,可以按照測(cè)試人員分類(lèi)執(zhí)行,也可以按照測(cè)試類(lèi)別分類(lèi)執(zhí)行。
(3)測(cè)試場(chǎng)景恢復(fù):測(cè)試框架還支持在腳本執(zhí)行前后進(jìn)行特定的場(chǎng)景恢復(fù)操作,保證腳本之間的獨(dú)立性。
3.4? ? TestCase功能
在該測(cè)試框架中,每個(gè)測(cè)試腳本均為一個(gè)命名唯一的函數(shù),且都有唯一的屬性,Harness模塊會(huì)根據(jù)該屬性讀取并執(zhí)行測(cè)試腳本。這樣,測(cè)試人員只需要關(guān)注腳本編寫(xiě)本身,極大地降低了對(duì)測(cè)試人員編碼水平的要求。
測(cè)試人員編寫(xiě)腳本時(shí)可以根據(jù)測(cè)試目的調(diào)用Common和Log模塊提供的接口。
3.5? ? Common功能
Common模塊提供了一些可復(fù)用的功能,封裝成統(tǒng)一的接口,供測(cè)試腳本調(diào)用,降低了腳本編寫(xiě)難度。主要功能包含:
(1)支持多種數(shù)據(jù)類(lèi)型的結(jié)果比對(duì),并生成日志;
(2)讀取二進(jìn)制文件,支持大小端,并且按照規(guī)定的格式解析二進(jìn)制文件;
(3)讀取XML文件;
(4)讀取和修改Excel文件,這樣,測(cè)試人員可以通過(guò)接口調(diào)用來(lái)修改Excel文件,而非人工操作,極大地提高了測(cè)試效率和測(cè)試準(zhǔn)確率。
3.6? ? Report功能
Report模塊提供了兩種形式的報(bào)告:txt格式和xml格式。
(1)txt格式的測(cè)試報(bào)告包含測(cè)試腳本執(zhí)行過(guò)程中生成的日志,如圖3所示。
(2)xml格式的測(cè)試報(bào)告提供了測(cè)試結(jié)果總結(jié),如圖4所示,包含測(cè)試環(huán)境、測(cè)試時(shí)間、測(cè)試腳本名稱和測(cè)試結(jié)果,執(zhí)行失敗的腳本會(huì)高亮。測(cè)試報(bào)告的內(nèi)容和格式也可以根據(jù)測(cè)試需求進(jìn)行修改和擴(kuò)展。
4? ? 結(jié)語(yǔ)
數(shù)據(jù)工具自動(dòng)化測(cè)試框架可以用于數(shù)據(jù)工具測(cè)試,作為框架,它的結(jié)構(gòu)是開(kāi)放的,使用時(shí)可以根據(jù)測(cè)試的需要對(duì)其進(jìn)行擴(kuò)展和改進(jìn),可靈活運(yùn)用到各種項(xiàng)目中。在項(xiàng)目執(zhí)行過(guò)程中,通過(guò)使用該工具,可以極大地提高測(cè)試效率和測(cè)試準(zhǔn)確率,對(duì)測(cè)試人員的代碼水平也沒(méi)有太高的要求。
[參考文獻(xiàn)]
[1] 2009—2012年中國(guó)城市軌道交通線網(wǎng)規(guī)劃及行業(yè)設(shè)備報(bào)告[R].
[2] IEEE Standard for User Interface Requirements in Communications-Based Train Control (CBTC) Systems: 1474.2—2003[S],2003.
[3] KELLY M.Choosing a test automation framework[EB/OL]. [2020-03-20].https://www.ibm.com/developerworks/rational/library/591.html.
[4] NAGLE C.Test Automation Frameworks[EB/OL].[2020-03-
20].http://safsdev.sourceforge.net/FRAMESDataDriven-TestAutomationFrameworks.htm.
收稿日期:2020-03-24
作者簡(jiǎn)介:胡甜(1982—),女,湖北紅安人,博士,工程師,軟件測(cè)試主管,研究方向:嵌入式軟件白盒測(cè)試、軟件自動(dòng)化測(cè)試。