GB/T26857.1-2011

信息技术开放系统互连测试方法和规范(MTS)测试和测试控制记法第3版第1部分:TTCN-3核心语言

Methodsfortestingandspecification(MTS)-Thetestingandtestcontrolnotationversion3-Part1:TTCN-3corelanguage

本文分享国家标准信息技术开放系统互连测试方法和规范(MTS)测试和测试控制记法第3版第1部分:TTCN-3核心语言的全文阅读和高清PDF的下载,信息技术开放系统互连测试方法和规范(MTS)测试和测试控制记法第3版第1部分:TTCN-3核心语言的编号:GB/T26857.1-2011。信息技术开放系统互连测试方法和规范(MTS)测试和测试控制记法第3版第1部分:TTCN-3核心语言共有180页,发布于2011-11-01
  • 中国标准分类号(CCS)L79
  • 国际标准分类号(ICS)35.100
  • 实施日期2011-11-01
  • 文件格式PDF
  • 文本页数180页
  • 文件大小2.22M

以图片形式预览信息技术开放系统互连测试方法和规范(MTS)测试和测试控制记法第3版第1部分:TTCN-3核心语言

信息技术开放系统互连测试方法和规范(MTS)测试和测试控制记法第3版第1部分:TTCN-3核心语言


国家标准 GB/T26857.1一2011 信息技术开放系统互连测试方法和 测试和测试控制记法 规范(MIS 第3版第1部分:TICN-3核心语言 nfrmatomtecthmoue-Opeystmsinteroomctiom一Methodstortetng andspeeifticeation(MIs)一Ihetesttngandtelcntrolntation Version3一Part1:TTCN-3corelanguage 2011-07-29发布 2011-11-01实施 国家质量监督检验检疫总局 发布 国家标准化管理委员会国家标准
GB/T26857.1一2011 目 次 前言 范围 规范性引用文件 术语和定义 缩略语 引论 基本语言元素 类型和值 13 模块 28 测试配置 40 10对常量的声明 48 48 对变量的声明 1 l 对定时器的声明 48 13 对消息的声明 49 49 14声明特征标记 5d 对模板的声明 15 16 运算符 58 6 17 函数和备选步 测试用例 l 69 程序语句和操作的概览 19 70 20基本程序语句 72 7" 21 行为性程序语句 2 默认处理 84 87 28 配置操作 通信操作 24 93 25 定时器操作 107 110 26 测试判定操作 27 11 外部动作 28模块控制部分 112 29规定的属性 114 附录A规范性附录巴克斯-诺尔形式(BNF)和静态语义 20 附录B(规范性附录)匹配人值 147 154 附录C规范性附录TTCN-3预定义函数 附录D(规范性附录)其他类型与TTCN-3一起使用 162 附录E(资料性附录)有用的类型库 171 174 参考文献
GB/T26857.1一2011 前 言 GB/T26857《信息技术开放系统互连测试方法和规范(MTS)测试和测试控制记法》由下列 几部分组成 -第1部分:TTCN-3核心语言 第2部分:TTCN-3表格表示格式; 第3部分;TTcN-3图形表示格式 第4部分TTCN:3操作语义; 第5部分:TTCN3运行时接口(TRD 第6部分;TTcN3控制接口(Tc. 本部分为GB/T26857的第1部分 本部分参考了ETslES201873-1v2.2.1《测试方法和规范 渊试和测试控制记法第3版第1 部分:TTCN-3核心语言》 本部分按照GB/T1.1-2009给出的规则起草 请注意本文件的某些内容可能涉及专利 本文件的发布机构不承担识别这些专利的责任 本部分由全国信息技术标准化技术委员会(SAC/Tc28)归口 本部分起草单位电子技术标准化研究所 本部分主要起草人;杨宏,郝丹丹,卓兰、付晓宇,张晖、郭楠、徐全平、徐冬梅、张翠,董挺、韩丽

GB/T26857.1一2011 信息技术开放系统互连测试方法和 规范(MIS)测试和测试控制记法 第3版第1部分:TTCN-3核心语言 范围 本部分规定了TTCN第3版(即TTCN-3)核心语言 TTCN-3可作为各种通信端口上全部类型 的反应系统测试的规范 典型的应用领域有协议测试(包括移动协议和互联网协议服务测试(包括增 补服务)、模块测试,基于cORBA平台的测试、AP1等 TTCN-3不限于符合性测试,而能用于许多其 他种类的测试,包括互操作性测试、健壮性测试,回归测试、系统和集成测试 对物理层协议的测试套规 定不在本部分的范围之内 TTCN-3旨在用作独立于测试方法、层和协议的测试套的规定 TTCN-3定义了各种表示格式,如 表格表示格式和图形表示格式 这些表示格式的规定不在本部分范围之内 本部分定义了ASN.1使用的一个规定性方式,正如GB/T16262.1一2006标准中定义的一样 其 他语言与TTCN-3的协调使用不在本部分研究范围之内 TTCN-3的设计虽然已经考虑到TTCN-3翻译器和编译器的最终实现,但从抽象测试套(ATS)到 可执行测试套(ETS)的实现手段超出本部分的范围 规范性引用文件 下列文件对于本文件的应用是必不可少的 凡是注日期的引用文件,仅注日期的版本适用于本文 件 凡是不注日期的引用文件,其最新版本(包括所有的修改单)适用于本文件 GB/T1988一1998信息技术信息交换用七位编码字符集 GB/T5261199!信息技术七位和八位编码字符集的控制功能 GB/T16262.12006信息技术抽象语法记法一(AsN.1)第1部分;基本记法规定 GB/T16262.2一2006信息技术抽象语法记法一(AsN.1第2部分;信息客体规定 GB/T16262.32006信息技术抽象语法记法一(AsN.1第3部分;约束规定 -2006信息技术抽象语法记法一(AsN.1第4部分;AN.1规定的参数化 GB/T16262. GB/T16263.12006信息技术AsN.1编码规则第1部分;基本编码规则(BER)、正则编码 规则(CER)和非典型编码规则(DER)规定 GB/T16263.2一2006信息技术AsN.1编码规则第2部分紧缩编码规则(PER)规定 信息技术开放系统互连 -致性测试方法和框架第1部分;一般概念 GB/T17178.l1 1997 信息技术开放系统互连0sI登记机构的操作规程第1部分一般规程 GB/T17969.12000 -致性测试方法和框架第3部分;数和表组 IsO/IEC9646-3:1998信息技术开放系统互连 合记法(TTCN ISO/IEC10646信息技术通用多八位编码字符集(UCS ITU-T建议T.100(1988)交互图文的国际信息交换 ITU-T建议T.101(1994)交互服务的国际互通 ETSIES201873-2(V2.2.1测试和规定方法(MTS)测试和测试控制记法第3版第2部
GB/T26857.1一2011 分:TTCN-3表格表示格式(TFT) ETSITR101873-3(V1.1.2)测试和规定方法(MTS)树和表组合记法第3版第3部分 TTCN-3图形表示格式(GFT 术语和定义 GB/T17178.1一1997,Iso/IEc9646-3中界定的以及下列术语和定义适用于本文件 3.1 实参actualparameter 在调用处定义的,作为参数传递给被调用实体(函数、测试用例备选步等)的值、模板或名称引用 标识符). 注:在单一的启用中所传递的所有实参的数目、顺序和类型,应与被调用实体中定义的形参清单一致 3.2 基本类型basictypes 本部分的7.2.1和7.2.2中所描述的预定义的TTCN-3类型的集合 注:基本类型集通过其名称加以引用 3 3 atible 兼容类型compat etype 与 iTTCN-3类型兼容的类型 TTCN-3虽不是强制类型的,但确实要求类型兼容性 注:当7.8中的条件得到满足时,变量、常量、模板等即具有兼容类型的特征 comunication 通信端口 port 便于测试组件之间通信的抽象机制 注,通信端口在接收方向建模化为一个先进先出(FIFO)队列 端口可基于消息的,基于过程的或这二者的混合 3.5 数据类型datlaype 单一的基本类型,基本串类型,结构化类型、专用数据类型以及基于以上类型而由用户定义的全部 类型的统称(见表3). 3.6 已定义的(ICN-3)类型defined(IICN-3)types TTCN-3预定义的全部类型(基本类型,所有结构化类型、任何类型(anytype)类型,地址类型、端口 类型,组件类型和默认类型)以及在所用模块中声明的或从另一TTCN-3模块中引人的用户定义的全 部类型的集合 3.7 ameterization 动态参数化dynamicpare 其中实参依赖于运行时事件的一种参数化 例如实参的值是在运行期间接收的值或依赖于通过逻 辑关系接收的值 3.8 异常exception 在基于过程的通信的情况下,当一个回复实体对远程过程调用出现不能以正常期望的响应来回答 时的条件(如果已经定义) 33 9 形(式)参(数 formalparameter 不是在定义一个实体(函数、测试用例、备选步等)时,而是在对其启用时进行解析的值或模板的名
GB/T26857.1一2011 称引用(标识符) 注:从启用该实体处传递在形参的位置所用的实际的值或模板(或其名称》. 全局可见slobalvtibility 实体(模块参数、常量、模板等)的属性,可以在定义实体的模块中任意位置引用该实体的标识符,包 括所有函数,测试例以及定义在相同模块的备选步和该模块的控制部分 3.11 实现一致性声明ImplementationConforanceStatement ICS 由声称与所给规范一致的实现或系统的提供者所做的声明,陈述已实现了哪些能力 ICS可有以 下诸表:协议ICS,轮廓ICs,轮廓特定ICS和信息客体ICS 3.12 测试实现附加信息ImplementationextraInformationforIestimg IxI 由IUT的提供者或实现者所做的陈述,它包含或引用了与IUT及其测试环境有关的全部信息 (CS给出的信息除外),该陈述使测试实验室能对IUT运行适当的测试套 一份IXIT可以有以下诸 表;协议IXIT、轮廓IXIT、轮廓特定IXIT和信息课题IXIT,TMP实现声明 3.13 被测实现ImplementatiomUinderTest IUT 具有相邻用户/提供者关系的一个或多个OsI协议的一种实现,这种实现将作为开放式系统的 部分通过测试进行研究 3.14 已知类型kwwnypes 已定义类型集,引人了ASN.1和其他外部类型 15 本地可见localvisibility 实体(常量,变量等)的属性,实体标识符仅能在其被定义的函数,测试例或备选步内部被引用 3.16 主测试组件MainTestc omponent MTC 测试组件配置中单个测试组件负责建立和控制并行测试组件并计算和分配测试判定 3.17 按值引用passingparameterbyvalue 在可参数化的实体进人之前变量被评估的传参方式 注仅变量值被传递且被调用实体内的变量的变化在调用方看来对实际变量无影响 3.18 按引用传参passingparameterbyreference 传参方式,变量在函数、备选步等进人之前未被评估,且对参数的引用通过调用程序向被调用程序 传递 注:被调用程序内部的变量的变化在调用方看来对实际参数有影响 3.19 并行测试组件ParallelIestComponent PIc 主测试组件创建的测试组件
GB/T26857.1一2011 3.20 根类型 r0ottype 可被追溯的用户定义的TTCN-3类型那个基本类型,结构化类型,特殊数据类型,特殊配置类型或 特殊默认类型 注;考虑到基于引人的ASN.1类型的类型,跟类型有相关的TTCN-3类型来决定(见D.1.3) 3.21 静态参数化statieparameterizaton 参数化的种类,其中实际参数独立于运行时时间;如在编译时得知或以防在测试套执行开始得知模 块参数(如,从测试套规范中得知,此处计算引人的定义,或测试系统在执行时间之前得知其值. 3.22 强分类strongtyping 通过类型名严格实施无异常的类型兼容 3.23 被测系统systemUnderTest SUT IUT所在的开放实系统 注:所有的类型在编译时被得知,如静态绑定 3.24 模板template TTCN-3模板时测试的特定数据结构;用于发送不同值的集合或检查接收到的值的集合是否匹配 模板规范 3.25 测试例 testcase 抽象或可执行的测试例 注:一般来讲,本部分的“测试”一词只表示一般的意义,有时也可以作为抽象测试例或可执行测试例的简称 上下 文应使意思明确 3.26 测试例错误 testcaSeerr0r 用于描述在测试例自身发现错误时测试例执行结果 3.27 测试套testsuite 引人完整规定所有定义和必要的完整定义测试例集合的行为描述的声明的显示或隐式的TTCN-3 模块 28 33 测试系统testsystem 包括下测试器实现的实系统 注,统一测试系统可用作多个测试工具的一部分 3.29 interface 测试系统接口 testsystemm 提供在(抽象)TTCN-3测试系统中可用端口到实测试系统提供的端口的映射的测试组件 3.30 测试兼容性 语言特征,允许使用给定类型的值或模板为另一类型的实际值(如,在分配时,作为在调用函数时的
GB/T26857.1一2011 实际参数,参考模板等,或作为函数返回值) 注:值或模板的类型和当前值应与其他类型兼容 3.31 值参数化 作为实际参数的对象值或模板传递到参数化对象的能力 注,该实际值参数然后完成该对象的规范 3.32 用户定义的类型 基本类型的图表类型定义的类型,声明一个结构化的类型或用点符号限制任意类型为单类型 注:用户定义的类型被其标识符(名称)所引用 3. .33 值符号 valuenotation 标识符与给定值或特定类型范围相关联所用的符号 注:值可为常量或变量 缩略语 应用程序接口 API ApplicationProgrammingInterface 抽象语法记法 AsN .1 AbstractSyntaxNotationO)ne) AS" 抽象服务原语 AbstractServicePrimitive ATs 抽象测试套 AbstractTestSuite) 巴科斯-诺尔范式 e (Backus-NauerForm 公用对象请求代理程序体系结构(CommonObjectRequestBrokerArchitecture) m 可执行的测试套 ExecutableTestSuite) 先进先出 (FirstlInFirstOut) 接口描述语言 InterfaceDescriptionLanguage 在测实现 lmplementationUnderTest e 主测试组件 MasterTestComponent U 协议数据单元 (ProtocolDataUnit) Te 并行测试组件 ParallelTestComponent) Pcs(协议)实现符合性声明 (Protocol)lmplementationConformanceStatement) P)IXIT测试用(协议)实现附加信息 ((ProtocolmplementationeXtralnormationforTesting SUT 在测系统 (systemUnderTes) 测试和测试控制记法 TTCN TestingandTestControlNotation) 引论 5.1概述 TTCN-3核心语言是一种灵活和强有力的语言,适用于各种通信接口上的全部类型的反应的系统 测试的规定 所适用的典型领域有协议测试(包括移动和互联网协议服务测试(包括补充服务,模块 测试,基于cORBA平台的测试API测试等 TTCN-3并不仅限于符合性测试,而能用于许多其他种 类的测试,包括互操作性测试,健壮性测试、回归测试、系统和集成测试 从句法的角度看,TTCN-3与在IsO/IEC9646-3中定义的该语言的早期各版本有很大区别 不
GB/T26857.1一2011 过,TTCN的业已证实的基本功能系统大多予以保留,并在某些方面得到增强改进 TTCN-3包括以 下重要特性: 规定动态并发测试配置的能力; a b 基于过程和基于消息的通信的操作 规定编码信息和其他属性(包括用户可扩展性)的能力; c D 规定带有强有力匹配机制的数据和特征标记模板的能力; 类型和值的参数化 测试判定的赋值和处理 测试套参数化和测试用例选择机制; g h)TTCN-3与ASN.1的结合使用以及与其他语言例如IDL的潜在使用) 良好定义的句法,互换格式以及静态语义; 不同的表示格式如;表格的和图形的表示格式) k)精确的执行算法(操作语义) 5.2核心语言和表示格式 TTCN通常和符合性测试关联在一起 为了在标准和行业两个领域都把该语言的应用范围扩展 到更为广泛的测试应用范围,本部分将TTCN3的规定分为以下儿个部分本部分为第部分,定义 rTCN-3核心语言;第2部分是TTCN-3表格表示格式,在外观和功能系统两方面都与TTCN的早期 版本相似;第3部分是TTCN-3图形表示格式;第4部分包含了TTCN3的操作语义;第5部分为 TTcN3运行时接口(TRI);第6部分为TTcN3控制接口(Tc) 其中核心语言及各种标识格式的 视图如图1所示 ASN1类型和值 表格格式 其他类型 TTCN-3 图形格式 和值, 核心语言 TTcN-3用户 阴影部分不在本文中定义 其他类型 表示格式, 和值 , 图1对核心语言和各种表示格式的视图 本核心语言有3个目的: 作为广义的基于文本的测试语言; b)作为TTCN工具之间TTCN测试套的标准化互换格式; 作为各种表示格式的语义基础如果适合,也是句法基础) c 本核心语言可独立于表示格式使用 但是,表格格式和图形格式均不能脱离核心语言使用 这些 表示格式的使用和实现均应以本核心语言为基础 在不同表示格式预期集合中,表格格式和图形格式是首要的,其他格式可以是标准化的表示格式 也可以是由TTCN-3用户自行定义的专有表示格式 本部分中不定义这些附加格式 TTCN-3与ASN.1完全协调,后者可以与TTCN-3模块可选地一起使用,作为一种替换的数据类 型和值句法 在TTCN-3模块中采用ASN.1在本部分的附录D中定义 将TTCN-3与ASN.1相结 合的办法有可能应用于支持其他类型的和值的系统与TTCN-3的一起使用 然而,本部分并不定义后
GB/T26857.1一2011 者的细节 TTCN-3核心语言由一种完全的句法(见附录A)和操作语义(见第4部分)定义 出于一些基础性 应用领域或方法体系上的考虑,它包含不限制本语言使用的最低限度静态语义(本部分正文部分及 附录A中给出) 使用专有工具所能获得的测试套索引等TTCN以前各版本的功能系统,不属于 TTCN-3的组成部分 规范的一致性 本语言借助于当前版本主体中的文本性描述(第6章至第29章)以及附录A中的形式化方法,从 句法上和语义上加以规定 每当文本性描述未穷举时,均以形式化描述完成 当文本规定和形式规定 发生矛盾时,应以形式化规定为准 5.4符合性 本部分对本话言的实现级别木作规定 但是,对一个声称符合TcN》话言的实现来说,本部分 所有已实现的特征均应与本部分给出的要求一致 注;这不妨碍添加在当前版本规定中未规定的额外特征的具有符合性实现 基本语言元素 1 6. 概述 TTCN-3的顶层单元是模块 模块中不能构造成子模块,但能从其他模块中移人定义 模块可具 有参数清单以便给出测试套参数化的形式,这与TTCN-2的PICS和PIXIT参数化机制相似 模块由定义部分和控制部分组成 模块的定义部分定义测试组件,通信端口,数据类型,常量,测试 数据模板,函数、端口上过程调用的特征标记、测试用例等 TTCN-3语言元素的情况如表1所示 模块的控制部分调用测试用例并控制其执行 控制部分也可以声明局部)变量等,程序语句(如 ifelse和do-while)能用于规定各个测试用例的选择和执行顺序 TTCN-3不支持全局变量的概念 TTcN3有许多预定义的基本数据类型和结构化类型,如记录.集合,联合.枚举类型和数组 的AsN.1类型和值可与TTCN-3一起使用 -种称为模板的特定的数据结构为规定在测试端口上发送的或接收的测试数据提供参数化和匹配 机制 在这些端口上的操作提供基于消息的和基于过程的两种通信能力 过程调用可用于不基于消息 的测试实现 动态测试行为表达为测试用例 TTCN3程序语句包括强有力的行为描述机制,如通信和定时器 事件的替换性接收、交叉和默认行为 TTCN-3也支持测试判定赋值和日志机制 最后,可以为TTcN-3语言元索指派诸如编码信息和显示属性等属性 也可能规定(非标准化的 用户定义的属性 表1TIcN-3语言元素概览 是否是在函数/ 是否是在测 是青是在模块定是否是在模块控 关联的关键字 语言元素 备选步/测试用试组件中 义中规定的 制中规定的 例中规定的 规定的 TTcN-3模块定义 m0dule 从其他模块移人定义 imp0rt 定义分组 是 group
GB/T26857.1一2011 表1(续 是否是在丽数 是否是在测 是否是在模块定是否是在模块控 语言元素 关联的关键字 备选步/测试用试组件中 义中规定的 制中规定的 例中规定的 规定的 数据类型定义 是 type 通信端口定义 是 port 测试组件定义 是 compnent 特征标记定义 是 signature 外部函数/常量定义 external 是 是 是 常量定义 const 数据/特征标记模板定义 是 template 丽数定义 是 function 备选步定义 altstep 是 测试用例定义 是 testcase 是 变量声明 Var 是 是 定时器声明 timer 是 2 语言元素的定序 o 通常,能作出声明的顺序是任意的 在一个语句块和声明块中,如函数体或ifelse语句的分支中 所有的声明(如果有)均应只在所在块的开始处进行 示例: /这是一个TTcN3声明的合法混 varMyVarTypeMyVar2;=3 constintegerMyConst:=l; if(x 107 MyVarl;=l; varinteger! MyVarl;=MyVarl十10 模块定义部分中的定义可以按任何顺序给出,但出于可读性原因,应避免向前引用,不过这并不是 强制性的 例如,调用其他函数和模块参数化的函数等递归元素就可能导致不可避免的向前引用 向前引用只允许在模块定义部分来声明,而决不应在模块的控制部分、测试用例定义,丽数和备选 步中作出 这就意味着对局部变量,局部定时器和局部常量,绝不应出现向前引用 对这个规则的仅有 的例外是标签 在goto语句中也许用到对于标签的向前引用,以便跳转到前面(见20.6) 3 6 参数化 6.3.1静态参数化和动态参数化 TTCN-3按以下限制支持值的参数化:
GB/T26857.1一2011 不能参数化的语言元素有;const,var,timer,control、group和import; a 语言元素模块允许静态的值参数化以支持测试套参数,也就是说,在编译时这个参数化既可以 是可解析的也可以是不可解析的,但是它应在运行开始时被解析即在运行时是静态的),这就 意味着在运行时模块的参数值是全局可见的,但是不能更改; 所有用户定义的类型定义(包括结构化的类型定义,如record,set等)和专用的配置类型地址 支持静态值的参数化,即此参数化应在编译时进行解析; 语言元素template,signature,testcase,altstep和funetion支持动态的值的参数化(即此参数 化应在运行时进行) 表2给出了哪些语言元素能加以参数化以及什么能作为参数向其传递的小结 表2TTCN-3可参数化的语言元素概览 关键字 值参数化 在形参与实参清单中允许出现的值的类型 module 在运行开始时,静态 所有基本类型、所有用户定义类型和address类型的值 e(注1) 所有基本类型,所有用户定义类型和addres类型的值 在编译时,静态 ypel 所有基本类型、所有用户定义类型,address类型和 template 在运行时,动态 模板template类型的值 所有基本类型,所有用户定义类型,.adress.component unction 在运行时,动态 port,default.template和timer类型的值 所有基本类型、所有用户定义类型、.address,component.port 在运行时,动态 altstep default,template和timer类型的值 所有基本类型,所有用户定义类型,addres和template类型的值 testcase 在运行时动态 在运行时,动态 所有基本类型,所有用户定义类型,address和component类型的值 sIgnature 注1;recordof.setol.,enumerated,por.,.component和subtype类型定义不允许参数化 注2:不同语言元素中参数化的句法和特定用法的例子在本部分的有关章条中给出 6.3.2按引用传参和按值传参 6.3.2.1概述 按默认方式,基本类型,基本串类型,用户定义的结构化类型、地址类型和组件类型均按值传递所有 的实参 可以选择性地使用关键字in来表示 而如果通过引用的方法传递以上提到的类型的参数,则 应使用关键字out或inmout r和pot来标识 可以选择使用关键字imou来 定时器和端口均按引用传参,并通过关键字timer 指代按引用传参 6.3.2.2按引用传参 引址传参有以下限制: a)只对altsteps的形参清单显式调用,functions,signatures和testcase可包含引址传递的参数 pass-by-referenceparameters); 注,对如何在特征标记中使用引址传递参数有进一步的限制见第24章). b)实参应仅是变量(例如不是常量也不是模板)
GB/T26857.1一2011 示例: unetionMyFunetion(inoutbooleanMyReferenceParameter)(}; /通过引址来传递MyReferenceParameter,且能从该丽数内读出和设置该实参 functionMyFunction(outbooleanMyReferenceParameter){}; /通过引址来传递MyReereneePaurameter,且仅能从该函数内设置该实参 6.3.2.3按值传参 按值传递的实参可以是变量以及常量、模板等 示例: hMfu eMyValueParameter){) function" Funeion(intemplateMyTemplateType n 按值传递MyValueParameter,关键字in可选 6.3.3形参和实参清单 在实参清单中出现的元素的数目及其顺序,应与其对应的形参清单中的元素数目和出现顺序相同 而且,每个实参的类型应与每个对应的形参的类型兼容 示例 /带有形参清单的一个函数定义 functionMyFunction(integerFormalParl,booleanFormalPar2,bitstringFormalPar3){ /带有实参清单的一个丽数调用 MyFunction(123,true,'1100'B); 6.3.4空形参清单 如果TTCN-3语言元素funetion,testcase,signature,altstep或externalfunction的形参清单是空 的,那么在该元素的声明和调用中都应包含空的括号 而在所有其他情形,该空括号均应予以省略 示例 带有空参数清单的函数定义应写为 funetionMyFunetion({ 带有空参数清单的记录定义应写为 typerecordMyRecord 6.3.5嵌套式参数清单 通常,规定为一个实参的所有参数化实体在实参清单中均应有自已的解析的参数 示例 /给定消息定义 typerecordMyMessageType integer ieldl field2. charstring boolean field3 /一个消息模板可以是 templateMyMessageTypeMyTemplate(integerMyValue);= fieldl;=MyValue, fied2;=pattern"abc黄xyz" field3;=true 10o
GB/T26857.1一2011 /带有一个模板参数化的测试用例可以是 testcaseTC001templateMyMessageTypeRxMsg)runsonPTC1systemTS1 MyPCO,receiveRxMsg); 当测试用例在控制部分中被调用且该参数化模板用作一个实参时,应对该模板的实参提供 contro TC001(MyTemplate(7); 6.4范围规则 6.4.1概述 TTCN-3提供7个基本的作用范围单元 a)模块定义部分; b模块的控制部分; 组件类型; d)函数 备选步(alestep) e 测试用例 g)复合语句中的“声明块和语句块” 注1:用于组(groups)的附加范围规则见8.4.2 注2:用于for循环中计数的附加范围规则见20.8. 范围的每个单元由声明(可选的)组成 可以通过使用TTCN-3程序语句和操作,用范围单元;模 块的控制部分、函数、测试用例、备选步和复合语句中的“声明和语句块”来额外规定行为的某种形式(见 第19章) 模块定义部分的定义,其他范围单元之外的定义是全局可见的,也就是说它们可以用在模块的任一 位置,包括该模块定义的所有丽数、测试用例和备选步以及控制部分 从其他模块中引人的标识符对于 引人模块来说也是全局可见的 模块控制部分中的定义具有的是局部可见性,即只能用在该控制部分中 通过使用一个runs on语句,在测试组件类型中做的定义仅可以在调用该组件类型或一个相一致 的测试组件类型的丽数、测试用例和备选步中使用它们见17.4) 函数、测试用例和备选步是独立的范围单元,它们之间没有层次关系,即它们主体开始处做的声明 具有局部可见性,且仅可以用在给定的函数、测试用例或备选步中(如:在一个测试用例中做的声明对于 被这个测试用例调用的函数或被该测试用例使用的备选步来说是不可见的 复合语句包括“语句和声明块”,如ifelse、while-,do-while或alt-语句 它们可以用在一个模块的 控制部分、测试用例,备选步、函数中,或嵌套在其他复合语句中,如在一个while-循环中使用ifelse 语句 复合语句和嵌套式复合语句中的“语句和声明块”对于包括给定“语句和声明块”的范围单元和任一 嵌套的“语句和声明块”二者来说具有层次关系,在一个“语句和声明块”中所做的定义具有局部可见性 1l
GB/T26857.1一2011 范围单元的层次关系如图2所示 高层的范围单元声明对其所在层次关系中的同一分支中下面层 次的所有单元来说是可见的,而层次关系中低层的范围单元的声明对于其上层的那些单元的来说是不 可见的 模块 定义部分 模块 没有rus.o-子句 没有so-子句 Component类型 控制解分 的函数 的备选步 ease 语句块 语句块 语句块 在一个复合语句中 在一个复合语句中) 在一个复合语句中 带有so-子句 带有runson子何 测试例 的函数 的备选步 Ca 嵌套的语句块 嵌套的语句块 嵌套的语句块 在一个复合语旬中 个复合请句中 在一个复合语句中) 语句块 语句块 语句块 在一个复合语句中 在一个复合语句中 在一个复合语句中 嵌套的语句块 嵌套的语何块 嵌套的语句块 在一个复合语句中 在一个复合语句中 在一个复合语句中 图2范围单元的层次结构 示例 MModile module constintegerMyConst;=0;//对于MyBehaviourA和MyBehaviourB来说,MyConst可见 functionMyBehaviourA( /常量A仅对MyBehavourA可见 constintegerA;=l; functionMyBehaviourB constintegerB;=l;//常量B仅对MyBehaviourB可见 6.4.2形参的范围 在 一个参数化的语言元素中(如在一个函数调用中)形参的范围应限定到这些参数出现的定义中和 相同范围层次关系中的较低的范围层次 这就是说它们遵循正常的范围规则(见6.5) 6.4.3标识符的唯一性 TTCN-3要求标识符具有唯一性,即在相同范围层次中的所有标识符互不相同 这就意味着在范 12
GB/T26857.1一2011 围层次的同一分支中,低层范围中的声明不应重复使用与高层范围声明中相同的标识符 结构类型字 段、枚举值和组的标识符不必全局唯一,然而在枚举值的情况下,标识符应仅被其他枚举类型中的枚举 值重复使用 标识符唯一性规则应也用于形参标识符 示例 moduleMyModule constintegerA;=1 funetionMyBehaviourA constintegerA:=1;/不允许 i试 constbooleanA;=true;//不允许 /下面不在相同范围层次中声明的常量是允许的假设在模块的头部没有A的声明 functionMyBehaviourA( constintegerA:=l; functionMyBehaviourB( constintegerA:=l: 6.5标识符和关键字 TTCN-3标识符是区分大小写的,而关键字应全部小写(见附录A) TTCN-3的关键字既不应用 作TTCN-3对象的标识符,也不应用作从其他语言的模块中引人对象的标识符 类型和值 7.1概述 TTCN-3支持许多预定义的基本类型 这些基本类型包括与程序语言正常关联的基本类型,如 integer,boolean 和串类型,也包括一些TTCN-3专用的类型,如objid和verdiettype 可以从这些基本 类型中构造结构类型,如 record,set和enumerated类型 专用的数据类型anytype定义为一个模块中所有已知类型的联合 component,可以用来定义测试系统的体系结构 与测试配置关联的专用类型,如.adress.,port和 见第23章) 专用类型default可以用于默认处理(见第22章) 13
GB/T26857.1一2011 TTCN-3类型汇总见表3 表3TICN-3类型概览 字 子 型 健 类型分类 关 类 ,list integer range, char range,list universalchar range,list 简单基本类型 float ange,list boolean list ist objid ist verdicttype bitstring ist,length hexstring ist,length 基本串类型 ist,length 0ctetstring charstring range,list,length universalcharstring range,list,length ist record recordof ist,length set ist 结构类型 setof Iist,length enumerated list union list 专用数据类型 anytype list address 专用配置类型 port component 专用默认类型 default 7.2基本的类型和值 简单基本类型和值 TTCN-3支持下列基本类型 ;整型,其值为所有的正,负整数和零 整型值应用一个或多个数字表示;且除0值外 a 1nteger: 其第一位不应是0,而0应由 -位数字表示(即单个0. nternationalRef behar;字符型,其值为与GB/T1988一1998的8.2中描述的国际参考版本(hnt erenceVersion 1,IRV)相符的GB/T1988一1998版本中的字符 注1:GB/T1988一1998中的IRV版本与IrU-TRecommendationT.50(见参考文献)中描述的国际参考字母 InternationalReferenceAlphabet,以前是InternationalAlphabetNo.5-1A5)的IRV版本等价 char类型的值可以用双引号")括起来给出,或者使用预定义的带有编码的正整数值作为参数的 14
GB/T26857.1一2011 转换函数计算获得 关系运算符相等(==)和不相等(!=)可以用来比较char类型的值 universalchar;通用字符类型,其值为来自Is/IEC10646的单个字符 universa char类型 的值可以用双引号(")括起来给出,或者使用预定义的带有编码参数的转换函数计算获得或由 一个四元组(quadruple)给出 这个四元组仅能表示一个单个字符,且它表示一个字符是根据 1So/IEC10646使用该字符的组(group),容器(plane)、行(ow)和单元格(eel)的十进制值来 表示,由关键字char来引导,带有一对括号,并用逗号分隔《例如 O r(0,0,1,l13)表示匈牙 har 利字符“” 注2;控制字符仅可以使用四元组的形式表示 默认地,universalehar r应与Iso/IEc10646的14.2中规定的UCcs-4编码表示形式相一致 这个默认的编码 可以通过使用定义的编码属性来对其进行超驰(override)见29.3.2). 注3;Ucs-4是一种编码格式,它使用一个固定的.32位长的字段来表示任一Ucs字符 关系运算符相等(==)和 不相等(!=)可以用来比较universalchar类型的值 float;浮点类型,描述浮点数的一个类型 d 通常,浮点数可以表示为:〈尾数》×〈基数》错数" 其中,〈尾数)是一个正或负整数.〈基数)是一个正整数(多数情况为2、,10或16).《指数)为一 个正或负整数 浮点数的表示限定为以值10为基数,浮点值可以使用下列任一方式表示 在一个数字序列中使用小数点的正常表示,如1.23(表示123×10-2),2.783即2783× 10一有 10-),或一123.456789(表示一123456789×! );或者 使用E来分开两个数字来表示,第一个数字描述尾数,第二个数字规定指数,例如12.3E4 2 表示12.3X10'),一12.3E-4(表示一12.3×10-') e)boolean;布尔类型,该类型由两个不同值组成 布尔类型的值应使用true和false来表示 objid;对象标识类型,其值为与GB/T17969.1一2000的6.2一致的所有对象标识符的集合 f 标识符中的连字符被替换为下划线 示例 (itu_t(0identified_organization(4etsi(0)) 或替换为(itu_tidentified_C dorganizationetsi 或替换为(040 verdiettype;判定类型,该类型由五个不同的值组成 中 Verdicttype类型的值应使用pass、failinconc,none和error表示 7.2.2基本串类型和值 TTCN-3支持下列基本串类型: 注1;TTCN-3中的通用术语“串”或“串类型”指的是itstring、hexstring、octetstring、charstring和universalchar string bitstring;位串类型,其值为不同的0,1或多位的0,1序列 bitstring类型值应用任一数目的位数0,1来表示(可能为0位),冠以单个撇号字符“,”,跟以 字符对“’B” 示例1: 'o01101'B b hexstring:十六进制串类型,其值为0、1或多位十六进制数的有序序列,每个十六进制数与一 个有序的四位序列相应 He exstring类型值应用任一数的十六进制数字来表示(可能为0): 15
GB/T26857.1一2011 0123456789ABCDEF 冠以单个撇号字符“,”,跟以字符对“’H”;使用十六进制记法每个十六进制数字用于表示半个 八位组的值 示例2: ’AB01D'H oetetstring;八位组串类型,0个或正偶数个十六进制数字的有序序列每对数字有一个有序 的八位序列相应 octetstring类型值应用任一但应是偶数数目的十六进制数字来表示(可能为0) 0123456789ABCDEF 冠以单个撇号字符“)”,跟以字符对“'o”;使用十六进制记法每个十六进制数字用于表示半个 八位组的值 示例3. 'FF96'O charstring;字符串类型,其值为0个、1个或多个与Iso/AIEc10646的8.2中描述的国际参考 d 版本InternationalReferenceVersion,IRV)规定的Iso/IEC10646版本的字符 由关键字universal引导的字符串类型表示类型值为来自ISO/IEC10646的0个、1个或多个 字符的类型 eharstring类型值应由来自有关字符集的任一数目(可能为0)个字符表示,并在其之前和之后 使用双引号(")把它括起来 在串中需要包含字符双引号(")的情况下,在同一行中使用一对双引号来表示该双引号字符 且其间没有空格字符 示例4 ,” abcd""表示文字串"abcd" universalcharstring类型值也可以用来自有关字符集的任一数目可能为0)个字符表示,并在其之前和之 后)使用双引号把它括起来或使用一个四元组 这个四元组仅能表示一个单个字符,且它使用Iso Ec10646[6]中该字符的组、容器、行和单元格的十进制值来表示这个字符,由关键字char来引导,带有一对 括号,并用逗号分隔(例如,char(0,0,l,l13)表示匈牙利字符"i") 依据第一种方法(使用一对双引号)时,在 串中需要包含字符双引号的情况下,在同一行中使用一对双引号来表示该双引号字符,且其间没有空格字符 在使用连接运算符(concatenationoperator)的一个串值的记法中,可以混合地使用两种方法 示例5. 赋值:"theBraillecharacter”8.char0,0,40,48& "lookslikethis"表示文字串:theBraillecharacterlooks likethis 注2:仅可以使用四元组来表示控制字符 默认地,universalcharstring应该与IsO/IEC10646的14.2中规定的UCS-4编码表示形式一致 注3;Ucs4是一种编码格式,它使用一个固定的,32位长的字段来表示任意Ucs字符 可以使用定义的编码属性(见29.3.2)来重写这个默认编码 在附录E中定义了使用这些属 utf16st 和iso8859st 性的有用的字符串类型utf8st tring iring、bmpstring、u tring 7.2.3存取单个的串元素 可使用一个类似数组的语法来访间一个串类型中的各个元素 申中仅一个元素可以被存取 表生指出了不同串类型元奈的长度单元 索引应该从0值开始 示例: /给定 1111o111'B Msitstrng 16
GB/T26857.1一2011 /然后做 MyBitString[4]='1'B //以位串表示的结果为'l1lllll1'B 7.3基本类型的子类型化 7.3.1概述 用户定义类型用关键字type表示 可以根据表3使用用户定义类型在简单基本类型和简单串类 型上创建子类型(如清单,值域和长度限制. 7.3.2值清单 TTCN-3允许对表3中给出的任一类型的不同值列表的描述 该列表的值应该是根类型的值,且 应该是该根类型定义的值集合的真子集,被这个列表定义的子类型限定了该子类型的允许值为清单中 的那些值 示例 ypebitstrimeMslisoOBisstimgs s('o1'B,'10'B,'11'B); typefloatpi(3.1415926); typeuniversalcharSpecialL.eter(char(O,0,l,111),char(0,01,l12),char(O,0,l,113)); 值域 7.3.3 7.3.3.1概述 TTCN-3允许对类型integer,char,universalchar和float类型(或这些类型的派生类型)值域的规 范 这个值域定义的子类型限定了该子类型的值可为值域中的值,且包括该值域的上下界 在char和 universalchar类型的情况中,值域的边界应根据该类型被编码的字符集合表去计算有效的字符位置 例如给定的位置不应为空),并认为上下边界中间的空位置不是所规定值域中的有效值 示例1. typeintegerMylntegerRange(0..255); ypecharMyCharRange("a”.""); typefloatpiRange3.14..3142E3); 类型的值域规范也可以用在一个eharstring子类型定义中,而univeralchar的值域可以在 char charstring子类型定义中 在这样的情况下,值域为串中每个单独字符限定了允许的取值范围 univerSa 示例2: MyCha (" ”";") typecharstring" harString 定义了一个任一长度的串类型,且串中的每个字符都在所规定的值域之内 typeuniversalcharstringMyUCharStringl"”.""); /定义了一个任一长度的串类型,且串中的每个字符都在使用双引号所规定的值城之内 typeuniversalcharstringMyUCharString2char(0,0,l,ll1..char(0,0,l,ll3)); /定义了一个任一长度的串类型,且串中的每个字符都在使用四元组所规定的值域之内 7.3.3.2无限值域 为了规定一个无限的整型或浮点型的值域,可以使用关键字infinity来代替一个表示没有上下边 界的值 上边界应该大于或等于下边界 示例: ypeintegerMyntegerRange(一infnitry..-1);//所有负整数 注:无限的“值”是依赖于实现的 这个特性的使用可能会导致可移植性问题 17
GB/T26857.1一2011 7.3.3. 3 清单和值域的混合 对于类型integer,char,unin versalchar和float(或这些类型的派生类型)的值来说也可能混合了清 单和值域 示例: typeintegerMylntegerRange(1,2,3,10.20,99,100); ypecharMycharRamee("" ,"b","e","o”.."9"); 在charstring和universalcharstring子类型定义中,不应该在相同的子类型定义中混合列表和 值域 7.3.4串长度限制 TTCN-3允许在串类型上对长度限定进行规范 根据使用长度边界的串类型的不同,该长度边界 具有不同的复杂度 在所有的情况中,这些边界都应该为非负integer值(或是派生的integer值) 示例 typebitstringMyBytelength8); 1精确的长度值8 /精确的长度值8 typebitstringMyBytelength8.,8); typebitstringMyNibbleToBytelength(4..8);//最小长度为4,最大长度为8 表4规定了不同串类型的长度单元 表4字段长度规范中使用的长度单元 类 型 长度单元 bitstring 位 十六进制数字 hexstring octetstring 八位位组 字符 characterstrings 关键字infinity用于上界的时候表示长度没有上限 上限应该大于或等于下限 7.4结构化的类型和值 7.4.1概述 关键字type也用于规定结构化的类型,如record类型、recordof类型、set类型、.setof类型、enu nmerated类型和union类型 这些类型的值可以使用一个显式的赋值给出或由一个简写的值清单给出 示例1. constMyRecordTypeMyRecordValue:;= //赋值表示 fieldl:='11001'B fiel2;=true field3:="Astring" //或者 MvRecordalue;=11001'B, onstMyReordType m 值清单表示 3,true,"Astring" 当使用赋值表示方法规定部分值的时候(即仅设置一个结构变量字段子集的值),只有被赋值的字 18
GB/T26857.1一2011 段才应被规定 在结构中使用值清单表示时,应使用一个值来规定所有的字段,而不使用符号“-”或关 键字omit 示例2: rMReordrypeMva 赋值表示 var / Variable; fieladl;='l1001'B, field3;="Astring /或 varMyRecordTypeMyVariable;=('11001'B,,"A /值清单表示 string"” (紧接着的)上下文中,不允许混合这两种值表示方法 在同 示例3: 1这是不允许的 constMyRecordTypeMyRecordValue;=MylntegerValue,field2;=true,"Astring" 无论是在赋值记法还是值清单表示方法中,都应对可选字段使用显式的值omit来省略有关字段 省略一个字段会引起有关字段值变成未定义字段,而不管该字段以前具有什么样的值 对强制字段不 应使用关键字omit 7.4.2记录类型和值 7.4.2.1概述 TTCN-3支持称为record类型的有序的结构类型 一个record类型元素可以是基本类型或用户 定义数据类型(如其他记录,集合或数组)的任一种,一个record值应与该record字段的类型兼容 对 于 rd,其元素标识符是该record的局部标识符,且在该record中是唯一的但不必是全局唯一的. reco1 rd类型的常量应既不直接也不间接包含变量或模块参数作为字段值 recorG brdMyRecordType typerecor rfieldl, integer MyOtherRecordITypefield2optional. field3 charstring! typerecordMyOtherRecordType bitstringfieldl booleanfield2 可以定义记录没有字段(即作为空记录. 示例1: typerecordMyEmptyRecord" record值在一个单个的元素基(elementbasis)上赋值 示例2: varintegerMylntegerValue;=1: constMyOtherRecordTypeMyOtherRecordValue; field;='11001'B 19
GB/T26857.1一2011 fied2;=true varMyRecordTypeMyRecordValue:= fiedl;=MylntegerValue fiel2;=MvOtherRecordvalue, field3;="Astring 或使用一个值清单 示例3: MyRecordValue;= rVae,'11001'B,true),"Astring") =Mshrese" 应该使用省略符号省略可选字段 示例4 MyRecordValue:= erValue,omit,"Astring"); (Myhnregem //注意这与下面的写法不同 /MRe keordValue;=(MylntegerValue,,"Astring" 上面的写法意味着fed2的值不变 7.4.2.2引用reeorl类型的字段 应使用点记法来对record的元素进行引用:TypeOrValueld.Elementld,其中TypeOrValueld用 来解析一个结构类型或变量的名称,Elementld用来解析结构类型中一个字段的名称 示例 MyVarl;=MyRecordl.myElementl: 如果一个record类型嵌套在另外一个类型中,那么对它的引用格式如下 MyVar2;=MyRecordl.myElementl.myElement2; 7.4.2.3Reeord中的可选元素 应使用关键字optional来规定一个record中的可选元素 示例 typerecordMyMessageType FieldTypel fieldl FieldType2 field2 optional FieldTypeN fieldN 7.4.3集合类型和值 7.4.3.1概述 TTCN-3支持已知为set的无序的结构类型 set类型和值与record类型很相似,只是set字段的 顺序是没有意义的 示例 typesetMySetType field1. integer 心
GB/T26857.1一2011 charstringfield2 字段标识符对于set类型来说是局部的,且在该set类型中应唯一(但是不必是全局唯一的 对set类型值不应使用设置值的值清单记法 7.4.3.2对集合类型字段的引用 应使用点记法对set的元素进行引用(见7.4.2.2 示例 MyVar3;=MySetl.myElementl; 如果一个集合嵌套在另一个类型中,那么该引用格式如下 MyVar4:=MyRecordl.myElementl.myElement2; /注意,带有被引用标识符myElemen2的字段的set类型嵌套在一个record类型中 集合中的可选元素 7.4.3.3 应使用关键字optional来规定set中的可选元素 7.4.4单一类型的记录和集合 7.4.4.1概述 TTcN3支持对所有冗素为同一类狠的记浸和集合类狸的规范,并使用关键字来表记 这些记 录和集合没有元素标识符,可以认为它们分别与有序数组和无序数组相似 使用关键字length来限定recordof和setof的长度 示例1: typerecordler legth.(o) )ofinegerMyReordofType://是一个恰有10个整数的记录 typerecordlength(0..10ofintegerMyRecordOfType;//是一个最多有10个整数的记录 rMyRecordOTy //最少10个整数的记录 typerecordlength(10..infinity)ofinteger Iype; ypesetofbooleanMyseoType;/布尔值的一个无限集合 egth12 typerecordlength(0.,l0)ofcharstringStringArray 一个最多有10个串的记录,每串恰有12个字符 recordo和setof的值表示应是一个值清单记法或是一个对各元素进行索引的表示方法(与用于 数组的值记法相同,见7.6) 当使用值清单记法时,清单中的第一个值被赋值给第一个元素,第二个清单值被赋值给第二个元 素,依此类推 赋空值是被允许的例如,两个逗号紧挨着或之间仅有一个空格),应在该清单中显式地 跳过或省略赋值中要省去的元素 索引值记法既可以用在赋值符号的左边也可以用在赋值符号的右边 第一个元素的索引值应为 0,且该索引值不应超出由长度子类型设定的限制 如果在赋值符号右边索引表示的元素值没有被定 义.那么将会导致语义错误或运行错误 如果在赋值符号左边的一个索引运算符引用了一个不存在的 元素,那么赋值符号右边的值将被赋给该元素,并使所有元素只有比实际的索引小的索引,但并不对这 些元素赋值,使这些元素的值为未定义 仅在中间状态允许未定义元素(而值仍旧是不可见的) 发送 带有未定义元素的一个recordof值将会导致动态测试用例错误 示例2. //给出 -MyRecordOf typerecordofinteger varintegerMyVar; rMyReeordofMyRecordVar;=(0,l,2.,3) var 21
GB/T26857.1一2011 MyVar;=MyRecordVar[o];//recordo类型值中的第一个元素赋值给了MyVar 也允许索引值在赋值符号的左边 MyRecordVar[1];=MyVar;//MyVar被赋给了第二个元素 //下列两个赋值形式 MyRecordVar;=0.l,一,2.omit} MyRecordVar[6];=6;: 将导致(0,1,unchanged),2,(undefined),(undefined),6}; 注意,如果第三个元素以前没有被赋值,那么它仍是未定义的 而且,第六个元素(索引值为5)在这次赋值之前没有被赋值过 注:这就使得在一个for循环中一个元素接一个元素地拷贝recordof类型值成为可能,例如,.下面的函数翻转了 recordof类型值的元素 functionreverse(inMyRecordsrc)returnMyRecord varMyRecorddest; varintegerl for(I:;=0;I sizeof(src);I;=I十1 dest[sizeofsrc 1];=src[] returndest 嵌套的recordo和setof类型会导致一个类似多维数组的一个数据结构见7.6) 示例3: 给出 typerecordofintegerMyBasicRecordOfType; MyRecord naoTrypen ofMyBasieReordoType typerecord //变量myRecordOfArray将具有与一个二维数组相似的属性 rMtRceonoTypemst yRecordoHArrnay var /且对一个特定元素的引用可以看起来如下第三个MyBasicRecordOfType构造的第二个元素的值 myReordoIAray[2][1];=1 7.4.5枚举类型和值 TTCN-3支持en numerated类型 枚举类型用于对只采用值的不同命名集的模块 每个枚举应有 个标识符 对枚举类型的操作应仅使用这些标识符,且仅限于赋值、等价和排序运算符 枚举标识符 应在该枚举类型中是唯一的(但不必是全局唯一的),因而也就仅在给定类型中的上下文里是可见的 枚举标识符仅在其他结构类型定义中重复使用,且不在相同范围层次分支中的同层或低层里被用做局 部或全局可见性的标识符 示例1 ypeenumeatedMyFie rstEnumType Monday,Tuesday,Wednesday,Thursday,Friday typeintegerMonday; /因为类型的名称具有局部或全局可见性,所以这个定义是非法的 typeenumeratedMySecondEnumType Saturday,Sunday,Monday 因为该定义在不同的枚举类型中重复使用了枚举标识符Monday,所以该定义是合法的 22
GB/T26857.1一2011 typerecordMyRecordType Monday integer //因为该定义在不同的结构类型中重复使用枚举标识符Monday作为该类型一个给定字段的标识符,所以该定义 是合法的 naMtNe typerecord NewRecordType MyFirstEnumType firstField. secondField integer varMyNewRecordTypenewRecordVaue;={Monday,0y /通过MyNewRecordType的firstField元素隐式地引用MyFirstEnumType erMonday;=7 constinteger /因为该定义对相同范围单元中的不同TTcN3对象重复使用枚举标识符Monday,所以该定义是不合法的 7.4.6联合(Union)类型 7.4.6.1 概述 TTN3支持wion类型 uion类型是字段的汇集,这些字段每个都由一个标识符来标识 规定 字段中只有一个将永远呈现在实际的联合值里 联合类型在对采用有限个已知类型之一的结构的模块 时候很有用 示例 typenionMyUnionType number, integer charstring string MyUmionType的一个有效例示可以是 varMyUnionTypeage,oneYearOlder; varintegeragelnMonthss age.number;=34; 使用引用字段的值表示 注意这种记法使得给出的字段就是所选字段 oneYearOlder;={number;=age.number+1). agelnMonths;=age.numberX12; 用于设置值的值清单记法不应用于 类型的值 union 7.4.6.2对联合类型字段的引用 应使用点记法来引用 n类型的字段(见7.4.2.2). union 示例: MyVar5;=MyUnionl.myChoicel; 如果一个联合类型嵌套在另外一个类型中,那么对它的引用格式如下 MyVar6;=MyRecordl.myElementl,myChoice2; 注意,被引用的带有标识符myChoiee2的字段的union类型嵌套在一个record类型中 7.4.6.3可选性和联合 union类型不允许使用可选字段,这就意味着关键字optional不应与union类型一起使用 7.5任一类型 专用类型anytype被定义为一个TTCN-3模块中所有已知类型的联合的一个简写 已知类型的术 23
GB/T26857.1一2011 语定义在第3章中给出 Anytype的字段名应由相应的类型名称唯一标识 示例: 任一类型的一个有效用法可以是 varanytypeMyVarOne,MyVarTwo; erMyVarThree; varinteger MyVarOne.integer;=34; MyVarTwo;=integer;=MyVarOne十1}; MyVarThree; 'ar(One×12 =MyVa 对每个模块来说anytype是在局部定义的,(与其他预定义类型一样)不能直接由另外一个模块所 一个模块引人的 这就使得该模块的全部 引人 然而,anytype类型的一个用户定义类型是可以被另 类型都被引人 注:anytype的用户定义类型“包含”声明该用户定义类型引人模块的全部类型 引人这样一个个用户定义类型到 -个模块中去可能会引起副作用,因此对这种情况应谨慎处理 7.6数组 与许多编程语言相同,在TTCN-3中不认为数组是类型 而是在变量声明中对它们加以规定 数 组可以声明为单维或多维的 示例1. varintegerMyArray1[3]; //带有3个元素的整型数组,其下标为0到2 //具有2×3个元素的二维整型数组,其下标为(0,0)到(1,2) rrMyArraya[2][3] varinteger 数组的维数应该用一个结果为正integer值来计算的常数表达式来规定,也可以使用值域来规定, 在后一种情况中,该值域上下界的值定义了该数组元素下标的上下界值 示例2 varintegerMyArray3[1..5]; //有5个元素的整型数组,其元素标签为1到5 MyArays[1], /最低下标 =l0; MyArays[5];=50 /最高下标 varintegerMyArray4[1..5][2..3];//有5×2个元素的二维整型数组,下标为(1,2)到(5,3 数组元素的值应该与相应的变量声明兼容 这些值可以使用值清单记法对它们分别进行赋值,或 者使用下标记法或多次使用值清单记法进行赋值 当使用值清单记法的时候,该清单的第一个值被赋 给了数组的第一个元素(该元素的下标值为0),第二个值被赋给了第二个元素,以此类推 不予考虑赋 值的元素应该在清单中显式地跳过或省略 赋值给多维数组时,要赋值的每一维都应解析到花括号中 的一个值集合中去 示例3. MyArrayl[0]:=10; MyArray1[1];=20; MyArayl[3];=30; /或使用一个值清单 =10,20 M ,30; Arrayl;= MyArray4:=1,2,3,4,5},{1l,12,13,l4,l5 注:使用多维数据结构的替换方式为使用record,recordof,set或setof类型 示例4 /给出 ypereordMyRecordType fied1. integer fied2, MyOtherStruct 2
GB/T26857.1一2011 fied3 charstring //MyRecordType的一个数组可以是 varMyRecordTy ray[1] ypemyRecordAr /对一个特定元素的引用的格式可以如下 myRecordAray[1].fiedl =l; 递归类型 可应用的TTcN-3类型定义可以是递归的 然而,用户应确保所有的类型递归是可解析的,且不 会发生无限递归 7.8类型兼容性 7.8.1概述 通常,在赋值、例示和比较时,TTCN-3要求值的类型兼容 为了本条论述方便,把值“b”称为要赋予、作为参数传递等情况的实际值,类型“B”被称为值“b”的 类型,类型“A”被称为要获得的实际值“b”的值类型定义 7.8.2非结构类型的类型兼容性 对于非结构变量、常量、模板等,如果类型“B”解析为与类型“A”相同的根类型且不违反对类型“A” 的子类型定义(例如值域、长度限制)时,值“b”与类型“A"是兼容的 示例 /给出 typeintegerMylnteger(1..10); varintegerx; var rMyimtegery 那么 是一个有效的赋值 y;=5 -个有效的赋值,因为y与x有相同的源根类型,且不违反x的子类型定义 20;/是一个有效赋值 是 个无效赋值,因为x的值超出了Mylnteger的值域 x;=5;//是一个有效赋值 y;=x 是一个有效赋值,因为x的值在Mylnteger的值域内 7.8, 结构类型的类型兼容性 3 7.8.3.1概述 在结构类型的情况下enumerated类型除外),如果类型“B”的有效值结构与类型“A”兼容,类型 “B"的一个值“b”与类型“A”兼容,在这种情况下允许赋值、例示和比较 7.8.3.2枚举类型的类型兼容性 枚举类型与其他基本类型或结构化类型不兼容(也就是说对于枚举类型要求强类型机制 25
GB/T26857.1一2011 3 7.8.3. reeord和reeordof类型的类型兼容性 对于record类型,如果在定义的文本顺序上字段的数目,类型和可选性与有效值结构是相同的,且 值“b”的每个存在的字段值与类型“A”的相应字段的类型兼容,那么这些有效值结构是相互兼容的 值 “b”的每个字段的值被赋值给类型“A”值里的相应字段 示例1 给出 yperecordAType integer(0..10 optional nteger(O..10) optional boolean aTye typerecord iinteger optional nteger(0..10) optional boolean yperecordcType /带有不同字段名的类型 integer optional optional integer boolean 带有可选字段c的类型 yperecordDType integer optional integer optional boolean optional recordEType /带有一个额外字段d的类型 type integer optional integer optional boolean float optional varATypeMyVau 'arA=一,1,true; varBTypeMyVarB;=omit,2,true}; MyVarC;=3,omit,true; arcTye varDTypeMyVanD;=(4,4,true) varETypeMyVarE;={5,5,true,omit; /那么 /是一个有效的赋值,MyVarA的值是(a;=,b;=2.e;=truey MyVarA;=MyVarB; MyVarC;=MyVarB;//是一个有效赋值,MyVarC的值是(d:=,e;=2,f:=true MyVarA;=MyVarD/因为字段的可选性不匹配,所以不是一个有效的赋值 MyVarA:=MyVaurE;因为字段数目不匹配,所以不是一个有效赋值 MyVarC;=(d;=20l;/MyVarC的实际值是d;=20,e;=2,[;=true MyVarA;=MyVarc/不是一个有效的赋值,因为MyVarc的字段'd'违反AType类型字段'a'的子类型定义 对于recordof类型和数组类型,如果它们的组件类型是兼容的,且类型“B”的值“b"不违反record of类型的长度子类型或类型“A”数组的维数,其有效的值结构是可兼容的 值“b”元素的值应顺序赋值 26

MTS测试和测试控制记法第3版第1部分:TTCN-3核心语言GB/T26857.1-2011

MTS测试和测试控制记法是一种用于互联网和移动通信领域中的测试技术,其主要目的是为了确保不同系统之间的互连性能。TTCN-3核心语言作为MTS测试技术的重要组成部分,是对于测试用例进行描述、设计和执行的语言,同时也是MTS测试技术的核心。

一、TTCN-3核心语言的概述

TTCN-3核心语言由欧洲电信标准化协会(ETSI)制定,是一种面向对象的语言,旨在描述和执行测试用例。它采用了C++和Java语言的优点,可以方便地应用于不同领域的测试需求。TTCN-3核心语言主要包含以下几个方面:

  • 数据类型:TTCN-3核心语言支持多种数据类型,包括基本数据类型和复合数据类型。
  • 控制结构:TTCN-3核心语言提供丰富的控制结构,包括循环、分支、异常处理等。
  • 运算符:TTCN-3核心语言覆盖了常见的算术、逻辑和比较运算符。
  • 函数和过程:TTCN-3核心语言支持函数和过程,方便测试用例的描述和调用。

二、GB/T26857.1-2011的规定

GB/T26857.1-2011是我国对于MTS测试技术的国家标准,主要涉及到TTCN-3核心语言的语法和语义。该标准旨在为测试工程师提供统一的编写、执行和评估测试用例的方法和规范,以确保测试的可靠性和有效性。

根据GB/T26857.1-2011的规定,TTCN-3核心语言应该满足以下几个方面的规范和要求:

  • 语法规范:TTCN-3核心语言应该符合标准定义的语法规范,保证测试用例的正确性和一致性。
  • 语义规范:TTCN-3核心语言应该符合标准定义的语义规范,保证测试用例的功能和性能。
  • 可重用性:TTCN-3核心语言应该具有较强的可重用性,可以在不同领域的测试中得到广泛应用。
  • 易读性:TTCN-3核心语言应该具有易读性和易维护性,方便测试工程师编写、修改和理解测试用例。

三、总结

MTS测试技术和TTCN-3核心语言在互联网和移动通信领域中得到了广泛应用,对于确保不同系统之间的互连性能具有重要作用。GB/T26857.1-2011作为我国的国家标准,对于TTCN-3核心语言的规范和要求提出了明确的指导和要求。只有在遵循这些规范和要求的基础上,才能够保证测试用例的有效性和可靠性。

总之,MTS测试技术和TTCN-3核心语言是目前互联网和移动通信领域中非常重要的一种测试技术,其对于系统互连性能的保障具有不可替代的作用。因此,我们应该认真研究和学习这些技术,掌握其相关规范和要求,以保证测试工作的高效和顺利进行。

信息技术开放系统互连测试方法和规范(MTS)测试和测试控制记法第3版第1部分:TTCN-3核心语言的相关资料

和信息技术开放系统互连测试方法和规范(MTS)测试和测试控制记法第3版第1部分:TTCN-3核心语言类似的标准

传真测试样张

出版物上数字用法
上一篇 本文分享国家标准出版物上数字用法的全文阅读和高清PDF的下载,出版物上数字用法的编号:GB/T15835-2011。出版物上数字用法共有9页,发布于2011-11-01
计算机场地通用规范
本文分享国家标准计算机场地通用规范的全文阅读和高清PDF的下载,计算机场地通用规范的编号:GB/T2887-2011。计算机场地通用规范共有18页,发布于2011-11-01 下一篇
相关推荐