TTCN-3語言看起來像一個普通的程序設計語言,但是它與普通的程序設計語言又有不同。要實現(xiàn)一個TTCN-3測試系統(tǒng),除了TTCN-3語言外,我們還需要加上測試擴展,包括測試配置、匹配機制、定時器支持、測試判決、通信機制等。這里簡要介紹下測試配置的基本原理并用簡單的實例加以說明。

  一、測試配置的基本原理

  TTCN-3支持對測試配置的動態(tài)定義,測試配置包括兩部分。第一是一個帶有良好定義的互連測試組件,包括一個主測試組件MTC和若干并行的測試組件PTC;第二是定義該測試系統(tǒng)邊界的明確的測試系統(tǒng)接口TSI,它負責MTC、PTC與被測系統(tǒng)之間的通信。

  當啟動測試例時,主測試組件MTC自動創(chuàng)建,負責管理和協(xié)調(diào)PTC的測試行為,生命周期貫穿整個測試例的執(zhí)行過程。所有的PTC都能由Creat、Start、Stop操作來動態(tài)地創(chuàng)建、啟動和停止。

  MTC、PTC、TSI都通過端口交換信息(端口,即測試組件端口,它可以收發(fā)由TTCN-3所定義的消息)。在測試例執(zhí)行過程中,可以通過map、unmap、 connect、 disconnect動態(tài)地改變各個端口之間的連接和映射關系。

  每個不同的測試系統(tǒng)都有一個且僅有一個主測試組件和測試系統(tǒng)接口。它們都是在測試例啟動時,系統(tǒng)自動創(chuàng)建,測試例運行結束后銷毀,主測試組件在測試行為中通過關鍵字mtc引用,測試系統(tǒng)接口在測試行為中通過關鍵字system引用。

  二、測試配置的實現(xiàn)

  介紹了測試配置的基本原理,那么如何具體實現(xiàn)測試配置呢,TTCN-3給出了端口和組件的定義。

  端口的定義:TTCN-3通過關鍵字port來定義端口,支持基于消息或基于過程的端口,分別通過關鍵字message、procedure來定義。端口是有方向的,關鍵字in表示輸入方向,關鍵字out表示輸出方向,關鍵字in/out表示輸入/輸出方向。例1:

  type port mymsgport message { in msgtype1;out msgtype2;inout integer }上面的這個例子中,端口名稱定義為mymsgport,是基于消息的端口,用關鍵字message來標志。該端口可以接收msgtype1和msgtype2類型的數(shù)據(jù),允許接收和發(fā)送integer類型的數(shù)據(jù),其中msgtype1、msgtype2是TTCN-3特有的數(shù)據(jù)類型,如record,set等。

  組件的定義:組件,是用來執(zhí)行測試行為的。TTCN-3通過關鍵字component來定義組件。一個組件中可以包含端口、本地變量、定時器說明等。注意:不同的組件可以使用相同的端口,但是同一組件的端口名字應該是的。例2:

  type component mymtc { port mymsgport;var integer mylocalinteger;timer mylocaltimer }上面的這個例子中,組件名稱定義為mymtc,它包含上面定義的端口mymsgport,一個本地變量mylocalinteger,還有一個TTCN-3定義的定時器變量mylocaltimer.

  注:測試系統(tǒng)接口定義和組件定義具有相同的形式,但是在定義測試系統(tǒng)接口時,測試組件的聲明中不能包含任何常量、變量和定時器。例如上面的例2只能表示定義的是一個測試組件,而不是測試系統(tǒng)接口。

  三、小結

  前面兩部分介紹了測試配置的基本原理和具體的實現(xiàn),那么針對一個具體的被測系統(tǒng)設計TTCN-3測試系統(tǒng)時,對于測試配置的設計要考慮我們需要測試哪些功能,需要幾個端口,幾個組件,定義的端口和組件能否滿足我們測試的需要,然后根據(jù)上面的定義實現(xiàn)測試系統(tǒng)的測試配置可以了。