叢向超
(北京全路通信信號研究設(shè)計院集團有限公司,北京 100073)
TSRS集成自動化測試腳本自動化編制技術(shù)研究
叢向超
(北京全路通信信號研究設(shè)計院集團有限公司,北京 100073)
基于數(shù)據(jù)驅(qū)動的自動化測試中,測試數(shù)據(jù)腳本生成的是否科學(xué)、正確,覆蓋所有的測試場景是決定此次自動化測試是否達到預(yù)期結(jié)果的關(guān)鍵。主要介紹一種應(yīng)用于TSRS集成自動化測試平臺上的數(shù)據(jù)腳本編制方法。
自動化測試;數(shù)據(jù)驅(qū)動;數(shù)據(jù)編制
臨時限速服務(wù)器(TSRS)是高速鐵路列車運行控制系統(tǒng)的重要組成部分[1]。研究基于數(shù)據(jù)驅(qū)動的TSRS自動化測試系統(tǒng)在集成測試中具有非常重大的意義。
基于數(shù)據(jù)驅(qū)動的自動化測試是一種從數(shù)據(jù)文件中讀取輸入測試數(shù)據(jù),并且以數(shù)據(jù)來控制自動化測試腳本執(zhí)行流程和動作的測試[2]。在這個測試框架中,輸入測試數(shù)據(jù)是獨立于測試腳本程序開發(fā)的。數(shù)據(jù)驅(qū)動只要非常少的代碼,就能覆蓋大量的測試用例。因此在基于數(shù)據(jù)驅(qū)動的自動化測試中,測試數(shù)據(jù)生成的是否科學(xué)、正確,覆蓋所有的測試場景是決定此次集成自動化測試是否達到預(yù)期結(jié)果的關(guān)鍵。為此本文主要介紹一種運行在TSRS自動化測試平臺上的測試序列數(shù)據(jù)生成方法。
集成自動化測試框架由3個部分組成,分別由數(shù)據(jù)腳本編制子系統(tǒng)、自動化測試子系統(tǒng)、仿真測試子系統(tǒng)組成。
1)數(shù)據(jù)腳本編制子系統(tǒng):負責(zé)將工程數(shù)據(jù)源表轉(zhuǎn)換成應(yīng)用于集成自動化測試中的腳本數(shù)據(jù),也就是本文的主要研究對象。
2)自動化測試子系統(tǒng):啟動腳本執(zhí)行引擎,以數(shù)據(jù)腳本為驅(qū)動,執(zhí)行邏輯腳本,完成相應(yīng)測試案例的執(zhí)行。
3)仿真測試子系統(tǒng):各個仿真子系統(tǒng)完成接口仿真功能,模擬真實設(shè)備和TSRS的交互。
各個子系統(tǒng)之間的交互關(guān)系如圖1所示。

圖1 軟件模塊關(guān)系圖
TSRS自動化測試通過由計算機技術(shù)開發(fā)的自動化測試工具自動生成測試序列,通過仿真設(shè)備自動向TSRS發(fā)送限速命令,然后收集相應(yīng)的反饋信息,與測試序列中的期望結(jié)果進行比對,自動得出并記錄測試結(jié)果,測試流程如圖2所示。

圖2 測試流程示意圖
在自動化測試過程中,測試數(shù)據(jù)的正確生成至關(guān)重要。通過測試工具自動生成測試數(shù)據(jù)腳本,通過仿真設(shè)備自動向TSRS發(fā)送限速命令,然后收集反饋信息,與測試序列中的期望結(jié)果進行對比,自動得出并且記錄測試結(jié)構(gòu)。測試序列決定著此次測試的覆蓋面,正確的預(yù)期結(jié)果則是此次自動測試能夠正常進行的前提條件。接下來則主要介紹測試序列和預(yù)期結(jié)構(gòu)的生成方法。
3.1 數(shù)據(jù)生成方法
基于數(shù)據(jù)驅(qū)動的自動化測試思想,結(jié)合TSRS系統(tǒng)測試的特點,提出一種測試用例和測試數(shù)據(jù)相互獨立的測試框架。測試用例順序地描述測試過程。測試數(shù)據(jù)描述限速信息和期望結(jié)果。獨立開發(fā)的仿真測試服務(wù)器進行測試調(diào)度。
使用簡單的輸入文件,測試數(shù)據(jù)有很高的維護性,測試數(shù)據(jù)采用原始的工程數(shù)據(jù)源表為測試的數(shù)據(jù)輸入,通過相應(yīng)的數(shù)據(jù)導(dǎo)入工具,轉(zhuǎn)換為測試數(shù)據(jù)庫數(shù)據(jù)具體過程,如圖3所示。

