- 易迪拓培训,专注于微波、射频、天线设计工程师的培养
互操作性测试方法研究
摘要 通信网络在其发展过程中规模越来越大,涉及到的通信设备也越来越多。如何保证通信设备尤其是计算机网络设备之间的互连互通,成为通信发展的一个重要环节,其关键就是协议测试技术。首先介绍互操作性测试与协议一致性测试之间关系,进而介绍互操作性测试的整体架构和如何编制互操作性测试规范,最后详细叙述互操作性测试步骤。
测试技术是通信网络平稳运行和迅速发展的重要保证。随着通信网络的快速发展,通信网络规模越来越大,其中涉及到的通信设备也越来越多。如何保证通信设备尤其是计算机网络设备之间的互连互通,促进通信事业的发展,协议测试技术是一项关键技术和有力保证。
目前,协议测试就是为保证通信设备可以正确实现通信协议,并可以和遵守相同通信协议的通信设备达到互通。协议测试均为黑盒测试,并不检查协议代码,而是根据通信协议来观察被测协议实现的外部行为。协议测试主要包括协议一致性测试(Conformance Testing)和互操作性测试(Interoperability Testing)。
一致性测试主要是确定被测实现(IUT,Implementation Under Test)是否与标准规定一致。通常利用一组测试案例序列,在一定的网络环境下,对被测实现进行黑盒测试来比较IUT的实际输出与预期输出的异同,从而判定IUT是否与协议描述一致。互操作性测试评价被测实现与连接相似实现之间在网络操作环境中是否能够正确的交互并且完成协议标准中规定的功能,从而确定被测设备是否支持所需要的功能。一致性测试和互操作性测试在协议测试中都非常重要,并且可以在一定程度上相互验证,但二者并不是完全一样的测试方法。一致性测试是确定被测实现是否与标准规定一致,而互操作性测试是确定被测设备是否完成要求的功能。但是,二者对于协议测试都是非常重要的,它们是互为验证、互为补充的关系。文章重点介绍协议测试中的互操作性测试。
1、互操作性测试
互操作性测试采用最多的形式,是测试单位选择经互操作认可的设备来与被测设备进行互操作性测试,认可的设备可能是终端设备、网络设备或者应用软件,也可能是一个单独设备或者若干设备的组合(图1)。
图1 互操作性测试拓扑
以下对互操作性测试中的每个实体进行简要介绍。
被测设备:被测设备是互操作性测试的被测试对象,也可以是终端用户设备、网络设备,或是应用软件。被测设备可以由设备的任意个组成元素部分构成,可能是物理设备、软件包或者两个以上软件包的集合,而最简单的被测对象是单个设备。被测设备的配置通常由设备提供商来提供。为了保证被测设备测试的准确性,建议除了互操作性测试以外,同时也增加协议一致性测试。
认可设备:互操作性测试和协议一致性测试的最大不同,是在测试拓扑中认可设备替代了测试仪表。认可设备就是与被测设备连接互通、由其它设备提供商提供且已经被认为是合格的设备。在互操作性测试中,认可设备可能是一个或多个,也可以是终端用户设备、网络设备,或应用软件。作为测试中的重要设备,认可设备需要有严格的判定程序。实际上,在认可设备被确定之前,也作为被测设备进行过全面的互操作性测试,只有成功通过所有测试项目以后,才可以成为认可设备。互操作性并不要求被测设备和所有潜在的认可设备都可以互通,但是互通的认可设备越多,互操作性也越好。在这里,怎么认定第一个认可设备成为关键。在新技术发展初期,并没有一个认可设备。故此第一个认可设备的选择必然涉及到特定测试计划中的两个被测设备。只有两个设备可以完全互通,这时两个设备都成为认可设备,并可以随后认定更多的认可设备。但是,建议最初的两个设备一定要经过严格的一致性测试。
测试驱动者:互操作性测试涉及在功能层次的控制和观查,通常都是通过端点设备的用户来完成,称为测试驱动者。测试驱动者既可以是人,也可以是相应软件。为了保证测试的有效性和连续性,测试驱动者最好是执行特定测试步骤的自动测试设备。
测试协调者:互操作性测试需要设备之间的同步,测试协调者的责任就是保证测试驱动者的同步。测试协调者仅是一个逻辑概念,可能就是测试驱动者。
测试项目:互操作性测试项目的制定极为关键,一般由互操作测试者根据所关注的测试功能要点进行制定。另外,测试驱动者所执行的测试驱动工作也完全基于测试项目要求来进行。
测试报告:完成具体测试以后,根据测试项目要求给定测试结果(一般只有"通过"、"未通过"和"不确定"等)。对于"不确定"对应的项目,可能需要进一步分析或者设计互操作性项目来进行测试。
测试日志:测试日志用于记录详细的测试过程,以便配合测试报告进行具体的结果分析。尤其对于"未通过"和"不确定"项目,一定要根据测试日志进行深入的分析。
2、互操作性测试规范开发
开发互操作性测试规范类似于制定一致性测试规范,只不过这个过程通常由互操作测试者根据所关注测试功能要点进行制定,是互操作性测试中最重要的部分。相应流程如图2。
图2 互操作性测试规范制定流程
指定抽象测试架构:指定抽象测试架构是为适合特定测试套的测试计划而提供通常架构。早期定义这个架构有助于提供以后特定测试项目架构。抽象测试架构可以以图、表、文字的形式清晰地指定被测设备、认可设备、通信方式和设备类型等。
互操作功能声明:主要用于指出被测设备必须支持的标准功能,同时标明任选功能。尽管互操作功能声明本身不是互操作性测试的一个必要部分,但是有利于后续开发互操作性测试规范。
开发测试套架构:根据测试需求把互操作性测试划分为不同的测试组,并具体确定每个测试组所需要测试的内容,当然这种划分依赖于具体测试内容。
写测试目的:清晰标明每个测试项目所要测试的目的,这样才能明确下面测试项目要完成的任务。
写测试项目:对于一些需要测试条件或测试状态的测试项目,在写测试项目之前必须明确这些测试条件或者测试状态,然后写详细的测试步骤,详细描述为满足测试目的而进行的具体测试步骤。测试步骤的描述必须清晰而不能含糊其词。对于一些测试还必须有后测试步骤,使被测设备和认可设备回复初始状态。利用测试V5协议对前测试步骤、测试步骤、后测试步骤的描述非常细致。
验证测试项目:检查整个测试套是否合理,是否有错误,是否满足测试目的。
完成前面所有步骤,形成文本,即完成了整个互操作性测试规范的开发。接下来,就是如何具体进行互操作性测试。
3、互操作性测试的过程
互操作性测试过程和一致性测试过程类似,同样包括三个步骤,即测试准备、具体测试和测试报告。具体流程如图3。
图3 互操作性测试流程
测试准备:在正式开始测试前,首先需要进行设备初始配置以满足抽象测试架构。这些配置可能需要设备制造商支持,并保证被测设备与认可设备之间正常连接。
测试计划:根据设备的具体情况选择需要测试的项目、项目测试顺序等。
具体测试:根据测试项目要求进行相应的测试。主要包括两类:手动测试和自动测试。测试完全按照测试项目要求进行。
测试报告:总结整个测试活动,并且清晰表明设备是否满足相应测试项目的要求。测试报告中必须包括厂家信息、设备信息和测试信息。
其实,互操作性测试过程除了测试使用规范、测试设备和测试驱动与一致性测试不同以外,其它基本上与一致性测试类似。另外,互操作性测试和协议一致性测试还是有很大的差别。实际测试中,一致性测试通过也并不能保证互操作性测试一定可以通过。最根本的原因是一致性使用标准规定,绝对完整和正确是不现实的,其中也包含各个标准制定人和制定单位理解不同。具体如下:
(1)标准方面
●标准中错误与含糊的内容;
●标准本身的兼容性问题。
(2)实施方面
●如编程方面的人为错误;
●对于通信标准的不同理解;
●标准本身允许不同选项。
(3)技术方面
●设备兼容性问题;
●设备配置问题。
当然,互操作性测试仅仅可以证实被测系统中不同设备之间的互操作能力,而不能证实设备是否符合标准,因为互操作性测试根本就不关心协议细节。故此,互操作性测试不可能替代一致性测试。其实,协议一致性测试和互操作性测试是互为验证、互为补充的关系,只要把两者合理的结合才能完成完整的协议测试。
当然,互操作性协议测试远非文章描述的那么简单。文章介绍的仅仅是理论方法,真正到实际测试还需要结合具体的测试案例来提出更加具体的测试项目和测试方法。
在过去通信业的发展中,国际标准组织主要关注协议一致性测试,但是随着通信技术的不断发展,新的协议越来越复杂,协议一致性测试工作遇到了很多困难。所以互操性测试相关研究也越来越受到重视。ETSI、ITU-T、ISO等国际组织都开展了相应的研究工作。目前,互操作性测试在商业测试中已经有很广泛的应用,但是理论化、标准化的工作还有待进一步深入。
作者:落红卫 来源:现代电信科技