摘 要 首先论述了GPRS网络结构以及有关一致性测试的基本方法和原则,从系统的整体构架、模块划分和数据处理流程等方面,详细描述了GPRS网络协议栈测试系统,深入地研究和分析了基于SDL实现的GPRS协议栈一致性测试方法,最后对系统测试案例的设计思想和实现过程进行了说明。测试结果表明,该方法能显著提高GPRS协议一致性测试效率。
1、前言
在现代通信领域,要保证通信系统的正常运行和通信业务的顺利开展,取决于协议软件是否满足协议规范的要求,必须进行专门的协议测试加以保证,需要通过完备的协议测试进行系统验证。GPRS作为当今移动通信应用热点之一,业务功能的实现的前提,同样取决于通信软件是否符合协议的要求,因此进行GPRS协议栈中有关功能实体和接口的测试十分重要。解决GPRS协议一致性问题首当其冲,对于准确地验证GPRS网络的接口规范、开放性各项技术具有十分重要的意义。本文针对一致性测试,采用形式化的SDL测试语言作为协议标准的描述语言,协议语义不存在二义性,该抽象描述采用标准实用的测试方法和工具实现,达到了简化测试模型,提高测试效率的目的,非常适合于GPRS协议的软件自动测试。
2、GPRS网络协议栈
GPRS网在GSM网的基础上增加了GPRS业务支持节点(SGSN)和GPRS网关支持节点(GGSN)两个功能实体,提供基于IP的分组数据传输,符合ISO定义的OSI网络七层结构。GPRS采用TCP或UDP协议进行应用层数据传输,所谓协议栈就是对信息进行多次封装和解封的过程,以便能够在不同的实体间传送信息。GPRS网络协议栈是一种对等的协议结构,其结构如图1所示。
GPRS骨干网一般有两种构建方式:基于因特网和虚拟专网VPN的方法,后者增加了系统的隐蔽性和报文的保密性。GPRS骨干网采用GTP(GPRS隧道协议),该协议允许多种协议包如IP包或X.25包等在GSN组件间用隧道方式穿过,通过隧道方式可以封装任意数据,实现GPRS骨干网与多种外部数据网互通。
3、SDL一致性测试原理
所谓一致性,是指协议的形式规范和协议实现行为之间的一致,即检验协议是否符合规范的要求。协议一致性测试则是通过测试程序,检查测试实现(IUT)是否符合协议规范的要求。近年来,协议一致性测试是国际上非常关注的、也是发展较快的一个研究领域,相对其他测试领域,一致性测试唯一能给出理论框架和方法论,目前,一致性测试通常采用抽象测试方法完成,即根据对IUT(被测协议实现)输入的控制和输出的观察来描述测试进程。OSI协议标准规定了协议直至一致性测试的基本模型,如图2所示。该模型根据协议实体的PDU(协议数据单元)和协议实体上下的ASP(抽象服务原语)来定义协议实体所允许的行为。其中N层实体的行为根据(n)ASP和(N-1)ASP来定义,借助协议测试模型,可以实现对各层ASP之间行为的观察和控制。
图2关于一致性测试的基本模型可以通过形式化模型,即形式化描述语言进行表达。其中SDL(规格和描述语言,Specification and Description Language)是ITU开发的一种形式描述语言,是一种能够精确定义通信系统功能规格及对其行为进行描述的国际标准化的正式语言,它主要用于实时的交互分布式系统的形式化描述。SDL使用扩展有限状态机(EFSM)的概念来描述对象。SDL一般有两种表示法:SDL/PR文字表示法和SDL/GR图形表示法。在实际应用中,开发人员将应用SDL图形描述,再由SDL工具将其转化为C语言源代码,或者CHILL源代码,最后嵌入到实际开发环境中。SDL采用多层结构来描述整个系统,非常适合GPRS协议栈的抽象描述。图3是SDL测试的一般原理。
4、GPRS协议栈测试系统
采用SDL语言描述抽象测试集的4个部分:测试集概况、声明部分、约束部分和动态部分。利用SDL语言抽象出GPRS协议的系统、块、进程和过程并对其进行形式化描述,以SDL形式化描述的TTCN树表结合表示法作为测试工具,在短时间内完成了稳定的通信协议程序。系统选择黑盒测试法,首先将IUT看作一个测试实体,根据测试者的测试目的,通过选择IUT与测试环境的接口来进行测试,以达到测试和验证IUT的目的。通过与SDL的联合使用(协同仿真),生成消息序列流图(MSC),通过观察IUT内部和IUT与环境(测试系统)之间的消息序列和数据流,达到查找错误的目的。在GPRS协议栈的测试过程中,测试用例设计是完成一致性测试的关键,以事件语句为例:事件语句主要包括SEND、RECEIVE、TIMEOUT和OTHERWISE等。发送事件SEND用符号“!”标识,事件地点即PCO的名称在“!”前设定,“!”后封装待发送的消息名称,要将ASP或PDU通过一个PCO发送到IUT,需要调用SEND语句,例如:PCO Identifier!ASP Identifier,SEND语句也可以附加限制条件,例如赋值语句和定时器语句等。这些语句的调用顺序如下:
SEND3[QUALIFIER]1[ASSIGNMENT_LIST]2[TIMER_OPERATION]4
图4是测试系统的实现框图,其中测试用例全部采用SDL描述,由测试工具激励产生。
GPRS协议栈的验证包括一系列的进程和过程,进程采用扩展状态机实现,描述GPRS协议栈事件过程中的动作和状态变迁。在SDL对GPRS形式化描述的基础上,利用SDT的Simulator UI完成了协议栈原语操作的验证测试。测试结果表明,形式化的基于TTCN的测试执行方法不仅适用于协议的一致性测试过程,对于互操作测试和多方测试也是适用的。
5、结论
测试结果表明,基于SDL形式化描述的一致性协议测试,可以以最快的速度激励产生标准的协议测试程序,及时发现协议实现是否符合一致性要求。方法具有很强的灵活性,可根据一致性测试或借口测试的不同要求,修改测试程序的产生方式,尽早发现并修改错误,最大程度地降低出错率,从而到达降低成本的目的。特别是当同一个网络内的其它实体发生变化时,形式化描述的灵活性能够确保各层次测试描述的一致性。本文虽然以讨论一致性测试为主,但该方法对于互操作性测试和性能测试同样有借鉴意义。
参考文献
1 ISO/IEC 9646-2(ITU-T Rec.X.291):抽象测试集规范
2 蒙移发,徐惠民,高强.协议验证与一致性测试方法[M].北京:电子工业出版社,2003.
3 GPRS原理及其网络优化,韩斌杰等,机械工业出版社,2003.6
4 F Belina,D Hogrefe,A Sarma.SDL with Applicalion from protocol specification. Prentice Hall(UK)