RTP协议多用户组管理测试

2014-07-11 05:54赵利民
凿岩机械气动工具 2014年1期
关键词:状态机自动机会话

赵利民

(天水师范学院 物信学院,甘肃 天水 741001)

0 引言

流媒体指在Internet/Intranet 中使用流式传输技术的连续时基媒体,如音频、视频或多媒体文件。 流媒体的核心部分是传输协议和文件格式。支持流媒体传输的协议主要有实时传输协议RTP(Real-Time Transport Protocol)、实时传输控制协议RTCP (Real-Time Transport Control Protocol)和实时流协议RTSP (Real-Time Streaming Protocol)等[1]。 RTP 协议主要提供时间信息和实现流同步;RTCP 用来控制实时数据的发送和参与者的管理。 组管理的稳定性决定协议传输的健壮性,对于分布式协议实现,基于Estelle、Lotos 及SDL 的形式化描述和测试并不具有优势,在协议实现和远程IUT 之间缺乏有效的联系管理手段。以抽象状态机和接口自动机为理论基础的抽象状态机语言 (ASML,Abstract State Machine Language)[2]及其环境,属于灰盒测试方式,结合Windows 系统下可视化编程环境, 可广泛用于内部单元测试,集成测试,协议测试。本文详细论述了基于抽象状态机模型的RTP 协议多用户组管理的形式化描述、分布式测试及协议一致性测试结果分析。

1 测试过程的形式化描述

1.1 抽象状态机形式化描述方法

ASML 通过Spec Explorer 环境来描述具体的应用,其内部的形式化描述基于接口自动机模型并按照抽象状态机的描述方式赋予接口自动机更严格和精确的语意。接口自动机可以定义为以下七元组形式[3]:

M=(S,Sinit,Ac,Ao,Γc,Γo,δ),其中

S 是状态集合,Sinit⊆S 是初始状态集合;Ac和Ao是非交的可控方法(controllable actions)和可被观察方法(observable actions)的集合,而总方法集合 A=Ac∪Ao;Γc:S→P(Ac)和 Γo:S→P(Ao)分别表示在某一状态满足条件可执行的可控函数和可被观察函数的集合,而Γ(s)表示在状态s 集合A 中满足条件能执行的所有方法的并集,即Γ(s)=Γc(s)∪Γo(s);δ:S×A→S 是一个转换函数,映射由状态 s、方法 a(a∈Γ(s))经由状态函数 δ 转换到下一个状态 δ(s,α);满足 Γ(s)=φ的状态 s 称为终态;而满足 Γo(s)=φ的非终态 s 称为活动状态,否则称为被动状态。

1.2 测试执行

一致性测试就是验证由IUT 对应的接口自动机是否和由模型生成的接口自动机相一致。假设是模型语言描述生成的接口自动机δN)表示由被测协议实现对应的接口自动机。 定义 M 到 N 的二元关系 ρ∈SM×SN。 对所有的 s∈SM和 t∈SN,满足(s,t)∈ρ,以下两条件成立:

对应有以下简化关系:

以上关系可以描述为:在任意状态,模型描述的可控方法(Controllable Action)能够执行,则对应的IUT 中的对应可控方法也必须能够执行;如果IUT 中的可观察方法 (Observable Action)能够执行,则对应的模型接口自动机里的可观察方法也必须能够执行。 如果不能一一对应,则会出现不一致错误。

在本测试环境中,协议测试的执行,前提是所有的模型内的方法必须和IUT 内对应的方法绑定,这一步骤保证了函数体、输入参数类型和个数的一致性。 而接口自动机M 和N 的一致性则体现在返回结果的一致性上。 对任意非终态s∈SM,可控方法可表示为 α=m(υ)/wM,其中 υ 是输入参数,wM是结果变量,m 是 α 对应的实际方法。在状态s 如果前提条件Pr eM(v)成立,则同时执行模型和IUT 中的m 方法, 并比较各自的结果变量 wM和 wN;如果前提条件 Pr eM(v)不满足或是wM≠wN,则返回一致性失败错误。 而可观察方法则是先执行IUT 中m 方法,并缓存结果wN,然后在前提Pr eM(v)成立的条件下,执行对应m方法,如果前提Pr eM(v)条件不满足或是wN≠wM,也返回一致性失败错误。

