GB/T26857.4-2018
信息技术开放系统互连测试方法和规范(MTS)测试和测试控制记法第3版第4部分:TTCN-3操作语义
Informationtechnology—Opensystemsinterconnection—Methodsfortestingandspecification(MTS)—Thetestingandtestcontrolnotation—Version3一Part4:TTCN-3operationalsemantics
![本文分享国家标准信息技术开放系统互连测试方法和规范(MTS)测试和测试控制记法第3版第4部分:TTCN-3操作语义的全文阅读和高清PDF的下载,信息技术开放系统互连测试方法和规范(MTS)测试和测试控制记法第3版第4部分:TTCN-3操作语义的编号:GB/T26857.4-2018。信息技术开放系统互连测试方法和规范(MTS)测试和测试控制记法第3版第4部分:TTCN-3操作语义共有157页,发布于2019-04-01](/image/data/18313_1.gif)
- 中国标准分类号(CCS)L79
- 国际标准分类号(ICS)35.100
- 实施日期2019-04-01
- 文件格式PDF
- 文本页数157页
- 文件大小18.01M
以图片形式预览信息技术开放系统互连测试方法和规范(MTS)测试和测试控制记法第3版第4部分:TTCN-3操作语义
信息技术开放系统互连测试方法和规范(MTS)测试和测试控制记法第3版第4部分:TTCN-3操作语义
国家标准 GB/26857.4一2018 信息技术开放系统互连测试方法和 规范(MIS 测试和测试控制记法 第3版第4部分CN-3操作语义 一Methodsfortesting Informmationtechnology一Opensystemsinterconneetion- andspecification(MIS)一Thetestingandtestcontrolnotation- Versin3一Part4,TCN-3operationalsemanties 2018-09-17发布 2019-04-01实施 国家市场监督管理总局 发布 币国国家标准化管理委员会国家标准
GB/T26857.4一2018 59 8.7Call操作 66 8.8Catch操作 66 8.9check操作 72 8.10Clear端口操作 8.11 72 onnect 操作 8.12 Constant定义 8.13Create操作 8.14Deactivate语句 8.15Disconnect操作 8.16Do-while语句 80 8.17Done组件操作 80 8.18Execute语句 S 8.19表达式 8.20流程图片段 nal1ze-cOmpOnent 8.21流程图片段 init-component-scope 8.22流程图片段 parameter-handling 89 8.23流程图片段
GB;/T26857.4一2018 前 言 GB/T26857《信息技术开放系统互连测试方法和规范MTS)测试和测试控制记法第3 版》分为以下部分: 第1部分:TTCN-3核心语言; -第2部分:TTCN-3表格表示格式 -第3部分;TTCN-3图形表示格式 -第4部分:TTCN-3操作语义
本部分为GB/T26857的第4部分 本部分按照GB/T1.1一2009给出的规则起草
请注意本文件的某些内容可能涉及专利
本文件的发布机构不承担识别这些专利的责任
本部分由全国信息技术标准化技术委员会(sAc/TC28)提出并归口
本部分起草单位电子技术标准化研究院、科学技术大学信息安全测评中心,深圳赛西信 息技术有限公司
本部分主要起草人;赵向阳,卓兰、荐凡、杨宏、张弛、徐冬梅、余晖、林峰、程绍银
GB;/T26857.4一2018 信息技术开放系统互连测试方法和 规范(MIS 测试和测试控制记法 第3版第4部分:TICN-3操作语义 范围 GB/T26857的本部分规定了TTCN-3的操作语义
本部分适用于一致性测试、互操作性测试,健壮性测试等黑盒测试领域
规范性引用文件 下列文件对于本文件的应用是必不可少的
凡是注日期的引用文件,仅注日期的版本适用于本文 件
凡是不注日期的引用文件,其最新版本(包括所有的修改单)适用于本文件
GB/T26857.12011信息技术开放系统互连测试方法和规范(MTS) 测试和测试控制记 法 第3版第1部分;TTCN-3核心语言 术语和定义 GB/T26857.12011界定的术语和定义适用于本文件
缩略语 下列缩略语适用于本文件
BNF;巴科斯-诺尔范式(Backus-NauerForm) MTC;主测试组件(MasterTestComponent) sUT;被测系统(system UnderTest TTcN;测试和测试控制记法(TestingandTestControlNotation) TTCN-3:测试和测试控制记法第3版(TestingandTestControlNotationVersion3 概述 本部分基于GB/T26857.l2011定义的核心语言,以直观和明确的方式来定义TTCN-3行为的 含义
在TTCN模块执行上,本操作语义提供了面向状态的视图
描述不同状态、不同TTCN-3结构含 义的两种方式如下 使用状态信息来定义结构执行的前提条件; b)定义结构的执行将如何改变一个状态
操作语义仅限于TTCN-3行为的含义,即函数、备选步、测试用例、模块控制以及用来定义测试行 为的语言结构,如send和reeeive操作,ifr-else或while语句
某些TTCN-3结构的含义可通过换用其
GB/T26857.4一2018 他语言结构进行解释
例如,interleave语句是一系列内嵌alt语句的简短格式,而通过用相应系列的内 嵌alt语句对其进行换用,可以解释各interleave语句的含义
注1:加粗字符表示TTCN-3语言元素的关键字
本语义以流程图的形式对TTCN-3行为进行描述
流程图用于描述函数、备选步,测试用例或模 块控制中的控制流
注2;TTCN3语句至流程图的映射是一个非正式的步骤,而且不是通过使用GB/T26857.1一201中的BNF规则 来定义
其原因是BNF规则对直观映射并非是最佳的,这是由于某些静态语义规则被编码为BNF规则,以 便允许在语法检查期间进行静态语义检查导致的
操作语义仅包括TTCN-3的行为方面,描述语句和操作的含义,不提供 TTCN-3数据方面的语义
这些方面包括编码、解码和从非TTCN-3规范中输人数据的用 a 法等
分组机制的语义
分组与TTCN-3模块的定义部分相关,不存在任何行为方面的问题
b import语句的语义
在TTCN-3模块的定义部分,应完成定义的引人
操作语义按照定义模 块中的定义来处理引人定义
简短格式的替换 6 6.1概述 在使用该操作语义解释TTCN-3行为之前,在文本层面上应通过相应的完整定义来扩展简短格 式
TTCN-3简短格式为 模块参数的列表、相同类型的常量与变量的声明,以及定时器声明的列表 a bh 单独的接收操作; 单独的备选步调用 trigger操作; d e 在函数和测试用例定义结尾处缺少retur和stop语句 D 缺少stop执行语句 intereave语句; g h seleet-case语句 break和continue语句 没有参数的disconnee和unmap操作 i k)缺失实际参数的默认值 除了处理简短格式,操作语义要求对模块参数和全局常量(即模块定义部分中定义的常量),以及预 处理宏进行特别处理
对模块参数,全局常量和预处理宏的所有引用应用具体的值来替换,即模块参 数、全局常量和预处理宏的值可在操作语义变得相关之前予以确定
注1;操作语义中模块参数和全局常量的处理将有别于TTcN3编译器中对它们的处理
操作语义描述TTcN3 行为的含义,但操作语义不是用于执行TTCN-3编译器的指南
注2;操作语义处理测试组件,测试用例,函数和模块控制中的参数和局部常量的方式与处理变量的方式相似
局 部常量或in n.out和inout等参数是否错用应经过静态检查
6.2替换步骤的次序 简短格式,全局常量和模块参数的文本替换应按照以下顺序来进行 替换模块参数、常量、变量以及带单个声明的定时器声明的列表 a b)用具体的值来替换全局常量和模块参数; 2
GB;/T26857.4一2018 用等同的内嵌ifelse语句替换所有的 ease语句; c select-6 d 在alt语句中嵌人单独的接收操作; 在alt语句中嵌人单独的备选步调用; e fD 扩展interleave语句 用等同的 receive 操作和repeat语句来替换所有的triger操作 g h)没有 语句时,在函数结尾处增加 n,没有stop语句时,在测试用例定义结尾处增加 return return elr.stop操作 iD 没有stup语句时,在模块控制部分结尾处增加stop: j break语句的扩展; k)continue语句的扩展 D 对没有参数的discomneet和mmap操作增加默认参数; m增加参数的默认值
注如果未按照这一替换步骤次序执行,那么替换的结果将不代表定义的行为
6.3全局常量和模块参数的替换 在模块定义部分中声明的常量,对模块控制以及在TTCN-3模块执行期间创建的所有测试组件而 言是全局的
模块参数在运行时间是全局常量
在操作语义开始解释模块之前,应该用实际值对全局常量和模块参数的所有引用进行替换
如果 常量或模块参数的值以表达式的形式给出,那么应对表达式进行计算
然后用计算结果替换常量或模 块参数的所有引用
6.4在alt语句中嵌入单个接收操作 -strpl.ctcth.chek.tmeo和de TTCN-3的接收操作包括:reeeive.,triger,geteall、 注;receive,triger,geteall,getreply,eatch和check等操作对端口起作用,而且由于消息、程序调用,应答和异常的接 收,这些操作也允许分支
timmeout和done并非真正的接收操作,但它们能够以相同的方式用于接收操作,即作 为alt语句中的备选项
因此,操作语义处理 的方式与处理接收操作的方式相似.
timeout和done日 接收操作可以用作函数、备选步或测试用例中的单独语句
timeout操作也可用作模块控制中的单 独语句
在这种情况下,可以认为接收操作是al语句的一种简短形式,它只有一种由接收操作定义的 选择
对操作语义而言,嵌人了接收语句的alt语句应替换接收操作的所有单独事件 示例: 1/单独发生的如下语句 MyCL.trigger(MyType;?); 应由如下语句替换 alt MyCL.trigger(MyType:?) /或者如下语句 MyPTC.done; /应由如下语句替换
GB/T26857.4一2018 alt ]MyPTC.done 6.5在al语句中嵌入单独的备选步调用 TTCN-3允许采用调用函数、备选步、测试用例和模块控制相似的方式来调用备选步
只带有一个 调用备选步分支的alt语句给出了单独调用备选步的含义
alt语句负责快照,快照在备选步内计算,如 果备选步中没有选项可供选择,那么alt语句还负责调用缺省机制
注:在模块控制中使用的备选步只能包括一些带timmeout操作和一个else分支的选项
示例 单独发生的如下语句 myAltstep(MyParlVal); /应由如下语句替换 alt ]myAltstep(MyParlVal 6.6 语句的替换 interleaVe interleave语句的定义是一系列具有相同含义的内嵌alt语句进行替换
本条描述了interleave语 句的替换结构算法
替换应在语法层面上进行
在interleave语句内,不允许 a repeat和return; 使用控制转移语句for,while,dowhile、 ,activate,deaetivate,stop" 、goto、 b 调用备选步 调用包括通信操作在内的用户定义的函数; c 用布尔表达式来防卫imtertee语句的分支 d 指定ese分支 e 由于这些限制,所有未提及的单独语句(如赋值语句,log、send或reply)、阻塞的eal操作以及in- terleave,if-ekse和alt复合语句,都可以在interleave语句内使用
注1如果阻塞的ceall操作和iltlse语句中没有嵌人al语句,那么它们可视为单独语句来处理
对嵌人alt语句. 选项对interleave语句起作用,并需要做特别处理
为简化起见,以下算法不对这两种情况做区分
注2 interleave e语句之" 中也允许 午非阻塞状态的eall操作它们被视为单独语句 本条中描述的算法只对不带嵌人 nterleave语句的interleave语句起作用
如果interleave语句中 已经嵌人了interleave语句,那么应在能够运用算法之前替换嵌人的interleave语句
注3:由于a)e)的限制,为interlkeae语句的内嵌寻找有限的替换总是可能的
替换算法对interleave语句的图形表示起作用,并将其转换为语义上等同的树结构,用该树结构来 描述一系列内嵌的alt语句
对这一点,需要单独语句和复合语句(ifelse、阻塞ceall,al和interleave)的 图形表示
用一个带标注语句的节点来描述单独语句
单独语句序列通过一组用流程线相连的节点来描述 如图1所示
GB;/T26857.4一2018 PI.send(yVar): P.send(MyVar): aTN3单独语句 的图形表示 ba P.send(MyVar); PI.send(yVar): X;=7 5; x:=7+5: TTCN-3单独语句序列 的图形表示 图1TcN-3单独语句的图形表示 图2所示为ifelse语句的图形表示
ifr-else语句由IF节点表示,带有两条流程线,连接于两种选 择中的第一个语句
如果在if-else语句之后还有一些语句,那么不带EL.SE分支的ifelse语句以相同 的方式来表示
这种情况下,表示else分支的流程线连接至ifelse语句后的第一个语句上
不带 ELsE分支和不带后继语句的ifelse语句,用只带有一条流程线的IF节点来表示
注4:图1中流程线上的标注仅用于增强可读性
算法只使用流程线表达的关系而不使用流程线上的标注
if(x<7) EL.SE P1.send(MyVar); 冈.sendMyYar) :=7+5, else x :=7+5 X水2 aTTCN-3if-else 语句 的图形表示 a 《7 if (x ELSE .send(MyVar): PP.sen(MyVar) x*2 TTCN-3不带else分支的if-else语句 的图形表示 图2ilelse语句的图形表示
GB/T26857.4一2018 图3所示为阻塞eall语句的图形表示
阻塞call语句用BL.OCKINGCALL节点来表示,它带有 若干条连接至不同选择的getreply和catch语句的流程线 2oE-3 H.cal1(MProe:[,truel. Pl.getreply(MProc:?,-) etverdiet(oess 0 P1.catch(MProc,MException P1.catch(timeout) setverdict(fail); 5 aTTCN-3阻塞调用语句 BL0CKINGCALL Pl.cal(MyProe:t-,true),20E-3) getreply(MyProc:{?,-}) P1.catch(timeout) Pl.catch(MyProc,MyException) setverdict(pass); seterdict(fail) x:=7+5 a 的图形表示 图3TICN-3阻塞调用语句的图形表示 图4所示为alt语句的图形表示
alt语句用alt节点来表示,它带有若干条连接至不同选择的流 程线
GB;/T26857.4一2018 Pl.cal1(MProe:(,true),20E-3) P1 .getreply(MProc:?,-" sterdict(gess 口P1.catch(MProc,MyException) 口 P1.catch(timeout) setverdict(fail); 5 aTTCN-3阻塞调用语句 BL0CKINGCALL PL.cal(MyPoe:t-,true;},20E-3) getreply(MyProc:?,- P1.catch(imeout) Pl.catch(MyProc,MyException) setverdict(pass): setverdict(ail) x;=7+5; 的图形表示 图4TIcN-3at语句的图形表示 通常,ifelse,阻塞eal和alt语句的图形表示都是不带回路的有向图,对应不同选择的流程线在离 开语句时将会联合到一起
通过复制,可将此类有向图转换成语义上等同的树表示
如图5中所示,它 针对的是图4中的alt语句
以下描述的算法将构造此类树表示
GB/T26857.4一2018 alt [x<5]Pl.receive(MyMessageOnel etverdiet(oass) ;=7 5: 口P1.receive(MMyMessageTwo 7+5; D Tl.timeout setverdict(fail): 7+5; 语义上等同于图a)的TTCN3alt语句 ALT xGB;/T26857.4一2018 interleave P.receiveM /Ll /ALT alt P1.receive(M3) D /L2 setverdict(pass) /L3 T1.timeout /L4 P2.receive(2 L5 " " if(x5 AMr 小 alt " O L6 P2.receive(M4) n L7 setverdict(pass); /L8 Compl.done 7 +5 /L9 else P3.cal1(MProcTempl,20E-3)) 1C(=BL0CKINGCALL P3.getreply(ReplyTempl) //L10 alt //AL1 口 P2.receive(M5 //L11 P2.receive(MG /L12 /L13 P3.catch(timeout setverdct(fail): /Ll4 TTCN-3interleave语句 图6TICN-3interleave 语句的图形表示
GB/T26857.4一2018 L10 L13 LI L12 的图形表示 ba 图6续 形式上,interleave语句可用Gl=(S/,F)图形来描述,其中 S 是一组允许的TTCN-3语句; F(st×St)描述流的关系
允许TTCN3语句的术语指的是以上6.6中对interleave语句的静态限制a)e). 对构造算法,需要定义以下函数 REACHABE函数
返回图G1=(Sr,F)中可从语句到达的所有语句 REACABLE GI sUstmt|stmtESt3(s=x 1,x?..,x, stt 其中:xEs',iE1nA(xi,x/+)e 注5斜体下划线字符表示函数,斜体及斜体加粗字符表示图或语句
函数
返回图GI St,F)中语句s的所有后继语句 GI stmntstmtES1s,stmt)EF ENABLED函数
返回图GI=(sr,F)中没有前驱的所有语句 ENABLEDGI stmt|stmrESAFnss}=" KND函数
返回代表interleave语句图形中的TTCN-3语句类别或类型 DISCARD函数
删除语句s或来自图GI=(sr,F中的一组语句S,并返回结果图GI’一 (S',F' 对单个节点 DISCARD s,GI)=GI’其中:GI'=(St',F’),且St'=Sr\(s和 F'=Fn(S\s}xs\{s)). 对节点组 DISCARD s,GI)=G1’其中:GI'=(st',F'),且st'=Sr\s和 =Fn(Sr\s×S\S RECEVNG函数
获取图G1中的一组语句,并返回所有接收语句: RECEIVING S=stmt ESKIND stmt)Ereceive,trigger,geteal stt 10
GB;/T26857.4一2018 getreply,cateh,check,done,timeout} RANDOM函数
随机地从一个给定的集合s中选择一个元素并返回s.
RANDOM s)=s其中:sEs 树的构造算法(见图7)是一个递归过程,在每一次递归调用中,为特定节点构造后继节点
一个类 似于C的伪代码记法中给出了该过程,它使用以上定义的函数和一些额外的数学符号
G cOSTRCT-SCCESsORS(statementIype*predecessor,graphType statementType表示构建树的节点类型 表示最后一个被创建的节点 *predecessor graphType表示TCN-3语句图类型 Gd 被值调用,表示子图,由现有的所有TTCN-3语句组成,这些语句都应 被考虑 vargraphypemyGraph; varstatementTypei,myStmt varstatementType*newStmt,*firstInBranch; 递归构建的树的新语句节点的指针 检索在GI中无前驱结点的TTCN-3语句集合 arstatementSetenabStmts:;=N.(G);所有不带前驱结点的语句 E(ematstmts);/eanastmrs中有接收语句 varstatementSetenabRecStmts:= varstatementSetenabNomRecStmts:=enabStmts\enabRecStmts:;//enahbStmts中无接收语句 if(GI.St 假设GI.Sst表示GI中的语句集合 没有语句剩余,递归终止条件 return, elseif(enabNonRecStmts!= 0 处理在enabStmts中无接收语句 myStmt = RANOenabNonRecStmts); 在enabNonRec中只有一个语句,因为算法会持续进行, /直到有一个插入语句的分支 newStmt create(myStmt,predecessor); 在树中创建表示myStmt的新节点 更新在'newStmt'和'predecessor'中的指针 if IF MmyStmt) A(myStmt) BL0KING.CALL) G foreachiinSSRS(myStmt, TrCN-3 图7 interleave语句的替换算法 11
GB/T26857.4一2018 firstlnBranch:=create(i,newStmt): 根据一个if-else语句创建分支中第一个语句的第二个节点 / 注意,该创建语句将被用来创建节点,节点表示并接收阻塞调 /用操作中的语句 U myGraph DSCA((i,mStmt ERE(myStmt,GID\EE(I,GD) /移除myStmt可访问、但i不可访问的i,myStmt和所有语句 1/后者考虑GI子图中控制流程分支 CONSTRUCT-SUCCESSORS(firstInBranch,myGraph); /下一步递归 elseifKN(myStmt ALT foreach(incESSRs(myStmt,Gr) cONSTRCT-SUCCESsORSs(a (mystmt,CIR(REAHL(myStmt G)\EHLE(Gi,G))): 下一步递归中,ISR(REAMIB.myStmt,G)\EAHE(i,G))考虑 /对应不同接收事件的流程控制分支 mystmt是孤立语句 else CONSTRICT-SUCCESSORS(newSonNode,DISCR(myStmt,G)):; /下一步递归 else//处理插入的接收事件 if (oredecessor)!=AM /如果插入操作未受嵌入alt语句影响,则丢失alt节点需要被创建 predecessor;:=create(AL,predecessor):; foreachiinenabRecStmts) newStmt create(i,predecessor); /新节点 CONSTRUCT-SUCCESSORS(newStmt,SCAR(i,GD));//下几步递归 图7续) -棵空树的根节点以及TTCN3语句图可调用cONsTRUCTsUcCEssORs函数(见图7)这些 12
GB;/T26857.4一2018 TTCN-3语句描述了被替换的interleave语句
终止后,可以用根节点来访问构建的树
将CONSTRUCT-sUCCEsSORS函数应用于图6中所示的interleave语句,将形成图8中所示的 树
标签指的是图6a)中的各语句
多个标签是代码复制的结果
与图8中的树相对应的TTCN-3代 码在图9中显示
注6图7中的算法应用示例见图6,图8和图9)表明了大多数特殊情况,即流程线的分支和连接、嵌人的alt语 句阻塞的eal语句和if-else语句
图8将图7中的算法用于图6中的interleave语句的结果 13
GB/T26857.4一2018 alt ALT 口P1.receive(Mn m alt ALT m 口P1.receive(3) 2 /L3 setverdict(pass):; MT alt P2.receive(M2 if (x<5 /L8 alt //L9 口P2.receive(M4 setverdict(pass); /(BL0CKINGCAL ;=7+5; L10 m n Compl.done ALT x:=7+5: 7/Ll 7 L12 else 2OE-3) L13 .cal1(MProcTempl. M 口P3.getreply(ReplyTempl 1/L14 alt P2.receive(M5 /L4 Ar P2.receive(MG) " " 口P3.catch(timeout) " setverdict(fai1); I6 " O Tl.timeout 19 alt 口巴.receive(M2) if(x<5 //L8 alt //L9 [口 P2..receive(M4 setverdict(pass); ;=7 /c(B0CKINGCL +5 L0 n Compl.done ALT /Llr x:=7+5: /L12 else 3.cal1(yProcTempl,20E-3) 1/L13 口P3.getreply(ReplyTempl /L14 语法上与图6中interleave语句等同的TIN-3代码 图9 14
GB;/T26857.4一2018 alt P2.receive(5) 1L5 P2.receive(M6 /L11 /L12 0P3.catch(timeout setverdict(fail): /L13 l L14 口P2.receive(M2 if(x5 IF m Lr " alt " 口 6 P2.receive(M4 /1; m setverdict(pass) =7+5: L9 儿0 alt 口P1.receive(M3) setverdict(pass):; T1.timeout /L4 Compl.done 1I8 m 八 L9 s 5 X n AMT alt 1.receive(M3 m [口P1. L2 n L3 setverdict(pass): 口Tl.timeout /L4 了 Pl.receive(M3) /2 13 setverdiet(oass alt AMT Ls O P2.receive(M4) " setverdict(pass):; n L9 7十5 口Compl.done L8 m /L9 x;=7+5: 口TI.tinmeout 1L4 /ALT alt O P2.receive(M4 /L6 setverdict(pass); /L7 图9续 15
GB/T26857.4一2018 L9 +5 O Compl.done /L8 :=7+5 //L9 else 20E-3 3.cal1ProeTempl. /c(0CKINGCAL 口P3. erplyRoTuem) /L10 alt 刀 ALT /2 口P1,receive(3) /L3 setverdict(pass); AMT alt 口巴.receive(M5) L1 口 P2.receive(M6 L12 口TI.timeout //L4 AMLT alt 口2.receive(M5) L l P2.receive(MG) /L12 口P2.receive(aM5) //L1l MT alt 口P1.receive(M3) /L2 setverdict(pass): /L3 口Tl.timeout //L4 /L12 口巴.reeeive(M6) 1 ALT alt 口P1.receive(M3) 1 L2 /L3 setverdict(pass); T1. 口 /L4 timeout 口P3.catch(timeout) L5 m /Ip setverdict(fail): LT alt 口 P.receive(M3) /L2 L3 setverdict(pass): 口T1l.timeout 图9续 16
GB;/T26857.4一2018 D P2.receive(M2 /L5 if(x<5 m F alt 刀 ALT 6 口P2.receive(M4) < setverdict(pass); /L X:=7 5 Mn alt /L 口P1.receive(M1 ALT 刀 alt 口 2 / P1.receive(M3 n L3 setverdict(pass); 口Tl.timeout l/L4 了 Compl.done /L8 L9 x:=7 5 ALT alt 川 L 口P1.receive(M1 n alt ALT [口P1.recelve(M3) 2 m l L3 setverdict(pass); 口T1.timeout 1/L4 口PI.receive(M3) /L2 L3 m setverdict(pass) ALT alt O 6 P2.receive(M4 川 L7 setverdict(pass); / L9 =7+5: L8 Compl.done n :=7+5 L9 口T1.timeout /L4 LT alt 2.receive(M4) l L6 setverdiet(oas) /L7 ;=7+5: l/L9 图9续) 17
GB/T26857.4一2018 Compl.done 1 L8 7+5: /L9 else P3.cal1(OMyProcTempl,20E-3 /1 C(-BL0CKINGCALL / P3.getreply(ReplyTepl L10 alt AMT 口P2,receive(M5) L1 AMn alt L1 m 口P1.receive(Ml alt " P1. e(M3 的 receive setverdict(pass); 1/L3 Tl.tineout /L4 7 2.receive(M6) /L12 ALT alt [口]P1.receive(M1 1 l alt ALT /L2 门 P1.receive(OM3) L3 / setverdict(pass); 口T1.timeout /L4 口Pl.receive(Mn 7 ALT alt L 口P.receive(3) setverdict (pass); An alt Ll1 口 P2.receive(5) L12 口 P2.receive(M6 口T1 /L4 timeout alt ALT 口 P2.receive(M5{ Ll L12 P2.receive(M6) 口P2.receive(M5) /L alt 1/ALT 图9续 18
GB;/T26857.4一2018 P1.receive(O3) L2 /L3 Setverd rdiet(Opass) 口T1.timeout 1/L4 口 /Ll2 巴.recelve(6y LT alt n 口P1.receive(C3) L2 setverdict(pass); l L3 口 /L4 T1.timeout P3.catch(timeout) /L13 setverdict(fail); L14 m alt n ALT 1 了 P1,receive(M1 ALT alt O P1.receive(M3 m 2 / setverdict(pass):; L3 [口 T1.timeout /L4 图9(续) 6.7trigger操作的替换 rigger操作从指定端口上的一个消息流中过滤掉带有特定匹配标准的消息
trigger操作的语义 可以通过带有两个reeeive操作和一个goto语句的替换来描述
操作语义假设该替换在语法层面上 进行
示例1: /以下trger操作 alt ]MyCI.triggerMyType;? 应由如下语句替换 at ]MsyCL .receiveMyIype:?) ]MyCLreceive repeat 如果trigger语句用在更复杂的alt语句中,那么将以同样的方式进行替换
示例2 /以下al语句包括一个trigger语句 19
GB/T26857.4一2018 alt ]Pco2.ree sto; ]MyCI.trigger(MyType;?) ]PCO3,catch setverdiet(fail) stop: //它将由如下语句替换 alt PC(O2.receive stop; ]MyCL.reeiveMyType;? ]MyCL.receive repeat; ]PCO3.ceatch setverdietfail) stop; 6.8 seleect-case语句替换 当比较一个值(在seect关键字之后由一个selectespresio定义的)和另一个值或另一些其他值 在case分支由模板实例定义)时,可以使用select-case语句来替换一组内嵌ifelse语句
因此,select- case语句的语义可以由它的一组内嵌ifelse语句的替换来描述
为了避免seleet-expression产生多值, -组内嵌的if-else语句应被放到一个语句块里,并且应在语句块的开始时将表达式的值存在一个变量 里
操作语义假设此替换在语法层面完成 Select-eaSe 语句表示如下: >) select(expression一> case templatelnstin templatelnst statementblock templatenstn caSe termplatelnst statementblock
casetemplatelnst templatelnstn statementbloc caSeelse statementblock、 kx十1一 select-ease 语句的内嵌ifelse语句的语法替换如下所示: 20
GB;/T26857.4一2018 ar
GB/T26857.4一2018 6.9简单break语句的替换 简单break语句指用作离开循环,交叉语句和alt语句的break语句
这样的简单break语句被认 为是使用一对goto-label语句的简短形式
对每个break语句,Iabel语句被加在循环,alt语句或扩展的 interleave语句之后
label语句应有一个未使用的标签
break语句被这个特定的标签的goto语句 替换
interleave语句已被解释
因此,goto语句不能在interleave语句中使用的限制不再有效
注8.6.2定义了用于离开一个备选步的break语句的语义 示例: 以下break语句的循环: while(condl//condl是一个监视循环的布尔值 if(cond2 break; /在语义上等同于 while(condl//cond是一个监视循环的布尔值 if(cond2) utobrek_12345;//brek_12345是一个独一无二的标签 1 lahelbreak_12345 6.10continue语句的替换 对每个continue语句,labe语句被加在循环体的 rotime语句是一对slwtahel语句的简短形式 最后
labe语句应有一个未使用的标签
contine语句被这个特定标签的goto语句替换 示例: /以下是有continue语句的循环 hle(comdln)(cona是一个监视循环的布尔位 f(cond2) ontimue; 1/在语义上等同于; while(condl)/condl是一个监视循环的布尔值 if(cond2) 22
GB;/T26857.4一2018 gotocontinue_12345;//continue_12345是一个独一无二的标签 labelcontinue_12345; sconneet和unmap 6.11添加默认参数到不带参数的dise 操作 不带任何参数的discommeet或ummap操作的使用是带selrf:al参数的操作的简短形式
它能使调 用disconneet或unmap 操作的组件的所有端口断开连接或取消映射
在操作语义上,应在所有出现不 带参数的disconnec和unmap p操作的地方添加参数selr;all port 示例 每个 discneet 应用如下方式展开 isconeet(self:allport 而且每个 unmap 应用如下方式展开 umap(seIf:allport); 6.12添加参数的默认值 形式参数可能会有默认值
如果在一个具体调用中没有提供实参,那么默认值被加到实参列表里
如果实参列表中已经使用了列表记号,那么默认值将根据在形参列表中的顺序被插人
如果实参列表 中已经使用了赋值符号,那么默认值被附加到实参,默认值的顺序与实参列表的顺序一致
示例 functionf_comp(inintegerp_intl,inintegerp_int2;=3)returninteger varintegerv;=P_intl十p_int2; retur V 每个 _comp(1 1/应被扩展为 f_comp(l,3); 每个 f0 _comp(p_intl;=1) 应被扩展为 _comp(p_intl;=1,p_int2;=3); IrCN-3的流程图语义 7.1流程图 7.1.1概述 流程图是一个有向图,它由带有标签的节点和带有标签的边界组成
在表示行为描述的执行期间, 遍历流程图描述了可能的控制流
23
GB/T26857.4一2018 7.1.2流程图框架 流程图应置于一个定义流程图边界的框架中
流程图的名称跟在关键字flowgraph(这些不是 TTCN-3核心语言的关键字)后,并应置于流程图的左上角
按照惯例,假定流程图的名称指的是由流 程图所表示的TTCN行为描述
一个简单的流程图如图10所示
flowgraph MSimpleFlowGraph Mimn 图10一个简单的流程图 7.1.3流程图节点 7.1.3.1 概述 流程图由起始节点、结束节点、基本节点和引用节点组成 起始节点 7.1.3.2 起始节点描述流程图的起始点
流程图应只有一个起始节点
起始节点如图l)所示 流程图起始节点 流程图结束节点 b 图11起始节点和结束节点 7.1.3.3结束节点 结束节点描述流程图的终点
一个流程图可以拥有几个结束节点,或者在闭环的情况下,没有结束 节点
没有后继节点的基本节点(见7.1.3.4)和引用节点(见7.1.3.5),应与一个结束节点相连,以表示 它们描述一个讹醒图路经的最后动作
结束节点如图1b)所示 基本节点 7.1.3.4 基本节点描述一个执行单元,即它在一步内执行
基本节点具有一种类型,并且取决于其类型,它 一个相关的属性列表
图12给出了两个基本节点
可以具有- 在基本节点的标注中,节点的属性跟在节点类型之后,并置于圆括号中
类型和属性用于确定在执 行所表示的语言结构期间要执行的动作
属性描述将从相应的TTcN3结构中获取信息 属性拥有一些值,操作语义将通过引用属性名称来获取这些值
如果需要,允许通过使用赋值符号 ”来为基本节点赋予一些明确的值
图12给出了一个示例 24
GB;/T26857.4一2018 nodte-type node-type (atr1,atr2 (atr1,=7, .attrm attrnm;=8.0 图12带属性的基本节点 7.1.3.5引用节点 7.1.3.5.1概述 引用节点指的是作为子流程图的流程图片段(见7.1.5)
引用节点可用流程图中的流程图片段替 换
引用节点的节点标注为流程图片段提供了引用
引用节点如图13a)所示
segment一reference OR segment-reference segment-reference OR segment-reference 单独引用节点 bOR组合三个引用节点 图13引用节点 7.1.3.5.2引用节点的oR合并 某些情况下,一些流程图片段可以替换引用节点
对这些情况.OR运算符可用来表示一些流程图 片段[见图13b)]
在表示模块控制、测试用例或函数的实际流程图中,由所表示的结构来确定一个选 择项
7.1.3.5.3引用节点的多次出现 某些情况下,相同种类的引用节点可以在流程图中出现零次、一次或多次
在常规表述中,通过使 用运算符符号‘十'(一次或多次重复)和" '(零次或多次重复),来描述常规表述中各部分可能的重 复
如图14所示,通过引人带相关运算符符号的、加双外框的引用节点,这些运算符被应用到流程图 中
一旦出现零次(使用带“*’运算符、加双外框的引用节点),单流程线(见7.1.4)将替换引用节点
segment-reference segment-reference 图14引用节点的重复 引用节点可能重复的最多次数可以以圆括号中的一个整数的形式来提供,该整数跟在加双外框的 25
信息技术开放系统互连测试方法和规范(MTS)测试和测试控制记法第3版第4部分:TTCN-3操作语义GB/T26857.4-2018
TTCN-3操作语义是MTS测试和测试控制记法第3版第4部分中定义的一种测试语言,它可以用于对不同类型的系统进行测试,包括硬件系统、软件系统以及网络系统等。使用TTCN-3操作语义进行测试的好处在于,其具有良好的可扩展性和可重用性,能够提高测试效率、降低成本。
为了保证测试的可靠性,GB/T26857.4-2018对TTCN-3操作语义进行了详细的规范。首先,该标准明确了TTCN-3测试用例的基本结构和内容,包括测试用例的描述、测试步骤、预期结果等。其次,该标准还规定了TTCN-3测试环境的基本要求,包括测试工具、测试平台、测试数据等。此外,该标准还对测试过程中可能遇到的一些问题进行了说明,并提出了相应的解决方案。
在实际的测试过程中,TTCN-3操作语义能够帮助用户快速准确地进行测试,并提供可靠的测试结果。同时,由于其良好的可扩展性和可重用性,TTCN-3操作语义也被广泛应用于各种开放系统的互联测试之中。
总之,MTS测试和测试控制记法第3版第4部分:TTCN-3操作语义GB/T26857.4-2018是目前比较流行的一种测试方法,在信息技术领域中具有广泛的应用价值。该标准为TTCN-3操作语义的使用提供了详细的规范和指导,能够帮助用户快速准确地进行测试,并保证测试结果的可靠性。