柯長博 盧 鑫(北京全路通信信號研究設(shè)計院有限公司,北京 100073)
CTCS列控系統(tǒng)是實現(xiàn)客運專線信號系統(tǒng)的關(guān)鍵技術(shù)裝備,各個列控設(shè)備運行的穩(wěn)定性、互聯(lián)互通性、容錯性等都需要經(jīng)過嚴(yán)格的測試。為了減少測試人員的工作強(qiáng)度,更好地利用資源和提高測試效率,在CTCS-3級半實物仿真平臺上,搭建一個能夠替代人工的自動測試環(huán)境是一個非常重要的課題。而設(shè)計一種能夠滿足CTCS半實物仿真測試平臺測試需求的測試腳本語言,是實現(xiàn)自動測試的基礎(chǔ)。
如果在自動測試中使用C++、Jav a等普通編程語言,將測試指令和測試邏輯直接嵌入測試代碼中,對于新的測試應(yīng)用,代碼完全不具備可重用性。人們普遍意識到不同的自動測試應(yīng)用之間存在著共通性和框架性的東西,通過重用和重組織已有的解決方案,可以快速實現(xiàn)新的測試應(yīng)用[1]。
因此,隨著測試技術(shù)的發(fā)展,人們在自動測試中越來越少地直接使用普通編程語言,而是設(shè)計出各種測試腳本語言。測試腳本語言可以對測試行為進(jìn)行描述,對測試過程進(jìn)行建模,有較強(qiáng)的可重用性、可維護(hù)性和可擴(kuò)展性。測試腳本語言執(zhí)行時以解釋為主,具有平臺無關(guān)的特點。典型的測試腳本語言有A TM L[2,3]、CTL[4]、TTCN-3[5,6]等,其中TTCN-3不僅能夠滿足一致性測試的需求,還可以應(yīng)用于互操作性測試、回歸測試、系統(tǒng)測試和集成測試。TTCN-3強(qiáng)大的測試描述能力和廣泛的適應(yīng)性使其成為目前測試領(lǐng)域唯一的國際標(biāo)準(zhǔn)。TTCN-3從語法上看起來像一個普通的程序設(shè)計語言加上測試擴(kuò)展,包括動態(tài)測試配置、匹配機(jī)制、定時器支持、測試判決處理、通信機(jī)制等。
雖然TTCN-3作為通用的測試語言功能比較全面,但是為其定制開發(fā)測試引擎就會比較復(fù)雜,造成功能上的冗余,也不便于擴(kuò)展開發(fā)新的功能。一般而言,商用化測試工具經(jīng)常采用可讀性較強(qiáng)、較為通用的腳本語言編寫測試腳本;專用測試工具因針對性較強(qiáng),一般會根據(jù)被測試軟件的特點自定義腳本的內(nèi)容和格式,自行解析。針對高速鐵路測試的應(yīng)用,龐巴迪、泰雷茲等公司都開發(fā)了專用的測試語言。事實上,本文中設(shè)計的測試腳本語
柯長博,男,碩士畢業(yè)于清華大學(xué),工程師。主要從事鐵路通信信號方面的工作。曾參與十一五國家支撐計劃及研究設(shè)計院若干重點項目,發(fā)表論文一篇(EI數(shù)據(jù)源),擁有發(fā)明專利一項(已授權(quán))。言只相當(dāng)于TTCN-3的部分功能。
現(xiàn)有的腳本語言技術(shù),包括TTCN-3在內(nèi)都集中在數(shù)據(jù)層次的分離,即分離測試數(shù)據(jù)和測試邏輯,并未對測試邏輯本身進(jìn)行建模和表達(dá)。為了解決現(xiàn)有腳本語言存在的抽象層次低和測試腳本維護(hù)困難的問題,測試模型成為當(dāng)前復(fù)雜系統(tǒng)測試領(lǐng)域的研究熱點,模型重用成了降低測試系統(tǒng)開發(fā)成本的系統(tǒng)化過程[7]。
基于測試過程模型,本文設(shè)計了一種適應(yīng)于CTCS半實物仿真系統(tǒng)的層次化測試腳本語言。測試腳本語言是自動測試環(huán)境運行的基礎(chǔ),定義了測試執(zhí)行的過程,包括測試數(shù)據(jù)、測試事件和測試事件的執(zhí)行邏輯,銜接了自動測試環(huán)境的各個模塊。
一個測試事件e是一個八元組(SUT,T,I,O,Cp,Cs,Lp,Ls),其中SUT是被測系統(tǒng)的測試信息集合,T是一個用來定義測試事件運行時行為的前置邏輯表達(dá)式,I是被測系統(tǒng)的輸入集合,O是被測系統(tǒng)的輸出集合,Cp是e的前提條件集合,Cs是e的后置條件集合,Lp是e的前繼連接集合,Ls是e的后繼連接集合[7]。
測試事件可以被分為3類:測試初始和結(jié)束事件、測試連接和測試動作。其中,測試初始和結(jié)束事件用于標(biāo)識一個測試事件鏈,可以用于通知測試程序創(chuàng)建或者銷毀一個測試實例;測試連接是一個抽象的概念,用于表示測試過程中的控制流程;測試動作指測試腳本的一次執(zhí)行操作,也就是指測試引擎對于被測系統(tǒng)的一次輸入,使被測系統(tǒng)產(chǎn)生一次狀態(tài)轉(zhuǎn)移。由這3類事件連接成了測試事件鏈,如圖1所示。
一個測試過程是一個五元組(Q,E,L,V,t),其中Q是測試過程開始和結(jié)束標(biāo)簽,E是測試動作集合,L是測試連接集合,V是環(huán)境變量集合,t是一個可選參數(shù),表示測試動作的時間屬性。
通過將測試過程在事件層次和控制流層次上進(jìn)行抽象,得到了測試過程模型。測試過程模型的核心思想是:通過分析測試需求,測試執(zhí)行過程中的所有行為都可以用測試事件模型表示,每個測試事件都有前提條件和后置條件,通過前提條件和后置條件將測試事件串起來,就將測試過程抽象成了測試事件鏈。
本章將介紹自定義的測試腳本語言的設(shè)計與實現(xiàn)。
可擴(kuò)展標(biāo)記語言(Ex tensib le M arkup Langu age,XM L)是W 3C組織于1998年發(fā)布的標(biāo)準(zhǔn)。與H TM L語言一樣,都是標(biāo)準(zhǔn)通用標(biāo)記語言。XM L的優(yōu)點,包括簡單性、平臺無關(guān)性、易解析性、自描述性。此外,XM L在得到普遍認(rèn)可的同時,獲得越來越多的軟件支持。
本文設(shè)計的測試過程定義語言(TPDL)和測試信息描述語言(SID L)就是基于XM L語言編寫的,語言元素的標(biāo)準(zhǔn)語法由Sch em a定義。采用XM L Schema還能夠?qū)ξ臋n結(jié)構(gòu)進(jìn)行有效性檢查,檢查的項目包括:元素的定義、元素是否為空、是否包括文本或?qū)傩缘亩x、元素之間的父子關(guān)系、子元素的順序和數(shù)目、元素和屬性的數(shù)據(jù)類型。
本文設(shè)計的測試腳本語言包括TPDL和SIDL。TPDL作為測試過程的建模語言,是對測試過程的全面描述;SIDL作為被測對象的測試信息描述語言,是對被測對象的測試相關(guān)信息的全面描述。被測系統(tǒng)為測試過程提供了實現(xiàn)消息的發(fā)布,接收等功能的底層機(jī)制。
具體來說,TPDL用于編寫測試腳本,它將自然語言描述的測試案例抽象為計算機(jī)能識別的形式化描述,由測試引擎編譯執(zhí)行;SIDL用于編寫配置文件,它將被測系統(tǒng)中測試相關(guān)的消息、映射、端口、操作等信息進(jìn)行形式化的描述。在測試腳本的生成和執(zhí)行過程中,都會用到配置文件,比如測試腳本中可以使用的消息,這些消息的具體字段,下發(fā)到被測系統(tǒng)的哪個端口等。TPDL和SIDL的結(jié)構(gòu)和相互關(guān)系,如圖2所示。
TPDL關(guān)注于相對獨立的測試過程和過程規(guī)則,以及多個測試事件的組織和協(xié)調(diào),從而在整體上形成并發(fā)執(zhí)行的測試過程。TPDL的語法定義,如圖3所示,具體描述如表1所示。
SIDL描述了被測系統(tǒng)的各種信息,被測對象以SIDL標(biāo)準(zhǔn)的描述方式為測試系統(tǒng)提供測試信息,同時測試樁模塊也以SIDL為測試系統(tǒng)提供控制接口。SIDL編寫的配置文件是自動測試環(huán)境與被測對象的橋梁。
采取以設(shè)備為單位組織仿真支撐環(huán)境的功能接口,將屬于同一設(shè)備的所有操作,實現(xiàn)為一個描述文件。以設(shè)備為單位,描述對象相對固定,描述方式更簡潔,更統(tǒng)一。對于某個設(shè)備的某一種功能只出現(xiàn)在描述文件的一處,便于文件的編寫和維護(hù),體現(xiàn)了面向?qū)ο蟮幕舅枷搿?/p>
基于系統(tǒng)規(guī)模和仿真對象數(shù)量的考慮,為系統(tǒng)中每一個對象建立一組描述文件是不現(xiàn)實的,因此測試接口描述只覆蓋到設(shè)備一級,而不是仿真對象一級。如果同一種設(shè)備不管在系統(tǒng)中存在幾個實現(xiàn)的仿真對象,都只維護(hù)一個測試接口描述文件。在測試中,對具體仿真對象的指定,由測試工程師在編制測試腳本時進(jìn)行。SIDL的語法定義,如圖4所示,具體描述如表2所示。
表1 TPDL語法的具體描述
表2 SIDL語法的具體描述
在測試準(zhǔn)備階段,根據(jù)SIDL規(guī)范對被測系統(tǒng)信息進(jìn)行描述,為每個設(shè)備生成配置文件,建立起測試動作庫、接收消息庫、測試接口庫和消息映射庫等自動測試環(huán)境運行時需要的所有基礎(chǔ)信息。
在測試腳本的生成階段,腳本編輯器讀取測試動作庫和接收消息庫,將被測系統(tǒng)支持的所有接收和發(fā)送的消息和消息字段匯總。腳本編輯器將基本活動和邏輯活動提供給測試人員,編寫業(yè)務(wù)邏輯、配置測試數(shù)據(jù),生成TPDL規(guī)范定義的XM L格式的測試腳本。最后,可以為測試腳本中的測試動作添加前提條件和后置條件。
在測試腳本的執(zhí)行階段,由測試管理器根據(jù)消息接口庫為測試腳本中的消息添加目的地址,然后將測試腳本發(fā)送給測試引擎,并監(jiān)控執(zhí)行過程。測試引擎將測試腳本解析成測試事件鏈,根據(jù)消息映射庫將測試腳本中定義的測試動作映射到被測系統(tǒng)中真正能夠執(zhí)行的消息類,并將前提條件和后置條件發(fā)送給綜合測評系統(tǒng)進(jìn)行測試評價。
本文提出了一種用于CTCS半實物仿真系統(tǒng)的測試腳本語言?;跍y試過程模型,本測試腳本語言既實現(xiàn)了測試數(shù)據(jù)和測試邏輯的分離,也實現(xiàn)了對測試邏輯本身進(jìn)行建模和表達(dá)。測試交互消息和被測系統(tǒng)信息都通過配置文件描述,有效地填補(bǔ)了測試需求與測試編碼之間的空白。使得自動測試環(huán)境的開發(fā),能夠幾乎只關(guān)注于測試框架的搭建和測試腳本的解析,極大地提高了可維護(hù)性和可擴(kuò)展性。本測試腳本語言基于XM L語言編寫,兼具平臺無關(guān)性、易解析性等優(yōu)點。
應(yīng)用表明,本測試腳本語言能夠銜接自動測試環(huán)境的各個模塊,滿足了CTCS半實物仿真系統(tǒng)的自動測試需求,也展示了在其他工程中巨大的應(yīng)用潛力。
[1] XU Xiaoliang,WANG Leyu,ZHOU Hong. An Object-Oriented Framework for Automatic Test Systems[C]. AUTOTESTCON 2003. IEEE Systems Readiness Technology Conference. Proceedings,2003:407-410.
[2] Seavey M,Einspanjer T. “ATML: WHAT “IT” IS, WHAT “IT” IS NOT, AND AN EXAMPLE OF HOW “IT” CAN BE APPLIED”[C].Autotestcon,2005. IEEE,2005:137-143.
[3] Jain A,Delgado S. “Implementing ATML into the Automatic Test System Development and Execution Workflow”[C]. IEEE AUTOTESTCON 2008 Salt Lake City, UT,2008:8-11.
[4] Kapur R,Lousberg M,Taylor T, “CTL the language for describing core-based”[C]. Proceedings of the 2001 IEEE International Test Conference, IEEE Computer Society Washington, DC, USA,2001:131-139.
[5] Grabowski J,Hogrefe D,Réthy G,et al. “An introduction to the testing and test control notation (TTCN-3)”[J]. Computer Networks,2003,42:375-403.
[6] JIANG Fan, JI Xiangdong, ZENG Fanping. Design and Implementation of TTCN-3 Test System[J]. Computer Engineering, China,2005,31:80-81.
[7] Shuai Wang, Yindong Ji, Shiyuan Yang. “A Novel Test Process Modeling Method for Automatic Test”[C]. Computer Science and Information Technology, 2009. ICCSIT 2009. 2nd IEEE International Conference on,2009:459-463.