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