TTCN3學習筆記--轉載&add

TTCN3學習筆記1--轉載
2009-08-26 23:27

       TTCN-3可以用做多種通信端口上的各種響應系統測試的描述語言。典型的應用領域是協議測試(包括移動協議和互連網協議)、服務測試(包括增補服務)、模塊測試、基於平臺、APIs等的CORBA測試。TTCN-3並不僅僅侷限於一致性測試,它可用於多種類型的測試,如互操作性測試(Interoperability Testing)、健壯性測試(Robustness Testing)、迴歸測試(Regression Testing)、系統和集成測試(System and Integration Testing)
TTCN-3意在用做獨立於測試方法、層和協議的測試套的描述

TTXP(TTCN-3 Express)是一個簡單的TTCN3編譯器(TTCN3是ETSI的一個語言標準,具體的編譯器由各個廠商自己開發).在上面的網址可以找到下載地址與安裝方法,這裏不詳細介紹了.

1.Hello World
下面是一個非常簡單的TTCN3模塊,我們把這個模塊存放到HelloWorld.ttcn3文件中

  1. module HelloWorld {
  2. control {
  3.    log("Hello World");
  4. }
  5. }

這個模塊只有一個Control部分,Contorl部分只有一條log語句,這條語句是打印一條信息.

2. TTXP命令

ttxp /run HelloWorld

編譯並且運行HelloWorld, 運行結果: "Hello World"
這條命令包含了編譯和運行兩個步驟, 但如果你已經編譯過,ttxp /run就會直接運行Hello World
但是如果你後來又修改了文件, ttxp /run會重新編譯運行

假如你僅僅想編譯文件,而不用運行,用ttxp /compile
ttxp /compile HelloWorld

你也可以用文件名進行編譯,
ttxp /compile HelloWorld.ttcn3

運行
ttxp /run HelloWorld.ttcn3

模塊名稱必須和文件名稱保持一致,比如M.ttcn3中只能包含Module M, 一個文件只能有一個Module
A command

ttxp /run M

or
ttxp /run M.ttcn3

會執行模塊M的Control部分

模塊中也可以不包含Cotrol, 我們可以單獨寫一些函數庫並且分別編譯
下面是LibraryModule.ttcn3. 這個文件包含了LibraryModule模塊,裏面提供了一個HelloWorld函數

  1. module LibraryModule
  2. {
  3. function HelloWorld()
  4. {
  5.    log("Hello World");
  6. }
  7. }

用下面的命令編譯這個文件
ttxp /compile LibraryModule

下面是一個MainModule模快(文件名MainModule.ttcn3), 在這個Module中導入LibraryModule, 並且調用HelloWorld函數,如下

  1. module MainModule
  2. {
  3. import from LibraryModule all;
  4. control
  5. {
  6.    HelloWorld();
  7. }
  8. }

用下面的命令編譯並且執行:
ttxp /run MainModule

返回結果:Hello World



這章裏面主要介紹了TTXP的一些常用命令, 另外裏面很多地方提到了模塊Module, 下面我們簡單介紹一下:

Module – Top-level unit of TTCN-3
模塊- TTCN3中SCOPE最大的單元(其他的都需要包含在Module中).
一個Module包含兩個部分:Module定義和Module控制,這兩個部分都是可選的,也就是說一個Module中可以是空的,沒有任何東西

  1. module MyModule {
  2. : // Definitions part
  3. control {
  4. : // Control part
  5. }
  6. }

Module可以Import 其他Module,這個類似於C中的Include

控制部分類似與C語言中的Main函數,用來控制測試用例的執行


Module還有更多的內容, 等以後接觸到更多TTCN內容的時候再介紹


TTCN3學習筆記2--轉載
2009-08-26 23:28

TTCN實踐入門(二)Test Suites

Test Suites
(測試套件或者測試對象)
一個TTCN 測試套件由多個測試用例組成,比如所有測試Attach的用例可以組成一個測試套件, 主要是爲了方便管理與組織測試用例

下面是一個顯示Hello的測試用例
  1. testcase Hello() runs on EmptyComponentType
  2. {
  3.    log("Hello");
  4. }
測試用例由關鍵字testcase定義,必須定義在Module的定義部分
一個測試用例必須運行在一個component(本文翻譯爲組件)上(本例中是runs on EmptyComponentType,如果沒有寫runs on就是默認爲運行在Main Test Component上)
這裏我們需要定義EmptyComponentType組件,如下(這個Component的內容爲空)
先簡單介紹一下Component(組件)的概念
Component一般分爲兩種:MTC和PTC
MTC: Main Test Component,主測試組件,當測試用例執行的時候,測試執行環境(TTCN環境,這裏是TTXP)會自動創建一個MTC, 在測試運行過程,只會有唯一的MTC.如果沒有指明runs on某個Component,默認就是MTC; 在測試代碼中,不能控制MTC的建立與停止;
PTC: Parallel Test Component, 並行測試組件, PTC是由測試代碼控制的,可以創建,停止等.PTC的銷燬(release)是由系統自動完成的

測試組件之間的通訊是通過Ports來進行.PTC與MTC都可以與SUT(System Under Test,測試對象)通訊.
爲什麼要利用組件這個概念呢? 最大的好處就是可以用組件來模擬通訊網絡結點,
比如MSC(Mobile Switch Center)可以是一個組件, NodeB(基站)可以是一個組件, SUT是RNC(無線網絡控制器), 這三者之間消息的交互用測試用例來模擬, MSC與NodeB的組件可以設計爲PTC,作爲並行運行的進程,在MTC中調用這兩個PTC進行消息發送與回覆等操作.把每一個PTC想象爲一個網絡結點,測試環境就會清晰很多.
  1. type component EmptyComponentType {}
下面是一個含有兩個測試用例的測試套件:
  1. module Suite {
  2. type component EmptyComponentType {}
  3. testcase Hello() runs on EmptyComponentType
  4. {
  5.    log("Hello");
  6. }
  7. testcase GoodBye() runs on EmptyComponentType
  8. {
  9.    log("Good Bye");
  10. }
  11. control {
  12.    execute( Hello() );
  13.    execute( GoodBye() );
  14. }
  15. }
可以通過下面的命令來編譯運行
ttxp /run Suite


excute:執行

Module控制部分執行了兩個測試用例,所以結果是Hello 和Good Bye

如果你只想執行一個測試用例,用下面的命令
ttxp /run Suite Hello

這條命令僅僅運行Hello這個測試用例



TTCN-3模塊定義        module
其他模塊的定義引入    import
組定義            group
數據類型定義        type
通信端口定義        port
測試成分定義        component
特徵定義        signature
外部函數/常量定義    external
常量定義        const
數據/特徵模板定義    template
函數定義        function
可選步定義        altstep
測試例定義        testcase
變量聲明        var
定時器聲明        timer

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章