MS自动化测试工具的设计与实现*

2015-07-03 09:43苏坚李炜
电信工程技术与标准化 2015年6期
关键词:测试工具测试用例用例

苏坚,李炜

(1 北京邮电大学网络与交换技术国家重点实验室,北京 100876; 2 杭州东信北邮信息技术有限公司,北京 100191)

东信北邮媒体服务器(EBMSE)作为面向NGN、3G和IMS并兼容现有通信网络的电信级设备,基于模块化的设计,采用松散藕合的体系结构,提供在通信网络上实现各种业务所需的媒体资源功能,包括基于用户交互功能(播放音频和视频、收号、录音、混音等)、高级用户交互功能(交互式语音应答、消息)、同网络桥接、跨网络桥接、多方音/视频会议功能和数据功能,为电信业务提供强大的媒体资源功能。

测试MS媒体能力的方式可以有多种,例如Kapanga Softphone、CM-IMS等软终端。此外还有开源软件SIP,但是他们都有一定的局限性,只能一次测试一个用例,当测试项不同时还需要修改MSML(Media Server Markup Language)等脚本,因此它们只适合作为功能性验证对MS进行测试。测试MS媒体能力的完备性需要一种自动化的测试工具,它能够根据用例模板一次生成包括放音、收号、录音、放音收号、放音录音等数百个测试用例,并按照一定的规则对测试用例进行测试,最终生成一份针对所有用例的测试报告。本次设计的自动化测试工具就是一款这样的工具。

Python是一种面向对象的解释型的计算机程序设计语言,功能强大,成熟稳定,具有脚本语言中最丰富和强大的类库,非常适合本次自动化测试工具的实现。

1 自动化测试工具的设计

1.1 自动化测试工具总体架构

图1展示了自动化测试工具的内部结构图。其中包含5个模块,用例生成模块、控制消息收发模块、媒体数据收发模块、日志模块、测试结果统计模块。

图1 自动化测试工具内部结构图

(1)用例生成模块主要用于生成测试用例,其中的测试用例包括放音、收号、录音、放音收号、放音录音的测试用例。

(2)控制消息收发模块主要用于收发SIP信令消息,同时指示媒体收发模块与媒体服务器进行媒体数据的收发。

(3)媒体数据收发模块主要用于与媒体服务器建立数据传输通道,并基于RTP协议进行媒体数据的收发。

(4)日志模块主要是将控制消息收发模块与MS之间交互的SIP消息记录到SIP日志文件,将媒体数据收发模块与MS之间交互的媒体数据记录到媒体日志文件。

(5)测试结果统计模块主要是对SIP日志文件和媒体日志文件进行分析,统计既定测试项(媒体时长、媒体编解码类型、会话时长等)是否符合预期结果,判定该测试用例是否通过,并将该测试用例及测试结果添加到自动化测试报告。

1.2 用例生成模块

图2 用例生成模块内部结构图

如图2所示,用例生成模块主要分成两部分,第一部分以用例模板为输入,输出标准的测试用例,根据收号(dtmf)用例模板生成所有收号的测试用例,根据纯放音(aupa)的用例模板生成所有放音的测试用例,根据录音(record)的用例模板生成所有的录音的测试用例。第二部分主要用于生成不同组合的测试用例,可以根据放音和收号的测试用例生成所有放音收号的用例,可以根据放音和录音的测试用例生成所有放音录音的测试用例。

该模块涉及到的放音、收号、录音的用例模板都是从MSML标准文档中提取相关属性值并以XML树形结构设计的,测试用例生成时会遍历每种属性的各种取值,生成各种不同属性组合的测试用例。

1.3 控制消息收发模块

图3 控制消息收发模块的内部结构图

如图3所示,控制消息收发模块分为两部分,一部分负责与媒体服务器按照SIP通信协议进行通信;另一部分的工作是负责将SIP消息和模块内部消息相互进行转译。

消息收发模块作为发端时,向MS发起申请资源请求和RTP链接请求等消息;作为接收端时,接收来自MS对资源申请的分配结果及RTP链接请求处理结果等消息。此外,该模块还会将收发到的SIP消息统一上报到日志模块。

由于MS与自动化测试工具之间使用的SIP协议不适用于内部模块,消息收发模块的另外一个功能就是将SIP消息转化为简单的内部控制命令。

图4 自动化测试工具与MS之间SIP信令交互图

自动化测试工具与MS之间的SIP信令交互如图4所示。控制消息收发模块与MS之间SIP消息的收发是基于UDP(User Datagrame Protocol)的Socket实 现 的,自动化测试工具绑定一个端口专门用于收发SIP消息,此外,它还会申请一个端口,用于媒体数据收发模块收发与MS之间的媒体数据的收发。

