專利名稱::測試描述語言的實現(xiàn)方法及其裝置的制作方法
技術領域:
:本發(fā)明涉及系統(tǒng)測試技術,特別涉及測試描述語言的實現(xiàn)方法和裝置。
背景技術:
:系統(tǒng)測試在電子、通信及控制系統(tǒng)的設計及維護過程中都是必不可少的也是非常關鍵的。為了方便系統(tǒng)測試,業(yè)界統(tǒng)一使用測試描述語言來描述測試操作過程。由于系統(tǒng)應用層的越來越復雜,人們開始非常重視測試,進而公司迫切需要有效的自動化的測試方法,這種市場需求導致了測試描述語言的產(chǎn)生。特別是隨著業(yè)界有越來越多的復雜的且動態(tài)的系統(tǒng)出現(xiàn),所以迫切需要一種有效的、靈活的測試方法及其相關測試描述語言。測試及測試控制記法(TestingandTestControlNotation,簡稱“TTCN”)標準就是在這樣的背景下發(fā)展起來的。TTCN是一種抽象語言,使測試系統(tǒng)獨立。這意味著用TTCN為某個應用設計的測試套(suite)可以應用于任何測試環(huán)境。比如電信、自動化、航空宇航以及國防工業(yè)的系統(tǒng)和集成測試。TTCN具有嚴格的語法規(guī)則和完整的操作語義,提供了很多測試專用的語法特性,用TTCN描述的測試套具有高度抽象性,獨立于實際的被測系統(tǒng)。測試及測試控制記法版本3(TestingandTestControlNotation,簡稱“TTCN-3”)是TTCN的最新版本,由歐洲電信標準部(EuropeanTelecommunicationStandardsInstitute,簡稱“ETSI”)設計開發(fā),并且被國際電信聯(lián)盟-電信標準部(InternationalTelecommunicationUnionTelecommunicationStandardizationSector,簡稱“ITU-T”)推薦。TTCN-3可以用做多種通信端口上的各種響應系統(tǒng)測試的描述語言。TTCN-3與行業(yè)內(nèi)許多新的
技術領域:
,如網(wǎng)際協(xié)議(InternetProtocol,簡稱“IP”)相關技術的測試等關系密切。在過去的兩年中,隨著支持該語言的有力工具的開發(fā),TTCN-3的用戶數(shù)量取得了快速的增長。TTCN-3成為ETSI成員內(nèi)部開發(fā)程序的首選測試語言。TTCN-3是一種多目標的(multi-purpose)測試語言,并且是對成熟的、工業(yè)驅動的測試語言TTCN的加強。TTCN-3作為一種嚴格的、標準的測試語言帶來很多好處,多年來在電信市場很受歡迎。TTCN-3的語法和通常的編程語言沒有什么區(qū)別,并且包括同步、異步通訊機制,動態(tài)并行測試配置。典型的應用領域是協(xié)議測試(包括移動協(xié)議和互連網(wǎng)協(xié)議)、服務測試(包括增補服務)、模塊測試、基于平臺、應用程序接口(ApplicationProgrammingInterface,簡稱“API”)和公共對象請求代理體系結構(CommonObjectRequestBrokerArchitecture)測試?;赥TCN-3的測試過程一般可分為三個階段首先,按照TTCN-3語言定義的規(guī)則描述抽象測試套(AbstractTestSuite),然后將抽象測試套轉換成可執(zhí)行測試套(ExecutableTestSuite),最后在特定的執(zhí)行系統(tǒng)上運行可執(zhí)行測試套,可執(zhí)行測試套按測試序列的要求與被測系統(tǒng)通信,接收反饋,生成測試判決。如前所述,現(xiàn)有的技術方案都是按照三個步驟進行的,即將TTCN-3語言描述的抽象測試套先轉換為可執(zhí)行測試套,可執(zhí)行測試套的表示方式依賴于測試系統(tǒng)的實現(xiàn),目前的TTCN-3商用工具一般是把TTCN-3抽象測試套轉換為一組高級程序設計語言,比如C或C++的源文件,其中還需要用戶編寫必要的擴展代碼,實現(xiàn)測試功能。然后利用現(xiàn)有的編譯器編譯這些源文件和用戶編寫的擴展代碼并與工具提供的庫文件鏈接,得到一個可執(zhí)行文件,在特定的操作系統(tǒng)下運行這個可執(zhí)行文件就相當于執(zhí)行用戶在抽象測試套中所編寫的測試序列。圖1示出了現(xiàn)有技術方案實現(xiàn)測試描述語言的流程??梢钥闯觯F(xiàn)有技術中從TTCN-3的抽象測試套到C/C++代碼再到可執(zhí)行測試套需要兩次編譯轉換過程;為了實現(xiàn)C/C++語言代碼的編譯,對平臺系統(tǒng)及鏈接庫有一定要求;同時代碼編寫對測試用戶也提出了要求。另外TTCN-3具有很多專用于描述協(xié)議測試的語法結構和操作語義,C/C++等程序設計語言不能完全一一映射TTCN-3格式的抽象測試套,TTCN-3語言的一些高級特性無法直接實現(xiàn),用戶需要根據(jù)被測系統(tǒng)的實現(xiàn)自己編寫部分測試實現(xiàn)代碼。使得抽象測試套到C/C++代碼的程序結構不是完全對應,無法進行測試語言級別的調試。在實際應用中,上述方案存在以下問題測試套開發(fā)效率低,測試效率低;對平臺和執(zhí)行系統(tǒng)依賴性強;用戶開發(fā)過程復雜,使用困難;無法實現(xiàn)對測試描述語言級別的調試功能。造成這種情況的主要原因在于,從TTCN-3的抽象測試套轉換到高級語言代碼后,還要經(jīng)過編譯、鏈接后才能得到可執(zhí)行文件,過程復雜,導致測試套的開發(fā)效率很低;高級語言代碼的開發(fā)對語言編譯器及平臺和鏈接庫具有依賴性;TTCN-3語言到高級語言不能完全對應,不僅要求用戶自己編寫部分代碼,測試用戶使用起來困難,而且生成的可執(zhí)行文件只能在高級語言級別進行調試,不能直接對TTCN-3語句進行調試,問題定位困難,嚴重影響開發(fā)效率。
發(fā)明內(nèi)容有鑒于此,本發(fā)明的主要目的在于提供一種測試描述語言的實現(xiàn)方法及其裝置,使得測試描述語言能夠高效實現(xiàn),與平臺無關,測試用戶使用方便,測試開發(fā)效率高。為實現(xiàn)上述目的,本發(fā)明提供了一種測試描述語言的實現(xiàn)方法,包含以下步驟,A.轉換器將所述測試描述語言描述的抽象測試套轉換成可解釋測試套;B.在虛擬機上加載所述可解釋測試套;C.所述虛擬機解釋執(zhí)行所述可解釋測試套;其中所述可解釋測試套能被所述虛擬機識別并直接解釋執(zhí)行,所述虛擬機基于計算機平臺解釋執(zhí)行實現(xiàn)所述測試描述語言。其中,還包含以下步驟,D.用戶通過所述虛擬機調試所述可解釋測試套。此外,所述步驟A包含以下子步驟,A1所述轉換器建立所述可解釋測試套的文件標志,用于標志該可解釋測試套,從而被所述虛擬機識別;A2所述轉換器建立所述可解釋測試套的文件頭,用于描述該可解釋測試套的文件相關信息;A3所述轉換器建立所述可解釋測試套的定義段頭部和定義段,所述定義段用于描述所述抽象測試套的數(shù)據(jù)定義,所述定義段頭部用于描述所述定義段的相關信息;A4所述轉換器建立所述可解釋測試套的控制段頭部和控制段,所述控制段用于描述所述抽象測試套的操作定義,所述控制段頭部用于描述所述控制段的相關信息;A5當用戶需要調試時,所述轉換器建立所述可解釋測試套的調試段頭部和調試段,所述調試段用于描述調試信息,所述調試段頭部用于描述所述調試段的相關信息。此外,所述步驟B包含以下子步驟,B1所述虛擬機根據(jù)所述定義段建立內(nèi)存映像,用于存儲數(shù)據(jù),在解釋時進行操作;B2所述虛擬機根據(jù)所述控制段建立內(nèi)存映像,用于存儲操作代碼,在解釋時調用運行;B3所述虛擬機根據(jù)所述調試段在相應操作代碼標記斷點,用于完成調試。此外,所述步驟C包含以下子步驟,C1所述虛擬機的執(zhí)行模塊尋址當前操作指令、尋址操作相關數(shù)據(jù),調用系統(tǒng)應用程序接口,完成操作;C2所述虛擬機的堆棧模塊管理、分配、回收內(nèi)存;C3所述虛擬機的組件調度模塊建立測試所需功能實體,根據(jù)操作指令調度執(zhí)行所述功能實體,仿真實現(xiàn)測試功能;C4所述虛擬機的測試事件管理模塊檢測、處理所述虛擬機與被測系統(tǒng)之間的交互事件。此外,所述步驟D包含以下子步驟,D1所述虛擬機的調試模塊識別所述斷點并跳轉;D2所述調試模塊解釋執(zhí)行用戶輸入的調試指令;D3所述調試模塊向用戶輸出觀察信息。此外,所述步驟C3進一步包含以下子步驟,所述組件調度模塊創(chuàng)建維護所述功能實體隊列;所述組件調度模塊配合所述執(zhí)行模塊調度執(zhí)行所述功能實體的操作指令。此外,所述步驟C4進一步包含以下子步驟,執(zhí)行所述操作指令或檢測所述被測系統(tǒng)的交互信息,引發(fā)所述測試事件;所述測試事件管理模塊配合所述執(zhí)行模塊處理所述測試事件。此外,所述測試描述語言為測試與測試控制記法版本3。本發(fā)明還提供了一種測試描述語言的實現(xiàn)裝置,包含轉換器、虛擬機和可解釋測試套,所述轉換器用于將所述測試描述語言描述的抽象測試套轉換成可解釋測試套;所述可解釋測試套用于描述所述抽象測試套的數(shù)據(jù)、操作信息;所述虛擬機用于解釋執(zhí)行所述可解釋測試套。其中,所述可解釋測試套包含以下部分,文件標志,用于標記文件為所述可解釋測試套;文件頭,用于描述所述可解釋測試套的文件相關信息;定義段,用于描述數(shù)據(jù)定義信息;定義段頭部,用于描述所述定義段相關信息;控制段,用于描述操作代碼信息;控制段頭部,用于描述所述控制段相關信息;當用戶需要調試時,還包含,調試段,用于描述用戶調試信息;調試段頭部,用于描述所述調試段相關信息。此外,所述虛擬機含以下部分,執(zhí)行模塊,用于尋址當前操作指令、尋址操作相關數(shù)據(jù),并調用系統(tǒng)應用程序接口完成操作;堆棧模塊,用于管理、分配、回收內(nèi)存;組件調度模塊,用于建立測試所需功能實體,并根據(jù)操作指令調度執(zhí)行所述功能實體,仿真實現(xiàn)測試功能;測試事件管理模塊,用于檢測、處理所述虛擬機與被測系統(tǒng)之間的交互事件。此外,所述虛擬機還包含調試模塊,用于識別和實現(xiàn)調試斷點并跳轉,解釋執(zhí)行用戶輸入的調試指令并輸出觀察信息。通過比較可以發(fā)現(xiàn),本發(fā)明的技術方案與現(xiàn)有技術的主要區(qū)別在于,通過抽象測試套到可解釋測試套的自動轉換并在虛擬機上解釋運行的方法,高效實現(xiàn)測試描述語言的抽象測試套;在虛擬機中設置組件調度模塊和測試事件管理模塊,實現(xiàn)測試描述語言特有的并行測試系統(tǒng)建立及仿真、測試事件的檢測和處理;通過抽象測試套和可解釋測試套之間的映射關系實現(xiàn)測試描述語言級別的調試功能;通過數(shù)據(jù)定義與行為定義的精確二進制描述,實現(xiàn)簡單、安全、高效的可解釋測試套規(guī)范。這種技術方案上的區(qū)別,帶來了較為明顯的有益效果,即轉換器的自動轉換及可解釋測試套在虛擬機上的解釋運行,使得測試描述語言的開發(fā)和實現(xiàn)效率大大提高,實現(xiàn)與平臺無關性,提高獨立性;摒棄了傳統(tǒng)的用戶編寫代碼實現(xiàn)的高級語言的可執(zhí)行測試套的方法,方便的用戶操作,有利于測試語言的推廣;通過抽象測試套和可解釋測試套之間的映射關系實現(xiàn)測試描述語言級別的調試功能,提高測試描述語言開發(fā)過程的效率,方便用戶解決問題,提高測試代碼性能;簡單、安全、高效的可解釋測試套規(guī)范使得測試語言的解釋實現(xiàn)方法可靠性、可擴展性強。圖1是現(xiàn)有技術方案中實現(xiàn)TTCN-3語言的方法流程圖;圖2是根據(jù)本發(fā)明的第二實施例的虛擬機的組成部分及相互關系示意圖;圖3是根據(jù)本發(fā)明的第三實施例的可解釋測試套的結構系示意圖;圖4是根據(jù)本發(fā)明的第四實施例的TTCN-3語言實現(xiàn)方法流程圖。具體實施例方式為使本發(fā)明的目的、技術方案和優(yōu)點更加清楚,下面將結合附圖對本發(fā)明作進一步地詳細描述。為了解決現(xiàn)有技術中各種技術問題及缺點,實現(xiàn)發(fā)明目的,本發(fā)明摒棄傳統(tǒng)的編譯運行可執(zhí)行測試套的方式,采用解釋運行可解釋測試套的方法,通過可解釋測試套在虛擬機上解釋運行的方法,高效實現(xiàn)測試描述語言的抽象測試套,同時利用解釋運行的優(yōu)點實現(xiàn)與平臺無關性,抽象測試套到可解釋測試套自動轉換簡化開發(fā)步驟,方便測試用戶使用,可解釋測試套與抽象測試套的對應關系使得測試描述語言級別的調試得以實現(xiàn),提高開發(fā)過程中解決問題的效率。本發(fā)明的關鍵在于可解釋測試套及虛擬機的解釋運行,其中虛擬機實時仿真抽象測試套的操作步驟及功能實體之間的交互過程,處理與被測系統(tǒng)交互的測試事件,還接收處理用戶的調試操作;而可解釋測試套則能被虛擬機所識別,并以簡練有效的方式重新描述抽象測試套相關的數(shù)據(jù)定義和操作定義,包括功能實體的建立、相互并行交互過程、與被測系統(tǒng)之間的交互過程等??山忉寽y試套到虛擬機的實現(xiàn)過程通過步驟首先,用轉換器自動完成從抽象測試套到可解釋測試套;然后,將可解釋測試套直接加載到虛擬機,虛擬機建立系統(tǒng)環(huán)境,包括內(nèi)存映像等;最后虛擬機解釋運行可解釋測試套,并仿真相關測試動態(tài)過程,得到測試結果。由于從抽象測試套轉換到可解釋測試套后,可以直接在與平臺無關的虛擬機上解釋運行,并且實現(xiàn)測試描述語言級別的調試功能,用戶使用方便且開發(fā)效率高。本發(fā)明的核心部分是用于解釋運行可解釋測試套的虛擬機的實現(xiàn),與傳統(tǒng)高級語言虛擬機不同的地方在于,還要仿真多個功能實體的動態(tài)并行交互過程、實現(xiàn)功能實體與被測系統(tǒng)之間的交互及測試事件處理。本發(fā)明是通過虛擬機內(nèi)部的組件調度模塊和測試事件管理模塊實現(xiàn)的。本發(fā)明的第一實施例中,通過轉換器、可解釋測試套、虛擬機及計算機平臺實現(xiàn)了從抽象測試套到可解釋測試套的轉換、虛擬機對可解釋測試套的加載、解釋執(zhí)行,進行對被測系統(tǒng)的測試,實現(xiàn)TTCN-3語言描述的系統(tǒng)測試過程。其中,轉換器是用于將TTCN-3描述的抽象測試套自動轉換成可解釋測試套,而可解釋測試套則是一種中間格式,用于描述抽象測試套的數(shù)據(jù)、操作信息,該格式能夠被虛擬機加載和解釋執(zhí)行,本發(fā)明的關鍵部分即虛擬機是用于解釋執(zhí)行可解釋測試套的??梢?,本發(fā)明需要首先開發(fā)能夠執(zhí)行TTCN-3類型的測試描述語言的虛擬機,該虛擬機與傳統(tǒng)高級語言虛擬機不同的地方在于,它不僅僅是完成存儲代碼的解釋運行,而且要實現(xiàn)測試語言的動態(tài)仿真過程,需要建立測試系統(tǒng)的各個組件并且維護它們,而且要管理測試事件的發(fā)生和處理,維護測試系統(tǒng)各個組件與被測系統(tǒng)的交互。本發(fā)明的第二實施例在第一實施例的基礎上,具體按以下模塊實現(xiàn)虛擬機執(zhí)行模塊、堆棧模塊、組件調度模塊、測試事件管理模塊、調試模塊。圖2示出了該虛擬機的各個部分及其相互關系。執(zhí)行模塊201用于尋址當前操作指令、尋址操作相關數(shù)據(jù),并調用系統(tǒng)應用程序接口完成操作。解釋執(zhí)行時,執(zhí)行模塊201對指令和數(shù)據(jù)的進行尋址并解釋指令執(zhí)行,在不同的目標操作系統(tǒng)上,可解釋測試套中的指令被執(zhí)行模塊201解釋成對系統(tǒng)API或庫函數(shù)的調用,以此來實現(xiàn)TTCN-3語句所描述的操作。當然這里的指令是指純粹計算機操作的指令,而對于其他與測試系統(tǒng)相關的復雜指令或特殊指令則需要其他模塊或多個模塊的配合完成。堆棧模塊202用于管理、分配、回收內(nèi)存。對于任何一個虛擬機都需要堆棧模塊對內(nèi)存進行動態(tài)管理維護。在可解釋測試套執(zhí)行期間,內(nèi)存分配、回收和運行期符號表管理的任務即由堆棧管理模塊完成。組件調度模塊203用于建立測試所需功能實體,并根據(jù)操作指令調度執(zhí)行功能實體,仿真實現(xiàn)測試功能。組件的概念是TTCN-3等測試描述語言中特有的。TTCN-3語言中定義了組件的概念,用于表示測試過程中各個相對獨立的、具有特定功能的實體,用TTCN-3語言描述的測試套在執(zhí)行時,測試系統(tǒng)內(nèi)部可以被看作是多個組件實體的運行交互過程,虛擬機專門為此提供了組件調度模塊203用于管理運行期的各個組件實體。執(zhí)行測試套時,組件調度模塊203維護著當前的組件實體隊列,并依據(jù)特定的算法從當前處于活躍狀態(tài)的實體所對應的指令區(qū)中取出數(shù)條指令碼交由執(zhí)行模塊運行,執(zhí)行模塊運行完畢后將控制權交給組件調度模塊重新獲取下一輪需要運行的指令碼。測試事件管理模塊204用于檢測、處理虛擬機與被測系統(tǒng)之間的交互事件。測試套執(zhí)行時,測試系統(tǒng)內(nèi)部的各個組件之間以及測試系統(tǒng)的組件與被測試系統(tǒng)之間發(fā)生的發(fā)送、接收、調用、被調用、異常等操作被稱為“測試事件”,測試事件管理模塊即專為處理這些操作而設,負責檢測處理組件與被測系統(tǒng)間的交互事件。測試事件在以下兩種情況下會被觸發(fā)執(zhí)行模塊201運行到會引起測試事件的指令時,例如發(fā)送和接收指令;或者測試驅動器偵測到從被測試系統(tǒng)發(fā)來的網(wǎng)絡報文、過程調用或其它反饋信息時。測試驅動器是測試系統(tǒng)與被測試系統(tǒng)間通信中介的軟硬件,即測試系統(tǒng)對外統(tǒng)一接口。測試事件管理模塊對這些觸發(fā)作出響應,啟動相應子程序處理各個測試事件。以發(fā)送操作為例,執(zhí)行模塊運行到發(fā)送操作指令時觸發(fā)發(fā)送事件,事件管理模塊被啟動,從虛擬機中獲取到需要發(fā)送的數(shù)據(jù)結構和編解碼信息,調用編解碼函數(shù)將數(shù)據(jù)編碼后通過與測試驅動器的接口發(fā)送到被測試系統(tǒng)。可見,通過組件調度模塊203和測試事件管理模塊204這兩個特殊模塊,才能實現(xiàn)測試套解釋執(zhí)行過程中一些復雜動態(tài)的操作及維護工作。也正是虛擬機中這兩個模塊的協(xié)作運行,才實現(xiàn)了對于TTCN-3語言的解釋執(zhí)行,從而擺脫傳統(tǒng)的編譯可執(zhí)行測試套的方法,獲得解釋運行的相應優(yōu)點。調試模塊205用于識別和實現(xiàn)調試斷點并跳轉,解釋執(zhí)行用戶輸入的調試指令并輸出觀察信息。當用戶需要調試運行測試套時,調試模塊205配合執(zhí)行模塊201實現(xiàn)斷點指令的解釋和執(zhí)行,根據(jù)斷點標記做相應的跳轉。在動態(tài)調試交互過程中,調試模塊205接收用戶的調試指令輸入,并即時轉換成執(zhí)行模塊201可以識別的指令序列,做出相應的操作,并負責向用戶輸出調試信息。比如用戶在斷點處需要查看變量值時,調試模塊205通知執(zhí)行模塊201讀取該變量的值,然后輸出到用戶界面顯示。解釋運行的機制使得TTCN-3級別的調試功能得以實現(xiàn),而調試模塊205則完成了虛擬機的調試功能。在實現(xiàn)虛擬機的同時本發(fā)明定義了可解釋測試套的語法規(guī)范,它能夠被虛擬機識別并解釋運行,且盡量滿足簡單、安全、高效、可擴展性強等特點。本發(fā)明的第三實施例在第一實施例的基礎上,具體設定以下結構作為可解釋測試套的規(guī)范。可解釋測試套是TTCN-3抽象測試套的解釋執(zhí)行格式,它是一種被精確定義的二進制文件,采用小端方式(little-endian)保存。圖3示出了它的具體結構。首先是文件標志用于標記文件為可解釋測試套,這樣易于被虛擬機識別,相當于一般可執(zhí)行文件中的magicnumber,比如可以設置為固定值0x84846778,即ASCII碼的“TTCN”。然后是文件頭用于描述可解釋測試套的文件相關信息。文件頭對于計算機二進制文件是必須的,用于描述該可解釋測試套的文件相關信息,比如文件頭本身的大小或字節(jié)數(shù)、文件的總字節(jié)數(shù)、對應的抽象測試套的文件名、轉換時間、轉換器的版本號、是否含有調試信息等。接著是定義段頭部用于描述定義段相關信息、控制段頭部用于描述控制段相關信息、調試段頭部用于描述調試段相關信息。之后為定義段、控制段和調試段。其中定義段用于描述數(shù)據(jù)定義信息。定義段包含了抽象測試套里所有的全局定義體信息,包括定義體的個數(shù)以及常量、模塊參數(shù)、模板、類型、函數(shù)、過程、測試例、可選步、外部常量和外部函數(shù)定義,每種定義體均被編譯器轉化成相應的二進制格式,中間文件中只有一個定義段,如果抽象測試套由多個TTCN-3模塊組成,那么編譯器將把所有模塊的定義體合并到該定義段中。定義段頭部即指示了定義段的位置、大小等信息。控制段用于描述操作代碼信息,即抽象測試套的操作定義??刂贫伟顺橄鬁y試套里所有控制部分或操作部分的信息,操作代碼是抽象測試套的執(zhí)行入口,虛擬機加載可解釋測試套后從控制段開始執(zhí)行操作,如果抽象測試套中含有多個控制部分,則預先由用戶選擇一個控制部分執(zhí)行。同樣的,控制段頭部即指示了控制段的位置、大小等信息。在可解釋測試套中,調試段頭部和調試段是可選的,它們包含了用于調試執(zhí)行所需的全部符號信息和文件/行號映射以及在編譯期間預設的斷點,調試段是否存在由文件頭部的相應標志位標志,如果可解釋測試套中含有調試段,虛擬機就會將其加載到內(nèi)存中,并把執(zhí)行模式設置為調試狀態(tài),允許用戶設置斷點、進行單步執(zhí)行和觀察變量等操作。可見,可解釋測試套的核心內(nèi)容是TTCN-3中各種定義體和執(zhí)行語句的二進制表示格式,它們包含有尋址信息,能夠被虛擬機所識別,并轉換成對操作系統(tǒng)底層函數(shù)的調用。為了更詳細的說明可解釋測試套的格式,下面以類型表示代碼和指令代碼為例進行說明。類型表示代碼,TTCN-3抽象測試套中對數(shù)據(jù)結構的定義代碼。所有的TTCN-3預定義類型和用戶定義類型都有相應的二進制表示??山忉寽y試套中包含類型定義的作用主要有兩點用于運行期指導執(zhí)行模塊201在堆棧上動態(tài)地創(chuàng)建值對象;用于運行期的數(shù)值邊界檢查。每個TTCN-3類型定義由不定長度的字節(jié)組成,均為4字節(jié)的整數(shù)倍,其中,前4個字節(jié)是類型的基本信息,具體地說,第1字節(jié)為類型屬性,例如整型、布爾型,第2字節(jié)為各種狀態(tài)位標志,如是否可選,是否帶有參數(shù)等,第3-4字節(jié)為子域的個數(shù)。任何類型定義的二進制表示方式都至少包含這4個字節(jié)的內(nèi)容,其后的字節(jié)可選,但如果有,必定是4字節(jié)的整數(shù)倍,例如第5-8字節(jié)存放類型的第一個子域入口地址,第9-12字節(jié)存放第二個子域入口地址,依此類推。指令代碼格式定義如下第1字節(jié)為操作碼,執(zhí)行模塊根據(jù)該操作碼決定進行何種操作;第2字節(jié)為擴展標志字節(jié),用于保存調試標志位、對操作碼的擴展等;第3字節(jié)為操作數(shù)的個數(shù)和尋址方式;第4字節(jié)為斷點指令在斷點指令集中的位置;其后的字節(jié)可選,但如果有,必定是4字節(jié)的整數(shù)倍,例如第5-8字節(jié)為第一個操作數(shù)的入口地址,第9-12字節(jié)為第二個操作數(shù)的入口地址,依此類推。而調試斷點是一種特殊的指令,它的作用就在于使虛擬機執(zhí)行到該條指令時能夠停下來等待調試指令,斷點指令的第1字節(jié)表示該指令為斷點指令;第5-8字節(jié)直接則為斷點的下一條語句的入口,用于繼續(xù)執(zhí)行時跳回主程序。在本發(fā)明的第四實施例中,通過解釋運行可解釋測試套實現(xiàn)TTCN-3語言的抽象測試套大致分為三個步驟,如圖4所示首先,由轉換器將TTCN-3抽象測試套轉換成可解釋測試套。這里轉換器是專門設計的能夠將TTCN-3描述的抽象測試套對應轉換為可解釋測試套,當然可解釋測試套的語法規(guī)則是事先定義的,定義的規(guī)范與虛擬機有關,只要虛擬機能夠識別并解釋執(zhí)行即可完成發(fā)明目的。然后在虛擬機上加載該可解釋測試套。這一步加載的目的是將可解釋測試套描述的數(shù)據(jù)定義及操作代碼等建立解釋執(zhí)行所必須的執(zhí)行環(huán)境,如內(nèi)存分配空間、地址映射表等。最后由虛擬機解釋執(zhí)行可解釋測試套。虛擬機能夠識別并解釋執(zhí)行可解釋測試套,虛擬機是基于相應平臺的API或庫函數(shù)基礎上的,比如微軟視窗下的C運行期庫,類似于現(xiàn)有的高級語言虛擬機,如Java虛擬機,虛擬機一旦建立以后,所執(zhí)行的語言具有平臺無關性。所有與平臺及系統(tǒng)基礎相關的內(nèi)容都是體現(xiàn)虛擬機的建立過程中。本發(fā)明將測試套稱為可解釋測試套是區(qū)別于可執(zhí)行測試套的,因為傳統(tǒng)的可執(zhí)行測試套都是直接編譯鏈接生成與平臺有關的可執(zhí)行文件實現(xiàn)的。本發(fā)明的關鍵即建立虛擬機,用于識別并直接解釋執(zhí)行可解釋測試套,實現(xiàn)TTCN-3抽象測試套。解釋執(zhí)行與編譯執(zhí)行的區(qū)別使得本發(fā)明解決了傳統(tǒng)技術方案的缺點。抽象測試套只需經(jīng)過一次轉換即可實現(xiàn),開發(fā)效率大大提高??山忉寽y試套能夠完整地表示TTCN-3抽象測試套轉換后所對應的可執(zhí)行格式,并直接在一個專用的虛擬機上運行,可解釋測試套不依賴于其它程序設計語言和編譯器及系統(tǒng)平臺,也不需要外部庫文件的支持,除了必要的配置操作外,用戶不需要編寫額外的測試實現(xiàn)代碼,方便用戶使用,有利于TTCN-3的推廣。本發(fā)明的第五實施例在第四實施例的基礎上,還引入了TTCN-3級別的調試功能。由于可解釋測試套與傳統(tǒng)的可執(zhí)行測試套不同,它直接對應于抽象測試套,在轉換過程中轉換器可以建立抽象測試套中的標志符、語句信息以及他們與可解釋測試套代碼的映射關系,這些映射關系為TTCN-3語言級別的調試功能的實現(xiàn)提供了數(shù)據(jù)支持。用戶需要進行調試時,在可解釋測試套中寫入調試信息,在解釋執(zhí)行時,由虛擬機將可解釋測試套代碼加載到內(nèi)存中,并根據(jù)調試信息設置相關的斷點等,在執(zhí)行過程中提供即時的調試支持。由于TTCN-3抽象測試套與可解釋測試套存在映射關系,因此調試過程對于用戶來說直接在TTCN-3級別,而實際虛擬機則通過映射關系轉換到可解釋測試套級別。本發(fā)明的第三實施例在第二實施例的基礎上,通過以下具體步驟實現(xiàn)每個過程,比如轉換器將抽象測試套轉換到可解釋測試套、虛擬機加載可解釋測試套、虛擬機解釋執(zhí)行可解釋測試套等步驟的具體過程。根據(jù)可解釋測試套文件的結構,轉換器按照以下步驟完成從抽象測試套到可解釋測試套的轉換首先建立可解釋測試套的文件標志。該標志用于標記文件是可解釋測試套,從而被能夠虛擬機識別;然后,轉換器建立可解釋測試套的文件頭;接著,轉換器建立可解釋測試套的定義段頭部和定義段,定義段即用于描述抽象測試套的數(shù)據(jù)定義,而定義段頭部則用于描述定義段的相關信息;之后,轉換器建立可解釋測試套的控制段頭部和控制段,控制段即用于描述抽象測試套的操作定義,而控制段頭部則用于描述所述控制段的相關信息;當用戶需要調試時,轉換器還建立可解釋測試套的調試段頭部和調試段,調試段即用于描述調試信息,而調試段頭部則用于描述調試段的相關信息。事實上,轉換器的關鍵步驟是將抽象測試套中的所有定義體和控制語句轉換成虛擬機可以識別的二進制格式。其中抽象測試套中的數(shù)據(jù)定義,比如常量、參數(shù)、模板、變量等,被轉換成虛擬機所支持的基本數(shù)據(jù)格式或它們的組合。而抽象測試套中的行為定義,比如函數(shù)、測試例,各種程序語句等,被轉換成虛擬機的指令序列,而數(shù)據(jù)定義則做為指令的操作數(shù)。在建立可解釋測試套之后,虛擬機要加載到內(nèi)存,建立運行環(huán)境,按以下步驟完成首先,虛擬機根據(jù)所述定義段建立內(nèi)存映像,用于存儲數(shù)據(jù),在解釋時進行操作;其次,虛擬機根據(jù)所述控制段建立內(nèi)存映像,用于存儲操作代碼,在解釋時調用運行;最后,虛擬機根據(jù)調試段在相應操作代碼標記斷點,用于完成調試。可見,虛擬機將可解釋測試套加載到內(nèi)存后,經(jīng)過重定位操作將可解釋測試套中的相對地址轉換成內(nèi)存中的絕對地址,生成相應的內(nèi)存映象,虛擬機中的執(zhí)行模塊在調度模塊的控制下,依次從內(nèi)存映象中取出指令和數(shù)據(jù)進行運算并與被測系統(tǒng)交互,達到測試目的。虛擬機解釋執(zhí)行可解釋測試套是整個流程的關鍵。對應于虛擬機的各個模塊具體包含以下步驟虛擬機的執(zhí)行模塊尋址當前操作指令、尋址操作相關數(shù)據(jù),調用系統(tǒng)應用程序接口,完成操作。在可解釋測試套的解釋執(zhí)行過程中,執(zhí)行模塊一直進行指令的解釋運行,指令隊列則是由調度模塊管理安排的。虛擬機的堆棧模塊管理、分配、回收內(nèi)存。運行的同時堆棧模塊進行內(nèi)存的維護管理。虛擬機的組件調度模塊建立測試所需功能實體,根據(jù)操作指令調度執(zhí)行所述功能實體,仿真實現(xiàn)測試功能。根據(jù)TTCN-3描述的測試系統(tǒng),組件調度模塊創(chuàng)建維護功能實體隊列,并配合執(zhí)行模塊調度執(zhí)行功能實體的操作指令。各個功能實體是并行的關系,而且存在交互,因此調度模塊要將活躍狀態(tài)的功能實體的指令代碼按一定算法公平排列到指令隊列,由執(zhí)行模塊執(zhí)行,實現(xiàn)并行的目的。虛擬機的測試事件管理模塊檢測、處理所述虛擬機與被測系統(tǒng)之間的交互事件。如前所述由執(zhí)行特殊的操作指令或檢測到被測系統(tǒng)的交互信息時,會引發(fā)測試事件,比如發(fā)送消息等;此時測試事件管理模塊配合執(zhí)行模塊處理這些測試事件。測試事件的交互是測試過程的關鍵,特別是通信系統(tǒng)的測試,主要的結果都是通過測試事件的發(fā)生處理得到的。因此測試事件的管理在TTCN-3實現(xiàn)過程是必不可少的。虛擬機的調試模塊在調試過程中完成用戶和測試系統(tǒng)的交互。虛擬機的調試模塊首先識別斷點并跳轉;在交互過程中,調試模塊解釋執(zhí)行用戶輸入的調試指令,由執(zhí)行模塊執(zhí)行后向用戶輸出觀察信息。在虛擬機加載了可解釋測試套的調試段頭部和調試段包含的用于調試執(zhí)行所需的信息后,在內(nèi)存中構造行號與標志符的映射表以及行號與指令的映射表,如果中間文件中含有在編譯階段預設的斷點信息,虛擬機依據(jù)這些信息生成相應的斷點指令,并設置斷點在TTCN-3源文件中相應前一行所對應的最后一條指令的調試標志位和斷點指令位置。這使得執(zhí)行模塊在執(zhí)行到斷點指令時,發(fā)生跳轉。含有斷點信息的指令在執(zhí)行完后,執(zhí)行模塊中的程序計數(shù)器會根據(jù)標志位和斷點指令位置計算出下一條指令的位置,該位置恰好指向斷點指令表的一條指令,執(zhí)行模塊在執(zhí)行該斷點指令時獲取下一條正常指令的位置,但是并不執(zhí)行,而是等待用戶輸入調試指令,以此來實現(xiàn)程序的調試執(zhí)行功能。采用這種插入斷點指令的執(zhí)行方式,可以使執(zhí)行模塊在到達斷點之前能全速運行,提高執(zhí)行效率。熟悉本領域的技術人員可以理解,本發(fā)明給出了通用的測試描述語言實現(xiàn)方法及裝置,具有可擴展性能,對于非TTCN-3現(xiàn)有測試描述語言或將來出現(xiàn)的測試描述語言都適用,能實現(xiàn)發(fā)明目的,而不影響本發(fā)明的實質和范圍。雖然通過參照本發(fā)明的某些優(yōu)選實施例,已經(jīng)對本發(fā)明進行了圖示和描述,但本領域的普通技術人員應該明白,可以在形式上和細節(jié)上對其作各種改變,而不偏離本發(fā)明的精神和范圍。權利要求1.一種測試描述語言的實現(xiàn)方法,其特征在于,包含以下步驟,A.轉換器將所述測試描述語言描述的抽象測試套轉換成可解釋測試套;B.在虛擬機上加載所述可解釋測試套;C.所述虛擬機解釋執(zhí)行所述可解釋測試套;其中所述可解釋測試套能被所述虛擬機識別并直接解釋執(zhí)行,所述虛擬機基于計算機平臺解釋執(zhí)行實現(xiàn)所述測試描述語言。2.根據(jù)權利要求1所述的測試描述語言的實現(xiàn)方法,其特征在于,還包含以下步驟,D.用戶通過所述虛擬機調試所述可解釋測試套。3.根據(jù)權利要求2所述的測試描述語言的實現(xiàn)方法,其特征在于,所述步驟A包含以下子步驟,A1所述轉換器建立所述可解釋測試套的文件標志,用于標志該可解釋測試套,從而被所述虛擬機識別;A2所述轉換器建立所述可解釋測試套的文件頭,用于描述該可解釋測試套的文件相關信息;A3所述轉換器建立所述可解釋測試套的定義段頭部和定義段,所述定義段用于描述所述抽象測試套的數(shù)據(jù)定義,所述定義段頭部用于描述所述定義段的相關信息;A4所述轉換器建立所述可解釋測試套的控制段頭部和控制段,所述控制段用于描述所述抽象測試套的操作定義,所述控制段頭部用于描述所述控制段的相關信息;A5當用戶需要調試時,所述轉換器建立所述可解釋測試套的調試段頭部和調試段,所述調試段用于描述調試信息,所述調試段頭部用于描述所述調試段的相關信息。4.根據(jù)權利要求2所述的測試描述語言的實現(xiàn)方法,其特征在于,所述步驟B包含以下子步驟,B1所述虛擬機根據(jù)所述定義段建立內(nèi)存映像,用于存儲數(shù)據(jù),在解釋時進行操作;B2所述虛擬機根據(jù)所述控制段建立內(nèi)存映像,用于存儲操作代碼,在解釋時調用運行;B3所述虛擬機根據(jù)所述調試段在相應操作代碼標記斷點,用于完成調試。5.根據(jù)權利要求2所述的測試描述語言的實現(xiàn)方法,其特征在于,所述步驟C包含以下子步驟,C1所述虛擬機的執(zhí)行模塊尋址當前操作指令、尋址操作相關數(shù)據(jù),調用系統(tǒng)應用程序接口,完成操作;C2所述虛擬機的堆棧模塊管理、分配、回收內(nèi)存;C3所述虛擬機的組件調度模塊建立測試所需功能實體,根據(jù)操作指令調度執(zhí)行所述功能實體,仿真實現(xiàn)測試功能;C4所述虛擬機的測試事件管理模塊檢測、處理所述虛擬機與被測系統(tǒng)之間的交互事件。6.根據(jù)權利要求2所述的測試描述語言的實現(xiàn)方法,其特征在于,所述步驟D包含以下子步驟,D1所述虛擬機的調試模塊識別所述斷點并跳轉;D2所述調試模塊解釋執(zhí)行用戶輸入的調試指令;D3所述調試模塊向用戶輸出觀察信息。7.根據(jù)權利要求5所述的測試描述語言的實現(xiàn)方法,其特征在于,所述步驟C3進一步包含以下子步驟,所述組件調度模塊創(chuàng)建維護所述功能實體隊列;所述組件調度模塊配合所述執(zhí)行模塊調度執(zhí)行所述功能實體的操作指令。8.根據(jù)權利要求5所述的測試描述語言的實現(xiàn)方法,其特征在于,所述步驟C4進一步包含以下子步驟,執(zhí)行所述操作指令或檢測所述被測系統(tǒng)的交互信息,引發(fā)所述測試事件;所述測試事件管理模塊配合所述執(zhí)行模塊處理所述測試事件。9.根據(jù)權利要求1至8中任一項所述的測試描述語言的實現(xiàn)方法,其特征在于,所述測試描述語言為測試及測試控制記法版本3。10.一種測試描述語言的實現(xiàn)裝置,其特征在于,包含轉換器、虛擬機和可解釋測試套,所述轉換器用于將所述測試描述語言描述的抽象測試套轉換成可解釋測試套;所述可解釋測試套用于描述所述抽象測試套的數(shù)據(jù)、操作信息;所述虛擬機用于解釋執(zhí)行所述可解釋測試套。11.根據(jù)權利要求10所述的測試描述語言的實現(xiàn)裝置,其特征在于,所述可解釋測試套包含以下部分,文件標志,用于標記文件為所述可解釋測試套;文件頭,用于描述所述可解釋測試套的文件相關信息;定義段,用于描述數(shù)據(jù)定義信息;定義段頭部,用于描述所述定義段相關信息;控制段,用于描述操作代碼信息;控制段頭部,用于描述所述控制段相關信息;當用戶需要調試時,還包含,調試段,用于描述用戶調試信息;調試段頭部,用于描述所述調試段相關信息。12.根據(jù)權利要求10所述的測試描述語言的實現(xiàn)裝置,其特征在于,所述虛擬機含以下部分,執(zhí)行模塊,用于尋址當前操作指令、尋址操作相關數(shù)據(jù),并調用系統(tǒng)應用程序接口完成操作;堆棧模塊,用于管理、分配、回收內(nèi)存;組件調度模塊,用于建立測試所需功能實體,并根據(jù)操作指令調度執(zhí)行所述功能實體,仿真實現(xiàn)測試功能;測試事件管理模塊,用于檢測、處理所述虛擬機與被測系統(tǒng)之間的交互事件。13.根據(jù)權利要求10所述的測試描述語言的實現(xiàn)裝置,其特征在于,所述虛擬機還包含調試模塊,用于識別和實現(xiàn)調試斷點并跳轉,解釋執(zhí)行用戶輸入的調試指令并輸出觀察信息。全文摘要本發(fā)明涉及系統(tǒng)測試技術,公開了一種測試描述語言的實現(xiàn)方法及其裝置,使得測試描述語言能夠高效實現(xiàn),與平臺無關,測試用戶使用方便,測試開發(fā)效率高。本發(fā)明中,通過抽象測試套到可解釋測試套的自動轉換并在虛擬機上解釋運行的方法,高效實現(xiàn)測試描述語言的抽象測試套;在虛擬機中設置組件調度模塊和測試事件管理模塊,實現(xiàn)測試描述語言特有的并行測試系統(tǒng)建立及仿真、測試事件的檢測和處理;通過抽象測試套和可解釋測試套之間的映射關系實現(xiàn)測試描述語言級別的調試功能;通過數(shù)據(jù)定義與行為定義的精確二進制描述,實現(xiàn)簡單、安全、高效的可解釋測試套規(guī)范。文檔編號G06F9/44GK1900905SQ20051008618公開日2007年1月24日申請日期2005年7月24日優(yōu)先權日2005年7月24日發(fā)明者季向東,盧偉攀申請人:華為技術有限公司