1.3 基于状态模型的协议一致性测试结构

基于抽象状态机的协议一致性测试流程如图 1 所示[4]。 协议模型描述采用 ASML 或是Spec#描述。 测试集是基于协议ASML 形式化描述生成的FSM(Finite State Machine)自动生成的。由协议状态图生成的测试集保证测试例的运行与状态转换过程完全一致。

图1 一致性测试流程

2 基于抽象状态机的协议一致性测试模型

对于测试系统中被测对象IUT 而言,根据测试系统所控制的PCO 的位置不同, 可分为以下四种基本测试方法[5]:本地测试法;分布式测试法;协同测试法;远程测试法。基于抽象状态机的协议一致性测试模型,根据以上分类,可以衍生出三种典型测试结构[6],对于RTP 组用户管理属于多用户分布式行为测试,采用分布式测试模型二。模型语言描述的自动机方法和对应的中间包装程序的桩函数进行绑定,再由桩函数通过远程通道实现和IUT 对象通讯。 通过桩函数的包装,能使得协议接口自动机和IUT 之间传递测试参数, 并检查返回值wM,wN是否相等来验证一致性。 协议实现可以采用任何语言,测试过程不关心测试实现内部的结构,但是为了能调用被测实现内部函数,要求被测实现在测试以前必须实现两个条件:

(1) 以定义接口方式申明被测实现的被测方法函数格式;

(2)在测试开始以前,定义并启动建立远程通道的函数。

图2 协议一致性测试的基本模型

测试方在知道被测实现远程URL 和协议实现功能(即被测实现定义接口)情况下,就可以通过这种间接方式对远程方法引用,实现对IUT 的测试,如图2 所示。 其中测试器部分为抽象状态机描述并生成的被测协议状态转换图;Wrapper部分为和状态转换方法一一对应的桩函数,实际的具体测试数据封装、发送和被测实现返回的数据解析由具体的桩函数完成,并和状态图设置的状态值相比对, 看是否一致;IUT 部分为部署在远程的协议实现。被测协议实现和Wrapper 包装函数的联系是采用微软的remoting[7]调用方式,建立一个TCP/Http 逻辑通道, 测试方和远程被测协议实现通过这个通道把执行参数和测试响应结果进行交互。 采用这个方式,使得被测协议实现可以在远程部署和进行; 大大缩短测试周期;有利于分布式协议和组播或广播类的协议测试,如 RTP 协议。

3 RTP 协议一致性测试

实时传输协议(Real-time Transport Protocol,PRT)[8]是在Internet 上处理多媒体数据流的一种网络协议,利用它能够在一对一(unicast,单播)或者一对多(multicast,多播)的网络环境中实现流媒体数据的实时传输。采用形式化方法抽象状态机语言描述流媒体传输协议的最基本的会话创建和其他会话者加入、离去、发送数据包的有限状态机。 并在此基础上,结合远程测试要求实现流媒体传输协议的远程分布式测试。

对于RTP 传输的建立, 首先要有一方建立会话,每一个会话者有独立的会话名标识,协议实现会根据会话名生成成员信息表,其他会话者会根据收到的SDES 数据包中的信息,各自维护一个参与者的信息表。测试只是根据协议原语来执行加入会话。

会话建立以后, 如果有其他会话者加入,则可以进行数据的传输,如果没有,则超时会话结束。 会话发起者也可以通过离开,来结束整个会话过程。 会话发起者离开以后,其他会话者列表清空,会话回到空闲状态。

当会话建立成功以后,其他参与者加入,会话发起者可以开始发送数据帧给其他所有用户,因为是由协议实现来组发, 所以发送只是单个操作,由协议保证发给所有会话的参与者。

其他参与者作为一个Agent 来加入到会话,对于会话创建者来说,其他会话者的行为属于被动的,但是可以观察行为,如果观察到其他会话者加入,则将该会话者信息加入到partners 会话者列表。但这个过程要求被加入者的名字不能和会话者列表中已有的冲突。

加入到传输会话中的用户,随时可以选择离开,如果收到Bye 数据包,或是检查到超时,都会产生离开会话动作。离开也是属于可观察的被动行为,如果观察到某一个会话者离开,则将其从会话列表中去除。

