摘要 随着通信技术的快速发展,针对协议的测试越来越重要。本文介绍了协议一致性测试和互操作测试,分析了二者的优缺点,同时明确了它们之间的关系,以及相关标准进展情况,从而指导我们选择正确的协议测试技术。
1、引言
随着通信技术的快速发展,网络之间的互联互通以及通信业务越来越依赖通信协议的发展。可以说,通信系统的正常运行和通信业务的顺利开展,首要就是取决于协议软件是否满足协议规范的要求。所以必须进行专门的协议测试加以保证。
协议测试技术的目的就是保证通信协议正确实现以及确保不同的通信设备之间可以正确互联。在通信测试中,协议测试仅仅是一种黑盒测试,它并不检查协议代码,而是按照协议标准,通过控制观察被测协议实现的外部行为对其进行评价。协议测试技术主要包括一致性测试(Conformance Testing)和互操作测试(Interoperability Testing)。本文重点介绍两种协议测试技术以及它们之间的关系。
2、协议测试技术介绍
2.1 一致性测试
一致性测试主要是确定被测实现(Implementation Under Test,IUT)是否与标准规定一致。通常利用一组测试案例序列,在一定的网络环境下,对被测实现进行黑盒测试,通过比较IUT的实际输出与预期输出的异同,判定IUT是否与协议描述相一致,采用的测试拓扑见图1。
图1 一致性测试拓扑图
根据ITU-TX.290系列ISO/IEC-9646定义的一致性测试方法,测试标准包括三部分:抽象测试集(ATS)、协议实现一致性说明(PICS)和协议实施附加信息(PIXIT)。可执行测试集(ETS)在以上三部分的基础上生成。ATS规定某一标准协议的测试目的、测试内容和测试步骤:PICS说明实施的要求、能力及选项实现的情况;PIXIT提供测试必须的协议参数。其测试步骤如下:
首先是静态测试:测试仪读取PICS/PIXIT文件并根据协议标准进行静态测试,检查IUT参数说明是否符合标准。
其次是动态测试:测试仪根据PICS/PIXIT文件和ATS生成ETS,然后执行ETS对IUT进行激励/响应测试。具体采用的测试类型包括:本地测试方式、分布式测试方式、协同测试方式和远程测试方式。
最后是测试报告:对测试执行产生的测试记录文件进行分析,按照测试报告描述规格生成一致性测试报告。协议一致性测试报告记录了所有测试案例的测试结果:成功(PASS)、失败(FAIL)、不确定(INCONCLUSIVE)。
采用的工作流程如图2所示。
图2 一致性测试流程图
2.2 互操作测试
互操作测试评价被测实现与相连接相似实现之间在网络操作环境中是否能够正确地交互并且完成协议标准中规定的功能,从而确定被测设备是否支持所需要的功能。互操作测试通常用于研发阶段多厂商准正式测试或者运营商的选型测试,提供重要的互通信息。
事实上,在互操作测试中,被采用最多的形式是测试单位选择经互操作认可的设备来与被测设备进行互操作测试。认可设备可能是终端设备、网络设备或者应用软件,也可能是一个单独设备或者若干设备组合。采用的测试拓扑见图3。
图3 互操作测试拓扑图
在拓扑图中,认可设备(可能是一个或若干设备)和被测设备共同定义测试边界,二者来自不同厂商(至少不同生产线);互操作测试基于用户期望的功能,并由用户控制并观察测试结果,用户可以是人工操作也可以是软件程序。事实上互操作测试主要关注设备功能,而并不关心协议细节。
互操作测试主要包括两个部分:开发互操作测试规范和具体互操作测试过程。
开发互操作测试规范类似于制定一致性测试规范,只不过这个过程通常由进行互操作者根据关注测试功能要点进行制定,该步骤是互操作测试中最重要的部分。相应流程见图4。
图4 互操作测试规范制定流程
具体互操作测试过程和一致性测试过程类似,同样包括三个步骤:测试准备、具体测试、测试报告。具体流程见图5。
图5 互操作测试流程示意图
互操作测试过程除了测试使用规范、测试设备和测试驱动与一致性测试不同以外,其它基本与一致性测试类似。
3、一致性测试与互操作测试优缺点及关系
一致性测试和互操作测试都是测试协议实现重要而有效的方法,在某种程度上可以相互验证,但二者并是完全一样。首先,测试目的不同,一致性测试是确定被测实现是否与标准规定一致,而互操作测试是确定被测设备是否完成要求的功能;其次,测试对象不同,一致性测试的对象是设备或者系统,而互操作测试的对象是设备;再次,测试级别不同,一致性测试是在协议级,而互操作测试是在功能级;最后,测试效果不同,一致性测试适用所有被测实现,而互操作测试主要适用于被测设备之间。
实际测试中,一致性测试通过也并不能保证互操作测试一定可以通过。最根本的原因是一致性测试使用标准规定的绝对完整和正确是不现实的,其中也包含各个标准制定人/制定单位理解不同与利益妥协的问题。具体表现如下:
●标准方面:标准中错误与含糊内容;标准本身的兼容性问题。
●实施方面:人为错误(如编程错误);对于通信标准不同理解;标准本身允许不同选项。
●技术方面:通信网络使用不同流量策略;设备兼容性问题;设备配置问题。
当然,互操作测试仅仅可以证实被测系统中不同设备之间的互操作能力,而不能证实设备是否符合标准,因为互操作测试根本就不关心协议细节。故此,互操作测试不可能替代一致性测试。
其实,一致性测试和互操作测试是互为验证、互为补充的关系,只有把两者合理地结合才能完成完整的协议测试。
4、相关标准制定情况
在过去通信发展中,国际标准组织主要关注协议一致性测试,故此一致性测试开展最早,也形成了很多有价值的成果,而互操作性测试仅仅作为商业测试的一种手段来满足具体测试者的需求。1991年国际标准化组织ISO制订的国际标准ISO/IEC 9646(ITU-TX.290系列)——“OSI协议一致性测试的方法和框架”,描述了基于OSI七层参考模型的协议测试过程、概念和方法。相应标准见表1。
表1 一致性测试相关标准
另外,还有ETSIETS 300 406“测试和规范方法;协议一致性测试规范”。
但是随着通信技术的不断发展,新的协议越来越复杂,协议一致性测试工作遇到了很多困难。所以互操性测试相关研究也越来越受到重视。ETSI,ITU-T,ISO等国际组织都开展了相应的研究工作。具体成果有:ETSITS 102 237“互操作测试方法和途径”;ITU-T正在完善的ITU-T Z.itfm“互操作测试框架和方法”;ISO也正在许多协议簇中增加的互操作测试。当然,虽然互操作测试在商业测试中已经有很广泛的应用,但是深入理论化、标准化的工作还有待深入。
5、结束语
协议测试远非前文描述的那么简单,以上介绍的仅仅是方法理论,真正实际测试还需要结合具体的测试案例研究深入的算法和理论。以上主要从总体上介绍了协议测试方法论,可以指导协议测试,让我们了解设备或者系统实现的协议细节及互操作能力,对它们有一个正确的评价和认识。