張焜 熊坤鵬 朱程輝 劉錦峰
摘? 要:CBTC區(qū)域控制器(下文簡寫為ZC)子系統(tǒng)是地鐵信號系統(tǒng)重要的安全控制子系統(tǒng),其功能邏輯復雜,測試結果和數(shù)據(jù)具有強關聯(lián)性。為了提高ZC子系統(tǒng)的測試效率,對ZC子系統(tǒng)的測試框架和測試平臺進行了研究,結合ZC子系統(tǒng)的特點,提出并實現(xiàn)了測試結果自動化分析方法。上述測試方法不僅提高了測試效率,同時也提高了腳本的可復用性。
關鍵詞:區(qū)域控制器;自動化分析;測試效率;可復用性
中圖分類號:TP273 ? 文獻標識碼:A 文章編號:2096-4706(2021)18-0168-03
Abstract: As an important safety control subsystem of the subway signal system, the Zone Controller (ZC) subsystem is complex and the test results are strongly correlated with the data used. In order to improve the test efficiency, the test framework and the platform are researched. Combined with the characteristics of ZC subsystem, an automated analysis method of test results is proposed and realized. The test method not only improves the test efficiency, but also improves the reusability of the script.
Keywords: zone controller; automated analysis; test efficiency; reusability
0? 引? 言
ZC子系統(tǒng)是列車安全監(jiān)控和運營管理的核心軌旁控制設備。它的主要功能是根據(jù)列車發(fā)送的位置報文和軌道區(qū)段上次級檢測設備的占用出清狀態(tài)來實現(xiàn)列車的位置追蹤,結合當前ZC和相鄰ZC區(qū)域內的所有軌旁信號設備狀態(tài)為列車計算安全防護區(qū)域,并給列車發(fā)送移動授權,確保整個線路上的列車安全運行。ZC子系統(tǒng)的具有如下特點:功能龐大,邏輯復雜,計算量大,部分功能需要結合數(shù)據(jù)才能完全實現(xiàn),且ZC子系統(tǒng)是運行在2取2的安全平臺上的。在當前的確認測試階段,已經實現(xiàn)了測試執(zhí)行的自動化,測試人員編寫測試腳本后,測試用例即可自動運行,但是測試結果還是完全依賴于人工檢查,導致測試效率的提高遇到瓶頸,主要體現(xiàn)在:
(1)結果檢查需要經過多重分析,確認的難度大,耗時長。
(2)部分計算量較大的用例,人工計算經常出錯。
(3)測試結果和數(shù)據(jù)的強關聯(lián)性導致當數(shù)據(jù)修改或升級后,結果需要重新檢查確認。
(4)由于平臺升級或代碼優(yōu)化,需要經常做回歸測試?,F(xiàn)有的自動化測試方法對于ZC子系統(tǒng)適配性不高[1,2],而針對CBTC信號系統(tǒng)的自動化測試多用于測試執(zhí)行階段,很少涉及結果自動化分析[3-5]。
基于以上原因,結合ZC子系統(tǒng)的特點,在原有測試平臺基礎上,增加測試結果自動化分析功能和相關接口,創(chuàng)建了ZC子系統(tǒng)自動化測試公共函數(shù)庫及自動化分析腳本,進一步提高了測試質量和測試效率。
1? 自動化分析框架
自動化分析框架是在現(xiàn)有的自動化執(zhí)行測試平臺上,增加相應功能和接口實現(xiàn)測試結果的解析和測試數(shù)據(jù)的讀取,同時為測試人員提供自動化分析接口,測試人員可以在此基礎上根據(jù)需求和用例編寫自動化分析腳本,實現(xiàn)測試結果的自動化分析。在每個用例執(zhí)行完成后,直接離線執(zhí)行自動化分析腳本分析測試結果。自動化分析框架結構如圖1所示,包含三層處理:輸入解析處理,測試結果分析,以及分析結果輸出。
輸入處理功能包含數(shù)據(jù)解析模塊和記錄解析模塊,分別用于解析相應測試腳本中使用的測試數(shù)據(jù)和測試過程中產生的診斷數(shù)據(jù)。解析處理完成后,生成的數(shù)據(jù)結構可直接用于后續(xù)的測試結果分析模塊。
結果分析功能包含用于自動化分析的函數(shù)庫,測試分析模塊和測試分析驅動模塊。其中,自動化分析函數(shù)庫又包含了通用分析函數(shù)庫,可應用于所有子系統(tǒng),以及自定義函數(shù)庫,可應用于專用的子系統(tǒng)。測試分析模塊是測試人員根據(jù)用例或需求規(guī)則編寫的自動化分析腳本,最后可以返回預期結果。測試分析驅動模塊,用于聲明在當前測試分析腳本中使用的數(shù)據(jù)源,并進行預期結果和實際結果的比對,返回比對結果。
輸出功能包含了測試結果輸出模塊,測試人員可自定義輸出的內容和格式,保存結果后用于人工分析和測試報告生成。
2? 基于ZC子系統(tǒng)的自動化分析設計與實現(xiàn)
2.1? 輸入處理功能
對于ZC子系統(tǒng)來說,測試使用的數(shù)據(jù)為ZC數(shù)據(jù)準備工具使用的輸入數(shù)據(jù),后綴名為.par,可以簡化理解為一種特殊的文本數(shù)據(jù);測試的診斷數(shù)據(jù)包含兩類,一類是wireshark的抓包數(shù)據(jù),記錄測試過程中ZC子系統(tǒng)同其他子系統(tǒng)的所有通信數(shù)據(jù),另外一類是OMAP數(shù)據(jù),記錄測試過程中ZC子系統(tǒng)內部所有變量的變化。
數(shù)據(jù)解析模塊解析.par文件是根據(jù)數(shù)據(jù)中具有的特殊格式,識別部分行的特殊字符,最終生成可識別的數(shù)據(jù)結構。
測試記錄解析模塊解析wireshark文件是根據(jù)wireshark的Lua解析文件中的配置進行數(shù)據(jù)包的解析,同理,測試記錄解析模塊解析OMAP文件是根據(jù)OMAP配置文件中的配置進行數(shù)據(jù)包的解析,最終生成可識別的數(shù)據(jù)結構。特別的是,以上兩種測試記錄,在后續(xù)分析時是需要有一定對應關系的,因此,在解析過程中兩種數(shù)據(jù)結構都會增加對應本機的接收或發(fā)送時間。
所有經過解析的數(shù)據(jù)結構都和需求相對應,可以直接應用于后續(xù)的測試分析功能中。
2.2? 結果分析功能
作為自動化分析的核心邏輯,結果分析功能由平臺開發(fā)人員和測試人員共同設計和實現(xiàn)。
通用分析函數(shù)庫包含所有子系統(tǒng)常用的函數(shù),具有很強的通用性,功能包括:坐標的計算、對象外部ID與內部Index的相互轉換、對象比較等。
自定義函數(shù)庫是根據(jù)被測系統(tǒng)的特征設計的,基于ZC子系統(tǒng)的特征,制定了以下兩個原則設計應用于ZC子系統(tǒng)的函數(shù)庫。原則一,實現(xiàn)測試分析腳本和數(shù)據(jù)的弱關聯(lián),即當測試數(shù)據(jù)(線路)變更的時候,不需要修改測試分析腳本。原則二,ZC子系統(tǒng)的基礎常用功能函數(shù)。對于原則一,想要實現(xiàn)腳本和數(shù)據(jù)的弱關聯(lián),需要實現(xiàn)數(shù)據(jù)對象處理功能。對ZC子系統(tǒng)常用數(shù)據(jù)對象的處理,主要包含查找對象類型、查找對象參數(shù)、計算對象間關系等。對于原則二,ZC子系統(tǒng)最常用的基礎功能之一是每個周期都會給列車計算保護區(qū)域,此功能計算較復雜,且應用于其他大部分ZC子系統(tǒng)的功能中。另外,ZC子系統(tǒng)的突出特點是一個線路中會有多個ZC,每個ZC只負責自己相關線路的列車保護,在列車通過ZC邊界時,相鄰ZC之間會有通信和處理,可以使列車安全順暢通過。這部分功能的相關數(shù)據(jù)和內部處理都是比較復雜的,因此,會創(chuàng)建相關的函數(shù)庫。主要包含計算ZC邊界位置、計算虛擬邊界位置,相鄰通信ZC的周期匹配,相鄰ZC的線路信息計算等功能。另外,在編寫測試分析腳本的過程中,發(fā)現(xiàn)的常用功能函數(shù),也可以在后期加入進自定義函數(shù)庫中。
測試分析模塊包含兩部分,數(shù)據(jù)格式定義和自動化分析規(guī)則。數(shù)據(jù)格式定義時,測試人員根據(jù)相應腳本的功能需求以及用例中包含的所有檢查點來定義數(shù)據(jù)格式,方便后續(xù)的讀取和檢查。自動化分析規(guī)則是自動化測試腳本的主體部分,測試人員根據(jù)測試用例和需求使用python語言編寫測試代碼。其中,所有腳本都是以ZC子系統(tǒng)的內部周期k為基準,對于wireshark數(shù)據(jù),由于不包含ZC周期,則使用同一個時間的前后一段時間(T)的所有包(如OMAP數(shù)據(jù)時間為11:21:20,那么,wireshark數(shù)據(jù)就取11:21:20的前后1 s時間內的所有包)進行處理比對,T可以在腳本中自由調整,對于T的設置,需要考慮網絡延時,測試充分性和效率等因素。
測試分析驅動模塊包含兩部分:數(shù)據(jù)源聲明和分析結果比對。在數(shù)據(jù)源聲明中,測試人員需要首先聲明測試記錄的類型和存放路徑。對于OMAP記錄,還需要聲明要使用的頁名,對于wireshark記錄,還需要聲明通信數(shù)據(jù)包類型、IP地址、端口號、通信數(shù)據(jù)包名稱。在分析結果比對中,會進行實際結果和預期結果的比對。
2.3? 輸出功能
測試結果輸出模塊根據(jù)配置選項,可以輸出不同格式和內容的測試結果。輸出的格式主要包括表格格式和圖表格式。輸出內容包含以下所示幾個部分:
(1)所有本輪測試用例的狀態(tài)統(tǒng)計。
(2)每個用例步驟的狀態(tài)統(tǒng)計。
(3)測試不通過的用例步驟分析,包含測試不通過的周期、實際結果、預期結果等信息,方便后續(xù)問題的分析和解決。
(4)測試分析腳本的分支覆蓋率統(tǒng)計。如果分支覆蓋率沒有達到100%,就說明實際的測試場景和測試結果可能沒有完全滿足測試用例,沒有完全覆蓋測試需求,這也需要重新考慮調整測試執(zhí)行的腳本。
(5)本輪測試用例通過率。同時,如果需要比較多個版本的測試結果,也可以導入其他版本,進行多個測試結果的數(shù)據(jù)比對,方便進行代碼開發(fā)質量的分析。
所有的輸出內容可以根據(jù)需要自由選擇,同時,也可自定義增加其他相關測試數(shù)據(jù)。
3? 測試腳本優(yōu)先級分析
由于每輪測試時間有限,無法在一輪測試中完成所有測試腳本的編寫。為了最大限度地利用測試時間,提高測試腳本使用率,在ZC子系統(tǒng)階段規(guī)定了如下表1測試腳本編寫的優(yōu)先級,由1至5,優(yōu)先級由高至低。
根據(jù)以上優(yōu)先級列表,對于同時滿足多個優(yōu)先級的,以最高的優(yōu)先級為準。
4? 測試效率統(tǒng)計分析
測試分析自動化應用于測試中,有效地提升了測試效率。根據(jù)自動化腳本優(yōu)先級,在應用中首先編寫了最小回歸測試集的自動化腳本,針對最小回歸測試集的腳本使用率和測試天數(shù)的數(shù)據(jù)變化如下圖2所示。
由上圖可看出,當測試腳本使用率較低時,腳本使用率的提升對于測試效率的提升幫助比較有限,原因是腳本編寫也會損耗一定的時間,但是隨著測試腳本編寫的數(shù)量增多,腳本使用率提升到50%以上后,測試效率的提升非常明顯。
另外,也整合了連續(xù)3個版本的測試效率的比對圖,如圖3所示。
使用了測試腳本分析后,測試效率穩(wěn)步從4.5個每天提升到了7個每天。后續(xù),隨著測試腳本的充實,測試效率提升會更加明顯。
5? 結? 論
本文根據(jù)ZC子系統(tǒng)的特點和測試現(xiàn)狀,設計并實現(xiàn)了腳本的自動化分析,具有以下優(yōu)點:
(1)應用后的數(shù)據(jù)顯示,可以有效提高測試效率。
(2)替代了復雜計算結果的人力檢查,減少了返工和錯誤的發(fā)生。
(3)一般人力檢查結果的范圍很局限,最多幾個到十幾個周期,而自動化分析腳本可以覆蓋所有有效周期,對于結果的檢查更加充分。
(4)實現(xiàn)了測試數(shù)據(jù)獨立化,當測試數(shù)據(jù)有變化時,測試分析腳本不需要更新。
參考文獻:
[1] 楊豐玉,徐浩明,鄭巍,等.嵌入式軟件測試研究綜述 [J].航空計算技術,2021,51(1):112-115.
[2] 孫雷.軟件自動化測試的方法分析 [J].集成電路應用,2020,37(5):94-95.
[3] 郎紅霞,寧濱,黃友能.基于軟件易測試性的CBTC區(qū)域控制器系統(tǒng)設計 [J].鐵道通信信號,2007,43(12):8-10.
[4] 胡甜.CBTC信號系統(tǒng)自動化測試框架研究 [J].信息與電腦(理論版),2020,32(9):190-194.
[5] 楊永國.一種嵌入式信號處理軟件構件測試框架 [J].數(shù)字技術應用,2019,37(10):184-185.
作者簡介:張焜(1985—),女,漢族,山東海洋人,工程師,測試主管,碩士研究生,研究方向:軌道交通信號系統(tǒng)。