通信协议一致性测试研究

2013-10-17 05:24马晓奇
机电设备 2013年3期
关键词:测试法通信协议测试用例

马晓奇

●(辽宁省电力有限公司,沈阳 110005)

通信协议一致性测试研究

马晓奇

●(辽宁省电力有限公司,沈阳 110005)

随着计算机网络的发展,通信协议的测试越来越重要。虽然已经对此做了大量的研究,但是仍然没有给出系统有效的解决办法。通信协议的一致性测试是通信协议测试中最重要的部分。介绍了通信协议一致性测试的主要通用方法和测试过程,概括论述了通信协议的一致性测试体系,详细分析其生成测试序列的常用方法,同时指明了它们之间的关系。这能为通信协议一致性测试的实施提供指导作用。

通信协议;一致性测试;测试序列

0 引言

通信协议是建立在互联网体系和分布式系统各通信端实体之间进行信息交流时应遵循的通用法则。互联网技术、计算机技术和通信技术的快速发展,促使通信网络趋向庞大,通信协议趋向复杂。为了确保各通信实体之间稳定可靠地开展通信,有必要对通信协议的一致性进行系统测试。一致性测试就是测定实现 IUT(Implementation Under Test)在网络系统中的接收和发送信息是否与标准规定一致。通常利用一组测试案例序列,在一定的网络环境下,对被测实体进行黑盒测试是否与协议描述相一致,采用的测试拓扑见图1所示。

一致性测试过程可大致分为三个阶段:首先是测试生成阶段,该阶段针对特定协议,形成独立于其他协议的抽象测试集;其次是测试实现过程,该过程将抽象测试集进行适应性转换,使其能在正常系统上运行,也就是测试例;最后就是测试执行过程,通过在特定的IUT上运行测试例,并分析其外部行为是否符合标准,并给予合理的判决。

图1 测试拓扑结构

1 原理简介

通信协议一般用文本描述,这样通俗易懂,不过容易出现理解的二义性。也就是执行人员对文本描述会有不同的理解,可能出现不同的协议实现,也极有可能出现错误的实现。因此,有必要在进行协议的一致性测试之前,继续对协议进行规范化的描述。规范化描述技术种类很多,受到认可的有有限状态机、Petri网、进程代数、时序逻辑和构造类别代数等[4]。本文主要介绍有限状态机模型。

FSM(Finit State Machin)即有限状态机,它是用来规范通信协议时使用最普遍的数学模型之一,具有可操作性强、方便与其它方法匹配使用,以及易于自动实现等优点。一个FSM形式定义为六元组:

M=(Q, Σ, Δ, δ, λ, q0)

式中,Q={q0, q1, …, qn}代表有限状态集合;Σ={σ1, σ2, …, σm}代表有限输入字符集合;Δ={a1, a2, …, ar}代表有限输出字符集合;Δ:Q×Σ→Δ代表状态转移函数;λ:Q×Σ→Q代表输出函数;q0∈Q代表初始状态。

无论什么时候,FSM均会有一个确定的状态,且可以通过零个或多个变迁转变为其它状态。采用FSM形式化的通信协议,产生变迁的操作有很多,包括每一帧信息的外发和内接,定时器超出时间或有中断信号等。使用FSM进行通信协议的描述式,可以使用有向图简化模型清晰描述,把任一状态作为一个节点,把任一变迁作为一个方向弧,即可形成有向图。而初始状态会事先由一个特殊状态来充当。该特殊状态作为开始运行时的情况,抑或运行过程中某个方面的起始点。一般起始于初始状态之后,经过合理变迁,即可跳跃到设定或者全部的系统状态。通常使用图论技术,分析哪些状态是可变迁到的,哪些是无法实现的。这个过程也称作可达性分析,通过这些分析可以测定协议状态的覆盖率。

上面已经提到,我们可以通过一个有向图 G=(V, E)来清晰描述一个 FSM,其中 V={v1, v2, …, vn}用来代表FSM的有限状态机Q,而用于代表FSM的有效变迁集合,也即是∈ E表示从状态νi变迁状态νk,其中iik/oik表示变迁的输入/输出事件。

图2是一个具有4个状态例程的FSM有向图。

图2 FSM有向图示例

2 一致性测试体系

测试方法分为本地测试法、协调测试法、分布测试法和远程测试法四种。其中本地测试法适用在产品内部测试,由于大多数的IUT不提供本地测试接口,所以这种测试法只是一种概念上的测试结构。现在的一致性测试多是由第三方负责,而第三方大多采用外部测试。其中常用的外部测试方式包括分布式测试、协调测试和远程测试等。而执行外部测试必须遵守通行协议,比如测试管理协议TMP (Test Management Protocol) 等,来协调测试和定义测试交互进程。

2.1 本地测试法

本地测试法是和传统的软件测试相提并论的,使用该方法测试,要求执行系统的上下层测试器和IUT在同一台主机上完成。连接方式是:上层测试器和IUT的上接口连接,而下层测试器和IUT下接口连接。目的即是通过上下测试器在IUT上下接口处进行事件交换,而验证IUT的行为是否规范。测试的协调过程主要是统一协调上下测试器在IUT的上下接口的测试动作,测试框图见图3。