圖3 數(shù)據(jù)腳本自動生成流程
根據(jù)不同的測試場景,生成測試的臨時限速信息(TSR),存放在數(shù)據(jù)腳本中,根據(jù)生成的TSR信息計算預(yù)期結(jié)果并且和實際的結(jié)果進行對比。
生成的測試序列,采用python格式進行存儲。定義基本的數(shù)據(jù)結(jié)構(gòu)信息TSRInfo:
class TSRInfo:
def __init__(self):
self.TSRDesc =""
self.Rule =""
self.Is_execable =False
self.TSROwner_TCCCollections = []
self.TSROwner_RBCCollections = []
self.TSROwner_CTCCollections = []
self.TSROwner_AdjaTSRSCollections = []
self.TSROwner_CvTCCCollections = []
臨時限速關(guān)聯(lián)設(shè)備TSROwner結(jié)構(gòu)如下所示:
class TSROwner:
def __init__(self):
self.devname =""
self.begin_cover_flag=0
self.end_cover_flag=0
以上描述了生成的臨時限速信息以及該臨時限速關(guān)聯(lián)的設(shè)備以及覆蓋標志等信息,接下來重點分析測試的場景以及在不同場景下數(shù)據(jù)的生成方法。
3.2 測試場景分析及測試數(shù)據(jù)生成規(guī)則
3.2.1 TCC側(cè)線限速數(shù)據(jù)生成
為了測試TSRS對于當(dāng)前管轄的所有車站側(cè)線限速處理的正確性,需要生成側(cè)線限速的臨時限速序列。
在生成側(cè)線限速的測試序列時,主要是針對不同車站的不同側(cè)線區(qū)域,生成測試命令,并且預(yù)期該測試命令的接受設(shè)備和接收到的指令信息如圖4所示。
3.2.2 TCC/RBC臨時限速管轄范圍自動化測試序列數(shù)據(jù)生成
在進行測試的過程中,邊界點是最容易出現(xiàn)問題的地方,并且占據(jù)測試人員80%的測試時間。在進行TCC、RBC管轄邊界測試時,定義了如下的取點原則。
如某TCC或RBC管轄范圍為[min,max],min為管轄范圍的最小值,max為管轄范圍的最大值,利用邊界值分析,取得如下限速,分別為起點跨邊界(min-X,min+X),起點邊界外(min-X,min),起點邊界內(nèi)(min,min+X),終點跨邊界(max-x,max+x),終點邊界外(max,max+x)終點邊界內(nèi)(max-x,max),測試限速完全覆蓋和完全不在和部分覆蓋該TCC/RBC管轄范圍內(nèi)時的情況,如圖5所示。

圖4 側(cè)線限速選點示意圖

圖5 TCC/RBC臨時限速管轄范圍臨時限速測試示意圖
3.2.3 TSRS管轄范圍自動化測試序列數(shù)據(jù)生成
以TCC和RBC邊界點的最大值作為TSRS管轄范圍的邊界值,如圖6所示。選取原則同3.2.2。目前,自動化測試平臺僅針對調(diào)度臺管界和TSRS管界相同情況下進行測試。

圖6 TSRS管轄范圍測試示意圖
3.2.4 CTC管轄范圍自動化測試序列數(shù)據(jù)生成
如圖7所示,如某CTC管轄范圍為[min,max],min為管轄范圍的最小值,max為管轄范圍的最大值,利用邊界值分析,取得如下限速,假設(shè)CTC管轄范圍起終點為(min,max),X為用戶可選長度,選取臨時限速范圍為:跨CTC管轄范圍起點(min-X,max),跨CTC管轄范圍終點(min,max+X),以及覆蓋CTC管轄范圍(min,max),以測試調(diào)度臺處理TSRS處理管轄范圍內(nèi)和跨管轄范圍起點或是終點時,對于數(shù)據(jù)的處理情況。

圖7 調(diào)度臺管轄范圍選點測試示意圖
3.2.5 長鏈點和短鏈點自動化數(shù)據(jù)序列生成
如圖8所示,限速設(shè)置規(guī)則進行長短鏈點的測試。假設(shè)某長短鏈的起終點為(min,max),限速長度為X長短鏈長度為CL。分別取點起點外到起點(min-X,min),起點外到起點內(nèi)(min-X+1,min+1),起點外到終點(min-1,max),終點到終點外(max,max+X),終點內(nèi)到終點外(max-1,max+X-1),起點到終點外(min,max+1),起點到終點(min,max),起點到起點內(nèi)(min,min+ X),終點內(nèi)到終點(max-X,max),長短鏈內(nèi)(min+1,max-1)。以測試TSRS對于長短鏈邊界點的執(zhí)行情況。

