当前位置: > 论文中心 > 计算机论文 >

基于C++语言的TTCN—3测试平台中字符模式匹配实现方法

时间:2015-04-16 11:03 点击:
摘要:TTCN-3是一个由ETSI维护的全球适用的标准测试语言。在TTCN-3测试平台设计与实现中,字符模式匹配机制是一个重要组成部分。提出一种采用面向对象的程序设计语言C++来实现TTCN-3测试平台中字符模式匹配方法,并给出了实例验证。 关键词:C++;TTCN-3;正
  摘要:TTCN-3是一个由ETSI维护的全球适用的标准测试语言。在TTCN-3测试平台设计与实现中,字符模式匹配机制是一个重要组成部分。提出一种采用面向对象的程序设计语言C++来实现TTCN-3测试平台中字符模式匹配方法,并给出了实例验证。 
  关键词:C++;TTCN-3;正则表达式;字符模式匹配 
  中图分类号:TP306 
  文献标识码:A 文章编号:1672-7800(2015)003-0030-02 
  0 引言 
  TTCN-3(Testing and Test Control Notation Version 3)是目前流行的一种测试语言。在TTCN-3测试平台设计与实现过程中,模板匹配机制是需要实现的一个重要部分,包括指定值匹配、缺省值匹配、值列表匹配、补值列表匹配、任意值匹配、任意值或空匹配、值范围匹配、超集匹配、子集匹配、任意元素匹配、任意元素或空匹配、排列匹配、字符模式匹配共计13种匹配机制[1],其中一个重要匹配机制为字符模式匹配,它可以用于定义一个接收模板需求的字符串格式并允许一些元字符的使用,例如,在一个字符模式中,“?”和“*”分别意味着匹配任一字符和匹配任意数目的任一字符。字符模式匹配机制与正则表达式有许多相似之处,本文采用面向对象的程序设计语言C++中的“准”标准库boost库中的正则表达式库regex来实现TTCN-3模板的字符模式匹配机制。boost库是一个开源并且完全免费的C++程序库,而boost::regex是目前C++语言对于正则表达式支持较好的程序库。 
  1 问题分析 
  TTCN-3中可以定义的模板包括用于发送的模板和用于接收的模板,而字符模式匹配机制可以用于在接收模板中定义一个需要接收字符串的格式,关键字是“pattern”。需要注意的是,字符模式匹配机制只能用于匹配TTCN-3中的charstring和univeral charstring数据值[1-2]。举例如下: 
  template charstring MyTemplate :=pattern “a*bc” 
  该模板可以匹配任意以字母“a”开头,接着可以是任意数目(可以是0个)任一字符,之后是以字母“bc”结尾的字符串。其中“*”称为字符模式的元字符,TTCN-3字符模式中的元字符指那些在字符模式中具有特殊意义的专用字符。元字符本身是一个个单一字符,但是不同或者相同的元字符组合起来可以构成大的元字符。 
  正则表达式(Regular Expression通常缩写成“regex”)指一个用来描述或者匹配一系列符合某个语法规则的字符串的单个字符串,因而具有比单个或多个字符串更强大的描述能力。通俗地讲就是用一个“字符串”来描述一个特征,然后去验证另一个“字符串”是否符合该特征[3-4]。正则表达式对于解决相当数量的模式匹配问题至关重要,许多程序设计语言都支持利用正则表达式进行字符串操作。正则表达式引擎则是一种可以处理正则表达式的软件,引擎通常是更大的应用程序的一部分。C++程序设计语言中支持正则表达式的准标准库boost::regex,头文件是,boost::regex支持的默认正则表达式语法是perl语法。 
  从以上分析可以看到,实际上,TTCN-3中的字符模式也即是TTCN-3所支持的正则表达式,但是由于TTCN-3字符模式的语法规则和C++所支持的perl语法正则表达式有所不同,两者并不兼容,因而在TTCN-3测试平台实现中,需要将符合TTCN-3语法规则的字符模式翻译成符合perl语法的面向对象程序设计语言C++所支持的正则表达式。以charstring类型为例,对TTCN-3测试平台开发过程中定义与实现字符模式匹配的过程加以说明:首先定义charstring类型的模板,实例化为对应的数据值,设定相应的字符模式匹配标识,为相应数据值模板对象赋值(无论是否带有具有特殊意义的元字符均视为普通字符串类型),最终返回带有字符模板匹配机制的charstring数据值模板对象实例;在接收操作中,需要将系统接收到的charstring数据值与带有字符模式匹配机制的模板进行匹配,实现匹配操作时,首先应该将带有字符模式匹配机制的模式串转换为符合Perl语法的正则表达式,之后才可以使用匹配算法regex_match进行匹配操作,并返回匹配结果(true 或是false),系统根据匹配结果进行下一步测试操作,如图1所示。以上过程实际上涉及了TTCN-3测试平台中TE实体内部的3个交互实体:ETS、TTCN-3运行时系统(T3RTS)和一个可选的内部编解码系统(EDS)实体。为了突出本文内容,这里隐去这一部分,TTCN-3数据类型、数据值及模板表示见参考文献[5],不再赘述。 
  2 实现方法 
  从以上分析可以看到,匹配操作中的关键一步就是实现模板字符串从TTCN-3字符模式匹配机制到符合Perl语法的正则表达式的转换,两者区别主要在于某些带有特殊意义的元字符有所不同。TTCN-3字符模式匹配机制与Perl语法的正则表达式中不同元字符的对比如表1所示。 
  从表1可以看出,两者元字符的含义确实不同。本文采用的转换思想如下:①构造含有需替换TTCN-3字符模式元字符的正则表达式reg;②使用boost::regex_replace方法进行字符串的查找与替换,以及格式转换,如果字符模式中含有“?”、“*”、“*#n”、“#(n,m)”,则替换为符合Perl语法的正则表达式的字符,否则不作任何修改;③使用boost::regex_match方法进行正则表达式的匹配操作,返回值为True或是False。 

   论文榜(www.zglwb.com),是一个专门从事期刊推广、投稿辅导的网站。
本站提供如何投稿辅导,寻求投稿辅导代理,快速投稿辅导,投稿辅导格式指导等解决方案:省级投稿辅导/国家级投稿辅导/核心期刊投稿辅导//职称投稿辅导。


栏目列表
联系方式
推荐内容
 
QQ在线咨询
投稿辅导热线:
189-6119-6312
微信号咨询:
18961196312