張 鑫
(湖南中車時代通信信號有限公司 北京分公司,北京 100070)
近年來,城市軌道交通通信信號項(xiàng)目激增,為了讓有限的人力資源滿足大量的工程項(xiàng)目需求,需要設(shè)計(jì)一套完整的自動化測試系統(tǒng)來適配不同的工程線路,同時最大程度降低軟件開發(fā)的成本并縮短周期。使用軟件對結(jié)果進(jìn)行判定,可以避免人為的錯誤,防止存在安全隱患的軟件發(fā)布到現(xiàn)場。
設(shè)計(jì)自動化測試平臺之前需要清楚整個工作的流程,包括前期人員和環(huán)境的準(zhǔn)備工作、中期的具體操作過程以及后期的維護(hù)工作等。測試模型的選擇對于整個測試工作來說具有很強(qiáng)的引導(dǎo)作用,對于測試平臺的搭建來說也具有一定的指導(dǎo)性。從測試模型中可以很好地知道在測試過程中每項(xiàng)工作之間的相互關(guān)聯(lián)性或制約性。除此之外,測試工作也是項(xiàng)目開發(fā)的一個重要環(huán)節(jié),測試模型能夠很好地展現(xiàn)出開發(fā)前期工作與一系列測試過程的關(guān)聯(lián)。測試模型確定好之后,能夠更合理地安排后續(xù)的平臺搭建工作,使得多項(xiàng)目共同進(jìn)行時能夠在最短的時間內(nèi)保質(zhì)保量地完成測試工作[1]。
根據(jù)流程結(jié)構(gòu),將目前已有的測試模型分為V、H、W這3種類型。V模型是這幾種模型中最早被提出來的,主要是為了解決研發(fā)和測試的協(xié)同工作的進(jìn)度問題,其架構(gòu)如圖1所示。
圖1 V測試模型架構(gòu)
為了在完成測試工作任務(wù)的同時簡化測試流程和測試平臺開發(fā)的工作量,選擇V模型作為測試平臺搭建的依據(jù)。
為了保證自動化測試能夠很好的執(zhí)行,需要既有的測試用例作為后盾,這些用例由人工測試驗(yàn)證過,測試步驟有準(zhǔn)確的測試結(jié)果相對應(yīng)。測試人員需要明確每一個用例在經(jīng)過自動化的步驟后是否能得到預(yù)期的測試結(jié)果。除此之外,一個優(yōu)質(zhì)的自動化測試平臺是可以重復(fù)循環(huán)執(zhí)行這些被選中的用例,并且前一次的測試結(jié)果不會影響到后續(xù)的測試執(zhí)行和結(jié)果的判斷。平臺執(zhí)行流程如圖2所示。
圖2 平臺執(zhí)行流程
根據(jù)自動化測試流程圖,可將整個自動化測試分為4個階段。
第一階段:軟件更新和環(huán)境配置。每一條同程線路的數(shù)據(jù)都不相同,為了保證城軌信號系統(tǒng)的測試平臺適配不同的項(xiàng)目和工程線路,在城軌信號系統(tǒng)自動化測試平臺設(shè)計(jì)一個環(huán)境配置??靵韺Σ煌€路的數(shù)據(jù)和參數(shù)進(jìn)行配置,以適應(yīng)多項(xiàng)目同時測試的需求。該模塊在平臺啟動前就完成設(shè)置,與后續(xù)的測試腳本完全分離,不影響后續(xù)測試腳本的編制和讀取。
第二個階段:測試腳本選擇或腳本制作。如果只涉及到軟件問題的修復(fù),那么一些既有的腳本可以加載后直接運(yùn)行。而如果涉及到軟件新增功能,那么則需要增加與之匹配的用例和腳本[2]。每一次的測試之前根據(jù)分析需求的變更和影響的范圍來選擇需要執(zhí)行的腳本,每一個腳本都具有獨(dú)立性,可根據(jù)需求獨(dú)立執(zhí)行。
第三個階段:判斷腳本測試結(jié)果是否與預(yù)期結(jié)果相同。在腳本執(zhí)行過程中也可能存在由于意外信息的刺激或干擾而中斷測試,所有腳本結(jié)果判斷和結(jié)束的過程都將被記錄下來,跳過這個錯誤并將整個測試環(huán)境恢復(fù)到初始狀態(tài)后繼續(xù)執(zhí)行后續(xù)的測試腳本。
第四個階段:測試結(jié)果的統(tǒng)計(jì)、測試報告的生成以及后續(xù)的缺陷管理。通過完整的測試模塊,測試人員能夠有效回溯整個測試的過程,并從中查詢過程中出錯的步驟和原因。
本文設(shè)計(jì)的城軌信號系統(tǒng)的自動化測試平臺結(jié)構(gòu)如圖3所示,主要由被測和陪測對象、仿真模型模塊、自動化測試驅(qū)動模塊、交互環(huán)境模塊、測試結(jié)果比對模塊以及測試管理模塊組成。
圖3 自動化測試平臺結(jié)構(gòu)
自動化測試驅(qū)動模塊分成兩個部分:一部分負(fù)責(zé)加載和識別配置中的數(shù)據(jù)(不同線路的電子地圖數(shù)據(jù)和一些基本的網(wǎng)址配置等),并將這些配置數(shù)據(jù)讀取到模塊內(nèi)存中,用于后續(xù)匹配腳本文件中的信息;另一部分負(fù)責(zé)分析腳本文件,并根據(jù)腳本文件執(zhí)行相應(yīng)的動作。驅(qū)動模塊主要驅(qū)動的是既有的軌旁仿真、駕駛臺仿真模型以及車輛模型,將這3部分按順序編號,驅(qū)動模塊根據(jù)目標(biāo)模型的ID編號向目標(biāo)模型發(fā)送后續(xù)的執(zhí)行命令內(nèi)容。在進(jìn)行模塊編碼之前,先根據(jù)測試的實(shí)際需求將所有的測試執(zhí)行動作列成一個規(guī)定的列表。需要執(zhí)行的動作具有唯一的編號,自動化測試驅(qū)動模塊和仿真模塊都要根據(jù)這個表的對應(yīng)關(guān)系來執(zhí)行動作。除此之外,還需要一些數(shù)據(jù)命令的加入,包括列表中所有的執(zhí)行動作都需要知道該動作執(zhí)行到某一個具體的目標(biāo)設(shè)備,如辦理進(jìn)路的這條動作命令針對的是某一條實(shí)際的進(jìn)路數(shù)據(jù)。為了使自動化測試平臺可以適配不同實(shí)際城軌項(xiàng)目,可以通過讀取配置和電子地圖數(shù)據(jù)的方式來實(shí)現(xiàn)??偟膩碚f,驅(qū)動模塊主要識別腳本的仿真目標(biāo)ID、制動命令I(lǐng)D并執(zhí)行命令的具體數(shù)據(jù),仿真目標(biāo)根據(jù)收到的信息對特定的目標(biāo)設(shè)備執(zhí)行動作。
從制作的角度來看,腳本是由多條文本命令組合而成。通過文本可視化的方式讓測試人員更加簡單地對腳本進(jìn)行編輯。通過交互環(huán)境中的制作模塊,自動生成由JSON語言寫成的腳本。從測試用例的角度來說,腳本就是將現(xiàn)有的由自然語言寫成的測試用例轉(zhuǎn)換成測試平臺能夠識別的文件,并存儲在平臺中,每一個用例需要有一個腳本與其對應(yīng)。生成腳本文件后,測試人員可以根據(jù)功能或者按照測試的需求進(jìn)行分類,為每一個用例和腳本分配唯一的ID編號[3]。
本文設(shè)計(jì)的腳本結(jié)構(gòu)目前主要包括4部分內(nèi)容:一是目標(biāo),在目標(biāo)變量里填寫相應(yīng)的目標(biāo)仿真模塊ID,即驅(qū)動哪一個仿真模塊動作;二是執(zhí)行的命令I(lǐng)D,驅(qū)動模塊通過識別這個ID來確定執(zhí)行某一個具體的動作;三是腳本的具體數(shù)據(jù),如設(shè)置某個信號機(jī)的開放和禁止?fàn)顟B(tài)時,這里的數(shù)據(jù)內(nèi)容為具體的目標(biāo)信號機(jī)的ID號;四是腳本的期望結(jié)果,每一個用例都有一個預(yù)期的結(jié)果狀態(tài),寫在腳本的最后一部分,用于在腳本自動化測試執(zhí)行完之后進(jìn)行測試結(jié)果判斷。
測試結(jié)果分析模塊需要考慮兩個方面,分別是確定預(yù)期的輸出結(jié)果和選擇自動對比的技術(shù)。測試執(zhí)行完一個腳本之后會生成相應(yīng)的輸出文件,需要與標(biāo)準(zhǔn)的預(yù)期結(jié)果進(jìn)行比較來判斷測試或軟件的正確性。測試結(jié)果分析模塊具有其軟件期望的輸出,并形成一個特定格式的輸出文件。對于城軌信號系統(tǒng)來說,設(shè)備量和數(shù)據(jù)量太大,測試人員書寫每一個腳本的預(yù)期結(jié)果時不能描述所有設(shè)備的狀態(tài)。使用對特定設(shè)備ID描述的原則,預(yù)期結(jié)果格式為設(shè)備ID對應(yīng)期望結(jié)果,測試人員只需要對其關(guān)注的一些設(shè)備進(jìn)行期望結(jié)果的描述,在生成腳本中預(yù)期結(jié)果部分時其他設(shè)備全部自動補(bǔ)充為默認(rèn)值。自動化測試執(zhí)行完一個腳本后會將所有的設(shè)備狀態(tài)轉(zhuǎn)換為一個輸出文件,該文件包含車載列車防護(hù)子系統(tǒng)的狀態(tài)等。每個子系統(tǒng)的ID與設(shè)備ID結(jié)合形成設(shè)備唯一ID,輸出設(shè)備ID和設(shè)備狀態(tài)的個數(shù)。結(jié)果分析模塊從實(shí)際輸出狀態(tài)文件中挑選出腳本中描述的本次測試所關(guān)注的設(shè)備對象,只判斷這些設(shè)備ID的狀態(tài)是否符合預(yù)期輸入[4]。對于腳本中所有填寫默認(rèn)值的設(shè)備,結(jié)果分析模塊都不會進(jìn)行分析比對。根據(jù)比對結(jié)果,如果有實(shí)際輸出結(jié)果與腳本中預(yù)期結(jié)果不符合的選項(xiàng),則本次執(zhí)行的腳本測試失敗。
通過設(shè)計(jì)用于城軌信號系統(tǒng)的自動化測試平臺,能夠根據(jù)需求實(shí)現(xiàn)腳本編寫、自動生成測試報告、全程管理測試缺陷等功能。目前該平臺仍存在一定的問題,未來將進(jìn)一步完善并優(yōu)化對腳本進(jìn)行模塊化的處理和對優(yōu)先級的處理,使系統(tǒng)的適用性更強(qiáng)。