图3 本地测试方法框图

使用本地测试法有很多优势,包括测试过程不受底层通信系统的限制,同时,上下测试器的测试协同过程可以简易地完成[2]。缺点是被测协议在和上层协议以及下层协议之间都需要一个控制观察点PCO(Point of Control and Observe),对测试者的专业程度要求高,必须精通协议系统,并且了解和熟悉上下层协议之间的交互过程,否则,是无法正确设立PCO的。

2.2 分布测试法

分布测试法有一定限制,比如遇到IUT的底部不能提供开放的接口等,这时可以使用分布测试法。分布测试法通常将上下层测试器分别置入两台独立的机器上,这要求比较完善的协调控制过程。它的一个明显缺陷是,当下层测试器借助(N-1)服务向IUT传送一个测试用例,而这个过程有可能受外界影响被耽搁或者数据丢失,该测试用例无法正确到达,不过这不影响下一个测试用例的传送。当下一个测试用例准确到达并得到响应时,IUT就显而易见地进入错误状态,最终导致上下层测试器在执行测试用例时,出现失调的情况。通常,我们可以用恢复协调的测试方案,在出错的位置合理解决失调问题。从以上可以看出,分布测试法受到被测协议本身具有的协调机制的限制。分布测试法框图见图4。

图4 分布测试法框图

2.3 协调测试法

协调测试法与分布式测试法一样,IUT的底部也无法获得开放的接口,但与分布式测试法的主要区别在于,IUT的上部不需要有开放的界面,而是TMP(Test Management Protocol)用来协同或者同步上下层测试器,最后只需要借助交换测试管理数据单元TMPDU(Test Management Protocol Data Unit),实现自主测试管理和协调。

使用协调测试法,上层测试器处于从属地位,受到下层测试器和IUT的约束,下层测试器则起主要作用。这是四种测试法中最高级的一种方法(图5)。上、下层测试器间较易协调,上层测试器用到的测试用例,可由下层测试器传送于它,并在接到测试用例后,根据TMP的相关要求,再反馈给下层测试器,进行测试的判断。

图5 协调测试法框图

协调测试法和分布测试法相比,存在不能协同的问题。通过引入TMP模块,合理解决了分布式测试法中这个问题。但同时也带来了更高的系统复杂性。

2.4 远程测试法

在测试过程中,测试者遇到特殊情况,会将IUT放入到一个复杂的系统,但该复杂系统不支持UT,由于没有UT,因此不需要UT和LT之间的协同。这样IUT的上下层都没有开放的界面,又ASP(Abstracr Service Primitives)没有TMP的情况下,引入了远程测试法,如图6所示。下层测试器通过,抽象服务原语)和IUT进行通信,并借助由N层的协议数据单元(PUD)接收反馈的信息实现,并由此做出测试的判断。

图6 远程测试法框图

远程测试法的主要优势是不用关注协议实现,而仅仅借助协议说明,来观察IUT是否实现协议规定。缺点是由于底层一些协议不会给出可以判定的反馈。

3 测试序列生成和执行

3.1 测试序列的生成

协议测试方法中最主要的工作就是生成测试序列。对于协议测试来说,最佳的测试序列应在满足测试序列路径最大覆盖率的条件下,并同时要求测试序列最短。现今,在FSM基础上形成的规范化方法有多种,其中常见的包括:1)T方法(Transition Tour Method),通常也叫做周游法;2)D方法(Distinguishing Seguences),通常也叫做区分序列法;3)W方法(Charactrting Seguences),通常也叫做特征序列法;而比较特殊的U方法,是采用唯一输入/输出序列UIO(Unigue Input/ utput Seguences)进行状态检测的方法。

3.1.1 T方法

T方法的基本思路是首先开始于FSM的初始状态,而完整地遍历FSM的每个变迁,执行完毕后返回到初始状态。可以看出,T方法是最简便实用的一种测试方法,并且测试序列长度短。不过,它的检测能力有限。

3.1.2 D方法

使用D方法之初,必须针对FSM构造一个区分序列DS(Distinguishing Sequence),再使用生成的DS构建测试输入序列。D方法的主要优点是能发现故障点[4],不足之处是能够产生的测试输入序列数量不多,并且不能保证每一个FSM都存在区分序列,如果使用序列优化方法,必将增加难度,并且又因序列长度比较长,所以D方法应用受到限制。

3.1.3 W方法

W方法是在D方法基础上进行改进,并且通过FSM的状态识别集构建测试输入序列。通常而言,只要 FSM足够精简即可求出其状态识别集。W方法要使用2个输入序列集W和P。其中,W集代表FSM最小的特征集,确保任意两个状态能够互相区分;P集用来代表完整的部分路径,一般通过一个测试树构成。其初始状态通常是根节点,对每个变迁仅遍历一次。W 方法所表现出的优势在于,对任意协议的FSM而言,总是可求出W集,因此具有很好的通用性。不足之处仍是产生的测试序列太长。在实际的复杂系统中很难使用。