圖8 長鏈點選點示意圖
3.2.6 里程標系轉(zhuǎn)換點自動化測試數(shù)據(jù)序列生成
如圖9所示,A系轉(zhuǎn)換點和B系轉(zhuǎn)換點實際為同一個點,為防止A點或是B點配置錯誤,導(dǎo)致A 和B點不為同一個點,生成如下4個限速。假設(shè)A點里程標系為mileA,B點里程標系為mileB,X為可選參數(shù),限速一為轉(zhuǎn)換點外到轉(zhuǎn)換點內(nèi)(mileA-X,mileA+X),其中mileA+X為與A點的里程標系相同而虛擬的坐標值,該限速執(zhí)行結(jié)果應(yīng)為失敗。限速二為坐標轉(zhuǎn)換點外到坐標轉(zhuǎn)換點(mileA-X,mileA)。限速三為轉(zhuǎn)換點內(nèi)到轉(zhuǎn)換點外(mileB-X,mileB+X), 其中mileB-X為與B系坐標系相同而虛擬的坐標值,限速四為坐標轉(zhuǎn)換點到坐標轉(zhuǎn)換點外(mileB,mileB+X)。

圖9 里程標系轉(zhuǎn)換點取點原則
3.3 測試數(shù)據(jù)生成算法流程
3.3.1 測試數(shù)據(jù)生成總體步驟
測試數(shù)據(jù)生成步驟如圖10所示,首先能夠根據(jù)上面的選點規(guī)則,正確的生成相應(yīng)臨時限速命令;其次能夠正確計算該命令的預(yù)期結(jié)果,包括接收到的預(yù)期設(shè)備以及預(yù)期設(shè)備接收到的命令信息。
3.3.2 原始數(shù)據(jù)預(yù)處理
完成上面步驟中的生成臨時限速信息和計算預(yù)期設(shè)備兩大功能,直接采用工程數(shù)據(jù)表中的原始數(shù)據(jù)很難完成,這就需要對導(dǎo)入到數(shù)據(jù)庫的工程數(shù)據(jù)源表信息進行預(yù)處理。
如圖11所示,橢圓部分表示一個設(shè)備的管轄范圍,其中CD為長鏈范圍,E點為里程標系轉(zhuǎn)換點。由于在普通點和長鏈點以及里程標系轉(zhuǎn)換點中,不能直接進行里程值的轉(zhuǎn)換,于是將整個管轄范圍進行處理,分成幾個管轄范圍的結(jié)合,(A,C)、(C,D)、(D,E)。數(shù)據(jù)預(yù)處理流程如圖12所示。

圖1O 測試數(shù)據(jù)生成步驟

圖11 管轄范圍內(nèi)特殊點示意圖

圖12 管轄范圍內(nèi)特殊點示意圖
對每個設(shè)備的管轄范圍根據(jù)長短鏈、坐標系轉(zhuǎn)換點進行分段是實現(xiàn)整個數(shù)據(jù)預(yù)處理的關(guān)鍵,其流程如圖13所示。
3.3.3 計算預(yù)期設(shè)備
根據(jù)不同的場景生成測試規(guī)則后,需要預(yù)期某條限速接受到的設(shè)備和接受到臨時限速信息,在前面進行數(shù)據(jù)預(yù)處理的工作下,只需要按照不同設(shè)備的不同管轄范圍分段進行順序查找即可,假設(shè)生成的臨時限速信息為(Point1,Point2),判斷起點和終點是否在某個設(shè)備的管轄范圍之內(nèi),針對TCC或是RBC時,需進行覆蓋標志判斷。填充2.1節(jié)中的TSROwner對象如圖14所示。

圖13 管轄范圍分段計算流程

圖14 計算預(yù)期設(shè)備
結(jié)合軟件自動化測試理論,提出基于數(shù)據(jù)驅(qū)動測試框架的TSRS自動化測試平臺自動測試序列生成方法,實現(xiàn)了測試邏輯和測試數(shù)據(jù)的分離。實驗結(jié)果表明,采用本文介紹的數(shù)據(jù)生成方法,結(jié)合自動化測試平臺,覆蓋了大部分的TSRS測試,提高了測試效率,具有廣闊的應(yīng)用前景。
[1]郭偉,開祥寶,李士祥,等.臨時限速服務(wù)器自動測試平臺的研究與實現(xiàn)[J].鐵路計算機應(yīng)用,2012(10):26-29.
[2]石坤,穆建成,葉峰.基于數(shù)據(jù)驅(qū)動的列控中心報文自動化測試研究[J].鐵路計算機應(yīng)用,2011(8):47-49.
In the automatic test based on data-driven, the expected testing result is determined by generating a scientifi c and accurate test data script and covering all test scenarios. So the paper introduces a method of generating an accurate data script applied in the TSRS integrated automation testing platform.
automation testing; data-driven; data compilation
10.3969/j.issn.1673-4440.2015.06.007
2015-07-13)
北京全路通信信號研究設(shè)計院集團有限公司科研重點項目(2300-K1150003-7-ZYY)