1.4 媒体数据收发模块

图5 媒体数据收发模块的内部结构图

如图5所示,媒体数据收发模块主要负责RTP数据流的收发。当作为收端时,接收来自MS的RTP数据流,解码RTP数据从中提取媒体裸数据,并将媒体裸数据发送到日志模块;当作为发端时,将媒体数据按照RTP协议封装成RTP数据分组发送给MS。

1.5 日志模块

如图6所示,日志模块主要包含两部分:对自动化测试工具和MS之间交互的SIP消息进行记录并生产SIP日志文件;对媒体收发模块发来的媒体裸数据进行记录并生成媒体日志文件,以备后续操作验证测试用例是否通过做准备。

图7 系统状态数据统计模块的内部结构图

图6 日志模块的内部结构图

1.6 测试结果统计模块

如图7所示,测试结果统计模块主要对SIP日志和媒体数据日志进行分析。首先从SIP日志中获取自动化测试工具下发给MS的INFO并根据RFC规范对其进行解析,依据标准生成一组统计项:会话时长、媒体时长,并从SIP日志中Invite-200消息获取MS发送媒体数据的编解码类型。与此同时对媒体数据日志进行分析,判断媒体数据的编解码类型,根据RTP数据分组的个数计算出媒体时长,具体计算方法是:

媒体时长=RTP媒体包的数量/50 (每20 ms发送一个RTP数据分组)。

然后对从SIP日志中获取到的标准统计项与从媒体数据日志获取到媒体编解码类型和媒体时长进行对比,如果媒体时长及会话时长在误差范围内,则测试用例通过,否则测试用例不通过,并将其记录到自动化测试报告。

2 自动化测试工具基于Python的实现

按照自动化测试工具整体的设计思路及各模块内部详细的结构设计,使用Python语言对测试工具进行编码实现,其中最重要的两个模块就是控制消息收发模块与媒体数据传输模块,两个模块都是基于UDP Socket与MS进行信令或媒体数据的收发,而Python语言提供了Socket模块及丰富的方法可供使用。媒体数据收发模块主要功能之一就是进行RTP数据编码或解码,而Python语言提供了struct模块,其中的pack、unpack等方法极大提高了对RTP数据编码、解码的开发效率。

3 结论

本文以节约手工测试当中的人力资源和时间成本为目标,设计并实现了对媒体服务器进行回归测试的自动化测试工具。设计内容包括自动化测试工具整体结构、内部各模块的详细结构。该测试工具可以对媒体服务器的媒体能力进行完备的测试,测试功能主要包括放音、收号、录音、放音收号、放音录音等。此外,自动化测试在每项功能测试结束后都会自动生成一份测试报告。

本文中各模块的设计均使用Python语言编码实现,Python语言提供了丰富的功能模块,极大提高了开发的效率。此外,实现过程中还使用Python多进程对其进行了优化,极大缩短了测试周期,提高了测试效率,节约了时间成本。

[1]中国移动通信集团.中国移动CM-IMS MRF设备规范[S].2011.

[2]中国移动通信集团.中国移动MRFCMRFP设备规范[S].2010.

[3]Rosenberg J, Schulzrinne H, Camarillo G, et al.SIP: Session Initiation Protocol[S].IETF RFC 3261, 2002.

[4]Schulzrinne H, Frederick R, Jacobson V.RTP: A Transport Protocol for Real-Time Applications[S].IETF RFC3550, 2003.

[5]Knightson K, Morita N, Towle T.NGN Architecture: Generic Principles, Functional Architecture, and Implementation[J].IEEE Communications Magazine, 2005(10).

[6]Saleem A, Xin Y, Sharratt G, et al.Media Server Markup Language(MSML)[S].IETF RFC 5707, 2010.

[7]Handley M, Jacobson V, Perkins C.SDP: Session Description Protocol[S].IETF RFC 4566, 2006.

猜你喜欢
测试工具测试用例用例
UML用例间包含关系与泛化关系的比较与分析
UML用例模型中依赖关系的比较与分析
基于SmartUnit的安全通信系统单元测试用例自动生成
联锁软件详细设计的测试需求分析和用例编写
Http并发连接测试工具
從出土文獻用例看王氏父子校讀古書的得失
手车式真空断路器回路电阻测试电流线接头研究
基于需求模型的航天软件测试用例生成方法
浅谈响应时间测试分析方法
基于依赖结构的测试用例优先级技术