当然对于加入到会话中的任何一个参与者,它可以发送或是接收数据,对于被测协议实现,控制它的发送,观察它的接收行为。 而对于协议测试协同工作的其他代理(Agent),测试中根据状态图描述, 主要控制Agent 的加入会话是在被测协议实现建立会话以后,Agent 就处于工作状态,如果接收到会话建立者发送的数据包,它会相应的发送一个数据包。 并在随机一段时间延时后自己退出会话。 下面是会话发送数据帧的描述:

以上抽象状态机语言描述, 在SPEC EXPLORER 环境下可编译生成以下状态转换图:

图3 单Agent 时的状态转换图

图4 两个Agent 时的状态转换图

以上状态控制过程,结合Agent 来模拟其他用户的行为,每一个Agent 模拟RTP 会话参与者的基本行为:加入会话,离开会话,接收来自会话发送者的数据并发送回复数据。 如图5 所示,除了第一个RTP 协议实体是由Spec Explorer 远程控制其测试的执行, 其他Agents 都是在会话建立以后由Wrapper 控制其开始运行,其内部行为包括加入一个Session,交换信息,离开Session。当然远程测试方法具有的优点就是可以把所有Agent 按照第一个被测RPE 的形式设置成可控制的远程RTP 协议实体,为了简化描述,在这里只对实际被测IUT 进行远程控制和测试, 其他Agent 按照启动后由定时器按照随机时间来激发起基本内部行为的方式运行来模拟实际的RTP运行环境。

图5 流媒体传输协议测试结构

4 结论

分别对存在 1,2,3,4,5 个 Agent 时 RTP 协议实现进行了一致性测试,表1 是远程测试执行后获得的覆盖率。

表1 RTP 一致性测试覆盖率表

覆盖率就是有限状态机对应的被执行的测试步和所有测试步的比率, 当然在测试过程中,如果任何一步有不一致, 测试将报错并停止执行,这种情况下测试覆盖率将会很低。 在当前的最大重试次数达到时,对于多个Agent 的情况还有可能有些测试步没有执行,因为随着Agent 数目的增多,测试集以指数形式增加,对应的测试覆盖率将会达不到100%。 实现和被测协议的形式化描述有任何不一致的地方,测试将立即发现并停止。 但即使测试过程中没有发现不一致,只要测试覆盖率没有达到100%, 则只能说明覆盖到的测试步没有问题。

以上测试覆盖率说明,被测的流媒体传输协议实现, 在一个和两个会话者参与的情况下,其实现和协议规范定义相一致;而在三个及其以上用户参与时,在目前的测试范围内没有发现协议不一致问题。但是覆盖率随着状态数的增加在快速下降, 而这与状态空间的猛增具有必然的联系。

[1]陈爽文.流媒体技术综述[J].北京广播学院学报(自然科学版),2003.1.

[2]Asml, the website[DB/OL]. http://research.microsoft.com/fse/asml/.

[3]L.de Alfaro and T.A.Henzinger.Interface automata[M].in Proceedings of the 8th European Software Engineering Conference and the 9th ACM SIGSOFT symposium on the Foundations of Software Engineering, ACM Press, 2001,pp.109-120.

[4]Egon Borger. The origins and development of the ASM method for high level system design and analysis[J]. Journal of Universal Computer Science,2002,8(1):2-74.

[5]古天龙,蔡国庆.网络协议的形式化分析与设计[M].北京:电子工业出版社,2003,6.

[6]赵利民,尚称平.基于ASM 模型的协议一致性测试研究[J].自动化与仪器仪表,2011.1:P12-14.

[7]Mike Barnett,Wolfram Schulte. Runtime verification of.NET contracts[DB/OL].

[8]H Schulzrinne,S Casner, et al. RTP: A Transport Protocol for Real-time Applications[S].RFC 1889,January 1996.

猜你喜欢
状态机自动机会话
几类带空转移的n元伪加权自动机的关系*
QQ和微信会话话轮及话轮转换特点浅析
基于有限状态机的交会对接飞行任务规划方法
一种基于模糊细胞自动机的新型疏散模型
一种基于模糊细胞自动机的新型疏散模型
基于Spring StateMachine的有限状态机应用研究
基于时间自动机的跨界临时限速建模与分析
基于集群节点间即时拷贝的会话同步技术研究①
基于AIS的航道移动瓶颈元胞自动机模型
基于反熔丝FPGA的有限状态机加固设计