基于过程通信的TTCN-3的研究与实现
【摘要】:随着计算机技术的发展,软件和服务的测试的重要性愈来愈突出。TTCN-3作为一种强大、灵活的测试描述语言,其应用领域已经从最初的协议测试,扩展到了互操作性测试、服务测试、以及基于CORBA的平台测试等多个领域。TTCN-3的测试执行需要工具的支持。国外对TTCN-3的研究较早,目前也已经有一些商用测试工具,但其内部实现是保密的,且大多价格昂贵,这不利对于国内对TTCN-3的研究和推广使用。国内目前公开免费下载的只有中国科学技术大学TTCN实验室推出的Loong Testing测试平台,但其只支持消息通信,尚未支持过程通信,无法满足对SOA框架和只提供服务接口的云计算的测试。Loong Testing采用编译执行的方式,即先将TTCN-3测试套转换成C++中间文件,再对中间文件进行调度执行。因此在Loong Testing基础上开发的基于过程通信TTCN-3的工具也包括编译器和执行器。编译器主要作用是将TTCN-3描述的抽象测试套转换成可执行测试套。由于TTCN-3语言类型非常丰富,直接生成中间C++文件复杂度较高,因此在实现时是将编译器分解为编译器模块和翻译器模块。TTCN-3支持前向引用,一遍扫描无法完成编译,兼顾效率和附加信息的需要,整个编译过程采用三遍扫描。第一遍扫描为编译模块中的词法语法分析,采用自顶向下的递归文法编写词法、语法规则进行实现;第二遍为静态语义检查,对符号表的设计与实现,并利用层次链表处理作用域:第三遍为翻译模块的中间文件生成,根据编译模块的参数和控制信息负责具体的翻译,生成c++中间文件。最后对编译阶段的内存管理进行了研究,并将内存池方案与传统实现做了对比。由编译器生成的中间文件不能直接执行,还需要执行器的支持。基于过程通信的TTCN-3执行器涉及到三个部分的设计与实现:设计了支持过程通信的数据结构和消息格式,实现了快照和加锁机制以保证信息完整性:设计了支持通信操作原语的TE接口,实现了发生在测试组件之间和测试组件与被测系统之间不同的通信原语的内部处理;设计了支持执行器接口与运行时接口和控制接口之间的通信接口,实现了支持过程通信相关的运行时接口和控制接口。最后对执行阶段的内存问题进行了研究,给出解决方案。集成了过程通信的Loong Testing平台已被用于DNS域名查询服务测试,通过TTCN-3测试套实例的编译、翻译、和调度执行的全过程,验证了设计与实现的有效性,可用于SOA框架和云计算的测试。