TTCN-3简介.

Slides:



Advertisements
Similar presentations
1 课程介绍 报告人:谢兆贤 2015/9/X. 2 纲要  课程设置  教学内容  教学设计  教学组织与实施  课程特色与创新  实验项目.
Advertisements

JAVA 编 程 技 术 主编 贾振华 2010年1月.
Network and Information Security
6.6 简单网络管理协议 SNMP 网络管理的基本概念
基本概論 Basic concepts.
第 4 章 PHP 基本語法.
新建本科院校 应用型人才培养若干问题探析 张德江.
Introduction 基本概念 授課老師:蕭志明
第一章 資料結構導論 1-1 資料結構簡介 1-2 認識程式設計 1-3 演算法效能分析 1-4 物件導向程式設計與Java.
C#程序设计案例教程 第3章 程 序 结 构.
第一章 C语言概述 计算机公共教学部.
南京理工大学 第2章 Java基本语法 本章我们将学习Java编程语言的基本语法,包括变量、操作符、表达式、语句、字符串、数组、控制流以及如何使用帮助文档。 使用下面的编程框架: public class Test{ public static void main(String []args){ //以下添加测试代码.
資料庫設計 Database Design.
Chapter 4 流程控制.
第二章 JAVA语言基础.
新世代計算機概論 第14章 程式語言.
VBA应用开发与实例 李 辉 微软课程培训讲师. VBA应用开发与实例 李 辉 微软课程培训讲师.
Core Switch 設定 Port的開啟與關閉 Virtual LAN建立 將Port指定到Virtual LAN
第八章 符号表 符号表的作用: 一致性检查和作用域分析; 辅助代码生成..
Chapter 模組 台灣師範大學數學系 黃聰明.
Introduction to the C Programming Language
程式設計 博碩文化出版發行.
Visual Basic 6.0 學習範本 第三章 基本資料型態.
第六章 結構型態 本書於2-2節已介紹若干基本資料型態,像是整數、實數、布林、字元及字串等,本章則針對一些進階的資料型態予以介紹,如陣列(Array)、記錄(Record)及集合(Set)。 6-1 陣列 6-2 動態物件變數與動態物件陣列 6-3 紀錄 6-4 集合.
PHP 5 入門基礎 第一個PHP 程式 PHP 資料型態.
Chapter 5 Verilog 硬體描述語言
Derived Class 前言 衍生類別的定義 單一繼承 public, protected, 和 privated 基底類別
安全网管技术 张焕杰 中国科学技术大学网络信息中心
第3章 變數、資料型別與運算子.
编译原理与技术 类型检查 2018/11/21 《编译原理与技术》-类型检查.
缺失測試 (Defect Testing) 測試程式讓系統的缺失呈現.
程式敘述執行順序的轉移 控制與重複、方法 Lecturer:曾學文.
Transact-SQL 語言設計教學.
本單元介紹何謂變數,及說明變數的宣告方式。
JAVA程序设计 第5章 深入理解JAVA语言----补充.
欢迎参加VHDL培训 VHDL培训教程 浙江大学电子信息技术研究所 电子设计自动化(EDA)培训中心
授课老师:龚涛 信息科学与技术学院 2018年3月 教材: 《Visual C++程序员成长攻略》 《C++ Builder程序员成长攻略》
Access VBA程序设计 本章重点 Access Basic编程语言 运算符、函数与表达式 Access Basic语句 模块的使用
第3章 變數、常數與資料型態 3-1 C語言的識別字 3-2 變數的宣告與初值 3-3 指定敘述 3-4 C語言的資料型態
Chapter 2 Basic Elements of Fortran
第3章 變數、資料型別與運算子 3-1 變數與資料型別的基礎 3-2 變數的命名與宣告 3-3 資料型別 3-4 運算式與運算子
6 第 六 章 软件测试.
新觀念的 VB6 教本 第 6 章 資料型別.
陳慶瀚 機器智慧與自動化技術(MIAT)實驗室 國立中央大學資工系 2013年5月28日
第4章 常量和变量 常量和变量都是程序中预留的用于保存数据的内存空间。常量的值在程序运行过程中始终不会发生变化。而变量的值在程序的运行过程中是可以变化的。在Fortran语言中,有五种基本的数据类型可供使用。他们分别是整型(INTEGER)、实型(REAL)、复型(COMPLEX)、字符型(CHARACTER)和逻辑型(LOGICAL)。按用途,又可以分数值型、字符型和逻辑型三种。相应的常量和变量也可以分为这三种。本章将按照用途介绍常量和变量的基本概念。
2019/1/17 Java语言程序设计-程序流程 教师:段鹏飞.
Java程序设计 第2章 基本数据类型及操作.
編譯程式設計 期末專題說明 V1.1 May 2004.
第六章 VHDL设计共享.
第一次上机安排 第六周 第七周 周一晚(提高1、2,通信001~012) 周二上(通信014~085) 周四上(通信086~154)
第3章 Java語法的JSP程式 3-1 Java語言的基礎 3-2 JSP程式的基本架構 3-3 Java的變數與資料型態
《JAVA程序设计》 语音答疑 辅导老师:高旻.
Case 工具-UML with Rational Rose
第二章Java基本程序设计.
第二章、第三章错题分析.
保留字與識別字.
第二章 Java基本语法 讲师:复凡.
<编程达人入门课程> 本节内容 为什么要使用变量? 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ:
第二章 Java语法基础.
本节内容 Lua基本语法.
第11章 物件互動行為塑模.
#include <iostream.h>
第二章 Java基本语法 讲师:复凡.
Go 语言编程 —— 平台研发部 吴植民.
本章主題 C++的程式結構 資料型態與宣告 算術運算 簡易的輸入輸出指令 程式編譯(Compile)的過程與原理.
第2章 Java语言基础.
第6章 PHP基本語法介紹.
PASCAL语言 吉林大学计算机科学与技术学院.
第 20 章 ActionScript 指令與語法.
臺中市政府警察局 烏日分局 主講人:副分局長 蔡期望 時 間:105年9月10日.
Presentation transcript:

TTCN-3简介

简介 本胶片介绍了使用TTCN-3进行测试的系统架构,重点讲述了TTCN-3的语法和特性,最后介绍如何使用TTCN-3集成开发工具GTR进行TTCN-3测试套的开发。希望对准备在开发环境GTR下进行TTCN-3测试套开发的测试人员有所帮助。

TTCN-3概述

TTCN-3 TTCN-3:测试与测试控制记法(Testing and Test Control Notation-Version3), TTCN-3是 由ETSI(欧盟通讯标准研究院)所设计,并公布成为ETSI ES 201 873系列之标准文件,以及ITU-T(国际通讯联盟)的ITU-T Rec. Z.140系列之标准文件。 标准化的测试描述和测试实现语言。 TTCN-3具有更精准的测试逻辑语法,可以描述更复杂的测试行为; TTCN-3可用于多种类型的测试,包括符合性测试(Conformance Testing)、互操作性测试(Interoperability Testing)、健全性测试(Robustness Testing)、回归测试 (Regression Testing)、系统和整合测试(System and Integration Testing)、以及负载测试(Load/Stress Testing)。

TTCN发展 TTCN-1概念始于80年代中期,主要应用于OSI体系协议一致性测试。

TTCN-3主要特性 描述动态并发测试配置的能力; 基于过程的操作和基于消息的通信; 描述编码信息和其他属性(包括用户扩展性)的能力; 描述数据和带有强有力的匹配机制的属性模板的能力; 类型和值的参数化; 赋值和测试判定的处理; 测试套参数化和测试例选择机制; TTCN-3和ASN.1的结合 良好定义的语法,格式的互换以及静态语义; 不同的表示格式(如:表格和图形表示格式,目前暂不支 持);

TTCN-3语法介绍

基本概念 基本概念-测试组件: 抽象测试系统接口(ATSI),也可以叫系统测试组件(STC) 主测试组件(MTC) 并行测试组件(PTC) 共有三种类型测试组件: 抽象测试系统接口(ATSI),也可以叫系统测试组件(STC) 主测试组件(MTC) 并行测试组件(PTC)

基本概念-通信端口 基于消息通信的端口 基于过程通信的端口 混合型端口 通过端口完成测试组件之间的通信 每个通信端口被抽象成一个先入先出队列 端口(port)具有方向性(in,out, inout) 支持三种端口类型: 基于消息通信的端口 基于过程通信的端口 混合型端口

基本概念-动态测试配置 创建组件 启动组件 并发执行

基本概念-动态测试配置 连接端口 映射端口

基本概念-测试判决 测试判决:none < pass < inconc < fail < error 每一个测试组件可以设置(setverdict)或者获取(getverdict)自己的局部判决。 测试用例中止执行时,返回一个全局的判决。 全局判决由各个测试组件的局部判决决定。

TTCN-3测试套结构 Module (…) Module Definitions Module Control Attributes 模块(Module)是TTCN-3的基本构造块。 一个模块由定义部分(可选的)和一个模块控制部分(可选的)组成。 通常所说的一个测试套就是一个模块。 模块可以参数化(跟TTCN Runner中的赋值一致)。 一个模块可以从其他模块中引入定义。 模块可以定义属性(Attributes)。 Attributes Module (…) Module Control Module Definitions

模块定义部分

模块定义 所有定义在整个模块中都是全局的。 Test Cases Named Alternatives Functions Test Components Communication Ports Signature Templates Data Templates RP Signatures Constants Data Types 模块定义 所有定义在整个模块中都是全局的。 类型定义(Data Types)都是基于预定义类型和结构类型(包括从其他非TTCN-3语言ASN.1定义中引入的类型) 模板(Templates)和原型(Signature) 定义测试数据。 端口(ports)和 测试组件(Components) 在动态测试配置过程中使用。 函数(Functions),测试步(Altsteps),测试用例(testcase)用来定义测试行为。

TTCN3数据类型定义 简单基本类型 基本串类型 结构类型 特殊数据类型 特殊配置类型 特殊默认类型 类型 关键字 Sub-type integer range, list char universal char float boolean list objid verdicttype 基本串类型 bitstring list, length hexstring octetstring charstring range, list, length universal charstring 结构类型 record,set record of,set of enumerated union 特殊数据类型 anytype 特殊配置类型 address,port,component 特殊默认类型 default

数据类型定义-整型 /* 整型范围约束定义 */ type integer MyIntegerRange (1 .. 100) type integer MyIntegerRange (0 .. infinity) /* 整型列表约束定义 */ type integer MyIntegerList (1 , 2, 3, 4) /* 混合约束定义 */ type integer MyIntegerListAndRange (1 ..5, 7, 9)

数据类型定义-结构类型 // record 结构类型定义 type record MyMessageType { integer field1 optional, boolean field2 } // record 值定义 var MyMessageType MyMessage := { field1 := 1, field2 := true // 单独的域赋值 MyMessage.field2 := false

数据类型-与ASN.1类型兼容 ASN.1 类型 等效的TTCN-3类型 BOOLEAN boolean INTEGER integer REAL (note1) float OBJECT IDENTIFIER objid BIT STRING bitstring OCTET STRING octetstring SEQUENCE record SEQUENCE OF record of SET set SET OF set of ENUMERATED enumerated CHOICE union VisibleString char(note2), charstring IA5String UniversalString universal char(note2), universal charstring 数据类型-与ASN.1类型兼容

数据定义-模板 模板(Templates)用于传送一个特定值的集合或是测试接收的值的集合是否与模板说明匹配。 模板具有以下特性: 模板可继承,便于组织数据和重复利用数据 模板能够被参数化 模板允许定义匹配机制,经常被使用来定义可能接收消息的值或者可能的远程调用过程响应 模板同时支持基于消息的通信和基于过程的通信 模板支持简单类型和复合类型

数据定义-模板匹配机制

数据定义-参数化模板 // 参数化模板 template MyMessageType MyMessage (integer MyPar) := { field1 := MyPar, field2 := true, field3 := ‘110011’B } // 模板调用 P1.send(MyMessage(1));

数据定义-模板继承 template MyMessageType MyMessage1 { field1 := 123, field2 := true } template MyMessageType MyMessage2 modifies MyMessage1 { field2 := false // 等效下面的写法 template MyMessageType MyMessage3 field2 := false

动态测试配置 动态测试配置-测试组件 测试组件(Test Component)是测试行为执行的实体(并行)。 测试组件的声明都是局部的。 测试组件必须包含一个通信端口列表。 在测试执行过程中是通过create,connect,map等操作来完成动态测试配置的。 Test Component Local Declarations Ports Used

动态测试配置-通信端口定义 // 基于消息的端口定义 type port MyMessagePortType message { in MsgType1, MsgType2; out MsgType3; inout integer } // 基于过程的端口定义 type port MyProcedurePortType procedure out ProcedureSignature1, ProcedureSignature2

动态测试配置-测试组件定义 // 测试组件类型定义 type component MyComponentType { // 局部变量声明 { // 局部变量声明 var integer MyVar; timer MyTimer; // 测试组件使用的端口列表 MyMessagePortType P1, P2; MyProcedurePortType P3 }

测试行为描述 测试行为描述-函数 函数是描述测试行为的基本块。 函数包含局部变量声明和程序部分。 函数既可以只完成测试系统内部的任务,也可以通过send 和receive 与被测系统进行交互。 支持外部函数(可扩展)。 支持部分类型转换的预定义函数。 Function ( . . . ) Local Declarations Program Part

预定义函数 预定义函数提供了TTCN-3内部类型之间的转换功能以及字符串操作功能。

// 函数可以带参数,参数具有几种属性: in, out, inout . 默认属性是in。 function MyFunction (in integer MyPar) { : } // 函数可以带返回值,默认为void function MyFunction return integer

// 纯功能函数,没有涉及到端口操作。 function MyFunction { : } // 函数使用指定类型组件中的端口进行通信操作 function MyFunction runs on MyPTC PCO1.send(1);

测试行为描述-测试用例 测试用例可以认为是特殊的能够在模块控制部分执行的函数。 接口部分(runs on子句)指定了测试用例所运行的MTC的组件类型。 系统部分(system子句)指定了测试用例中需要使用的测试系统接口组件类型。 System部分可以省略,默认和MTC类型一致 Test Case ( . . . ) Interface Part System Part Behaviour Part

testcase MyTestCase() runs on MyMTCType system MyTestSystemType { : // 定义测试行为 } // 该用例只有包含MTC,没有涉及系统接口操作 testcase MyTestCase()runs on MyMTCType

测试行为描述-基本编程语句

测试行为描述-动态测试配置

// 定义一个组件类型变量 var MyComponentType MyPTC; // 创建指定类型的组件,返回组件引用 MyPTC:= MycomponentType.create // connect连接操作用来完成测试系统内部组件之间的通信 connect(MyPTC:P1, mtc:P1) // map映射操作用来完成测试组件与抽象测试接口之间的通信 map(MyPTC:P2, system:PCO)

测试行为描述-选择性行为 选择性行为由alt语句来完成。 S1 S3 S6 S2 S4 S7 S5 S8 S9 S10 S1; alt {[ ] S3; S6; [ ] S2; alt { [ ] S4; S7; [ ] S5; S8; alt { [ ] S9; [ ] S10; }

测试行为描述-alt语句执行示意图 alt guard1 event1 actions1 guard2 event2 actions2 布尔防卫表达式(可能为空,但是不能省略) 可能触发的事件 需要执行的操作语句 每进入一个alt语句时,就会照一张快照 alt guard1 event1 actions1 guard2 event2 actions2 guardn eventn actionsn

测试行为描述-可选步 可选步(Altsteps)用来描述默认行为,或构造一个alt语句的选择对象。 可选步可以调用函数和可选步,或作为默认来激活可选步。 可选步的调用可以通过默认机制隐式地完成,或是通过在alt的一个直接调用显式的完成。 对于借助于默认机制的可选步的一个隐式调用,在到达调用位置之前,必须通过activate语句将该可选步激活为一个默认。 独立的可选步的调用可以认为是仅带有一个描述显式调用该可选步的选择对象的alt语句的简写。

Altstep MyAltstep (in integer var1) runs on MyComponentType { [] MyPort.receive(MyMessage1) { setverdict(pass); } [] MyPort.receive(MyMessage2) { repeat; [] MyTimer.timeout { stop;

//在alt语句中可选步的显示调用。 Alt { [] MyPort.receive(MyMessage1) { setverdict(pass); } [] MyAltstep(1) ; [] MyTimer.timeout { stop;

//独立调用的可选步 MyAltstep(1) ; //等效于 Alt { [] MyAltstep(1) ; }

// 一个可选步激活为默认 var default MyDefVarTwo := activate(MySecondAltStep()); // 该组件在此区间的所有alt语句都会在分支没有被选中的情况下会执行默认可选步。 // 一个默认可选步去激活 deactivate(MyDefVarTwo); // 此后的所有alt语句都会在分支没有被选中的情况下不会执行默认可选步。

测试行为描述-定时器

// 启动,停止,读取定时器 MyTimer.start(20E-3);// 默认的时间单位是s MyTimer.stop; MyVar := MyTimer.read; // 检查定时器是否还在运行 if (MyTimer.running) { … } // 定时器超时 Alt { [] MyTimer.timeout }

模块控制部分

Local Control Declarations 模块控制部分 测试例定义在模块定义部分,而模块控制部分管理它们的执行。 在每个测试例启动时,测试配置将被重新设置。 如果要在行为定义中使用定义在一个模块控制部分的所有的变量、定时器等,应该通过参数化来将它们传入测试例,没有全局变量的概念。 可以使用布尔表达式选择和去选择要执行的测试例。 Control Local Control Declarations Test Case Execution

// 执行MyTestCase1,不存储返回的测试判定和时间监管 execute(MyTestCase1()); // 执行MyTestCase2,把结果判定存储在变量MyVerdict中 MyVerdict = execute(MyTestCase2()); // 执行MyTestCase3,把结果判定存储在变量MyVerdict中,如果测试例在500ms内没有终止,MyVerdict将得到值'error‘. MyVerdict = execute(MyTestCase3(),0.5);

// 测试用例多次执行。 while (x<10) { x:=x+1; execute(MyTestCase()); } // 在特定的条件下,测试用例执行。 if (MySelectionExpression) execute(MyTestCase()) ;

TTCN3测试套开发

TTCN-3测试系统组成 测试管理器 :工程管理,用例管理, 脚本编辑,日志输出 测试执行环境:脚本编译执行 被测系统适配器:测试执行环境与被测系统间的通信适配 编解码器:BER,PER,SIP ABNF,XML编解码 平台适配器:用户自定义扩展函数实现

测试构架

TTCN-3进行测试的开发步骤 用TTCN-3或其它语言(如ASN.1)描述测试数据。 用TTCN-3描述测试逻辑,生成抽象测试套。 开发适配器模块。 开发编解码模块(已经支持BER,PER,部分XER,HW自定义TLV编码方式)。 开发外部函数库(如果有特殊需要)。 执行抽象测试套,输出测试报告。

TTCN-3脚本构架

现场实例讲解

小结 本课程主要介绍了TTCN-3语言,以及如何在GTR上进行测试套开发的过程,同时介绍了目前TMC所开发的TTCN-3脚本结构,希望可以对大家使用GTR开发测试用例有所帮助。

ANY QUESTIONS?