3.1.4 U方法

UIO序列是建立在区分序列和特征序列之上的一个子集。因此可以看出,U方法产生的测试序列相对于W方法等要短很多,并且同时有很强的检错能力,也是基于FSM 测试序列生成方式中普遍采用的方法。不过,并非全部的FSM均可求出其UIO,如果无法获得UIO,也将不能构建测试输入序列。不过,目前学者已经提出了多种对UIO的改进方法,取得良好效果。

3.2 抽象测试集的生成

在开展测试时,首先要明确测试目标,而后根据目标分解测试序列,最终得到每一个测试目标的测试子序列。接下来对每一个测试子序列,获得其明确的测试点(包括测试起始状态、结束状态和不同变迁等),而后分割测试子序列,其整个序列段三个部分,包括前测试步序列,从子序列的起始位置到下一个测试点的初始位置。当完成测试驱动和状态验证之后,仍有一部分子序列剩余,通常这部分叫做测试体序列。当测试序列运行到最后状态时,使用后测试步序列将测试协议转变到原来的初始状态[5]。将整个过程的三个测试序列整合,即可实现某一测试点的整体测试用例。如果对每个测试点都构造测试用例,综合起来即能够组合成抽象测试集。

3.3 测试的实现和执行

获得抽象测试集后,仍要在测试系统上求出可执行测试集,而后,将可执行测试集应用于一个特定的IUT,并对其作出一致性判断。通常将测试执行过程划分成两个阶段:第一个阶段是静态一致性需求检查,这步是依照协议标准的静态一致性需求,从而检测IUT;第二个阶段,是通过在测试器运行可执行测集,来验证和分析IUT对动态一致性要求的满足程度,每个测试例有三种可能的判断结果,分别是通过、失败或不确定。最后,需要综合两方面的因素,一是静态一致性检查结果,二是所有的测试例的运行判定结果,而后进行分析,给出合理的有关IUT的一致性判决。而只有全部的测试都是通过的,对IUT最终的判决才会是通过[6]。

4 结束语

本文分析了协议测试一致性的主要流程,并介绍了各步骤中常用的实现方法,阐述了它们各自的特点和适用场合。随着计算机网络的发展,通信协议也变得越来越复杂,这样使得协议的一致性测试更加困难,随着而来的还有测试的效率和测试自动化的问题。如何去有效地解决这些问题,就是将要面临的机遇和挑战。

[1]吕欣岩, 赵保华, 屈玉贵. 基于形式规范的协议一致性测试的可靠性分析[J]. 电子与信息学报, 2007, 29(4): 781-785.

[2]魏仰苏, 孟兆航, 舒挺. 通信协议一致性测试序列自动生成算法研究[J]. 计算机工程与设计, 2007, 28(10): 2312-2315.

[3]张玉军, 李忠诚, 郑红霞, 等. 应用于计算机网络协议一致性测试的传输机制[J]. 计算机研究与发展, 2003, 30(13): 102-108.

[4]朱雪峰, 许建, 邹彪, 等. 网络协议一致性测试研究综述[J]. 计算机科学,2009, 36(12): 5-11.

[5]文昌辞, 王昭顺. 软件测试自动化静态分析研究[J].计算机工程与设计, 2005, 26(4): 987-991.

[6]落红卫. 协议测试技术分析[J]. 电信网技术,2007, 3(3): 57-64.

Study on Conformance Testing of Communication Protocol

MA Xiao-qi
(Liaoning Electric Power Company Limited, Liaoning Shenyang 110005, China)

With the development of the computer networks, the testing of communication protocol is more and more important. Although a lot of studies have been done on this subject, there are still no systematic effective solutions. The communication protocol conformance testing is the most important part of communication protocol testing. The general steps of communication protocol conformance testing and main common method are introduced, and the communication protocol conformance testing system is summarized, and the basic method of producing test sequences is briefly analyzed. At the same time, the relations between them are designated. This can provide guidance for the implementation of the communication protocol conformance test.

communication protocol; conformance testing; test sequences

TN915.04

A

马晓奇(1961-),男,高级工程师。研究方向:电能计量及用电信息采集。

猜你喜欢
测试法通信协议测试用例
基于SmartUnit的安全通信系统单元测试用例自动生成
基于混合遗传算法的回归测试用例集最小化研究
伊士曼展示其耐受医用消毒剂的新一代聚酯——四步测试法显示伊士曼MXF221共聚酯具有出色的耐化学性
基于Z-Stack通信协议栈的红外地温采集电路设计
新型混合材料咀嚼效率测试法
电气化铁路轨道电路绝缘电压测试法的研究
基于DMX512通信协议的多路转发器设计与研究
基于NS-3的PLC多频通信协议仿真平台设计与实现
基于D-最优化理论的陀螺仪力矩反馈测试法
基于依赖结构的测试用例优先级技术