1协议测试理论
协议测试是依据标准的协议对某个协议的实现进行测试,评价该协议实现或被测系统与所对应的标准协议是否相一致的所有测试活动全过程。协议测试是黑盒测试,不需要考虑被测协议实现或被测系统的内部结构和开发实现,只需要通过其输入和输出来判断协议的实现是否正确。国际标准化组织ISO在20世纪90年代制定了一套标准ISO/IEC9646[4],它制定了一种方法,用于测试某一声称实现了ISO协议的产品与标准协议的一致性,该标准为协议测试系统的设计与实现提供了基本的思路和方法。协议一致性测试的流程包括测试生成、测试实现和测试执行这3个阶段,如图1所示。测试生成是为一个给定的协议生成独立于所有其他协议实现的抽象测试集(AbstractTestSuite,ATS)。测试实现是依据协议实现一致性声明(ProtocolImplementationConformanceStatement,PICS)和协议实现额外信息(ProtocolImplementationextraInformationStatement,PIXIT)从ATS中选取适当的测试用例,并根据PIXIT提供的信息量化这些测试用例,产生参数化的可执行测试用例集。测试执行包括被测实现(ImplementationUnderTest,IUT)的PICS分析和测试用例的执行,IUT可以是被测系统或协议实现,也可以是被测系统的一部分,IUT的PICS分析是分析该协议实现一致性声明与标准的要求是否一致;测试用例的执行是通过运行测试用例,来观察IUT的输出或响应,判定IUT与标准要求是否相一致[5-6]。
2数字电视协议测试系统架构
通过对混合网络环境下的数字电视系统的交互流程及交互协议的分析,明确了本次测试的测试目标,即验证IUT对数字电视交互协议实现的一致性,并为此设计了数字电视协议测试系统。数字电视协议测试系统分为4个部分:测试客户端、测试服务器、监听服务器和数据库,如图2所示。测试客户端通过IUT选择模块与IUT交互,生成测试用例集,客户端将待执行的测试用例提交给测试服务器;服务器按照测试用例列表顺序执行测试用例,判定测试结果,将结果返回客户端,呈现在客户端界面上。客户端呈现的测试结果包括测试执行过程中实时输出的数据包解析日志和每条测试用例的判定结果[7]。监听服务器是在网络层抓取被测系统的交互数据包,辅助测试服务器执行测试。整个测试过程中,从生成测试用例到最后结果输出,数据库负责全部数据的写入、查询、删除和更新。由于本文研究的交互协议属于应用层协议,测试的交互是通过以太网在此基础上定义了应用层通信实体,因此测试系统不需要实现该交互协议,只要存在以太网链路接口即可[8]。在系统设计的前期,需要仔细研究交互协议报文的结构和参数,因为每个测试用例中的被测协议不同,对应被测的数据包也不同,监听服务器会按照测试用例的要求,获取报头参数符合对应被测协议的数据包,因此测试用例的设计是否合理是整个测试系统正常运行的关键。1)测试客户端测试客户端由IUT选择、测试用例显示、结果输出这3个模块组成。IUT选择模块用于测试人员选择被测协议,测试系统开始测试时,IUT选择模块将测试人员选择的测试协议集信息提供给测试服务器加载;测试用例显示模块用于显示测试人员选择的测试用例集,以及每个测试用例的描述和测试步骤;结果输出模块用于实时地将测试服务器返回的日志信息输出到测试运行界面,并在测试结束后打印输出完整的测试结果。2)测试服务器测试服务器是测试系统重要的组成部分,它运行于测试系统的后台,即对于测试人员来说是透明的,其架构如图3所示。测试服务器主要接收来自客户端的测试执行要求以及测试用例列表,根据测试用例列表加载测试用例并执行,在测试开始时启动监听服务器,接收其抓取的被测系统交互数据包,并将数据包存储到数据库中;协议解析模块按照协议标准解析数据包,进行测试结果判定,并实时将判定结果返回测试客户端。3)监听服务器监听服务器的主要功能是获取被测系统交互过程中的网络数据包,并将符合被测协议的数据包过滤出来,发送到数据库中。测试人员在测试客户端点击测试开始时,客户端开始执行测试用例,同时在后台开启监听服务器,监听程序按照测试用例的要求抓取被测系统交互过程中的全部数据包,存储到数据库中的指定位置。4)数据库数据库是测试系统中重要的存储部分,测试执行过程中抓取的交互数据包、实时的执行结果都存储在数据库中,供测试客户端调用。数据库的开发使用MySQL,本系统中使用的表包括:测试用例表、测试数据包信息表、测试过程时间记录表、被测设备记录表、标准协议存储表和测试结果信息表。测试用例表用于存储封装标准的测试用例参数;测试数据包信息表用于存储监听服务器获取的数据报文;标准协议存储表用于存储标准的测试协议报头和报文参数;客户端将测试数据包信息表中的数据解析后,同协议一致性比对表中的报文进行比对,来进行结果判定,并将测试判定的结果存储到测试结果信息表中。
3数字电视协议测试系统的实现
按照上述设计的系统架构,在Windows平台上实现了整个测试系统,搭建了交互式测试平台。其中,测试客户端由Javascript和HTML编写,向用户呈现测试运行和测试结果界面;测试服务器主要由C#语言编写,读取数据库的数据并且解析包中信息,进而对其分析输出协议测试结果;监听服务器使用Java语言编写,获得交互过程中的数据包,将获取的数据存入数据库;数据库使用MySQL,存储交互数据包及测试过程中的全部数据。本文选取了市场上在售的一款混合网络终端,对数字电视基本交互协议进行了测试验证。按照图4所示拓扑图连接测试平台与被测系统,通过交换机汇聚通信链路,被测服务器和终端与测试平台连接到了同一个局域网中。进入测试平台,填写被测设备信息后,就进入测试客户端界面,如图5所示。界面左侧是IUT选择界面,测试人员可以通过勾选被测协议,生成被测用例列表;测试界面的右上角有测试开始、测试停止、保存三个按钮,分别控制测试过程的开始、结束和保存测试结果。界面右侧上部分显示测试用例信息,包括测试用例名称、用例描述和被测设备型号,右侧下部分实时输出测试用例的结果。测试用例结果包括详细测试结果、被选项测试结果和测试结果概况,由Tab控件展示在页面上,测试开始后,详细测试结果实时输出全部的测试日志,包括测试时间、收发数据信息、解析数据信息、判定结果信息;被选项测试结果是当点击左侧某测试用例时,单独显示该项用例的日志信息;测试用例概况仅显示已完成测试项目的判定结果,并不输出其他过程数据。测试服务器运行于后台,为实现客户端功能而执行数据分析和逻辑运算,监听服务器的监听程序需要部署在被测系统中,获取被测系统的交互数据包,二者均无界面展示。监听程序获取到数据包后,由测试服务器的解析模块按照协议的报文格式解析出每个数据包的含义,由此判定该数据包是否符合每个测试用例的结果要求,即是否满足该项协议实现的一致性。由于不同协议的报文格式不同,每项测试用例的解析内容也就不尽相同,而报文解析需要严格按照交互协议的报文格式来进行,因此完成全部测试项解析功能的解析模块是系统实现的难点所在[9]。测试平台按照测试用例顺序执行测试后,测试结束。点击右上角保存按钮,生成测试结果报告,由于协议测试的日志比较长,报告篇幅较大,因此仅附上报告首页,如图6所示。报告详细记录了测试内容、被测设备型号、测试起止时间、测试结果概况和测试详细结果。测试结果概况输出每一测试项目的判定结果,测试结果若为通过,则输出绿色字体,测试结果若为失败,则输出红色字体。详细测试结果中记录了每一项测试用例的日志信息,测试失败的用例也可以从中找出问题所在,便于被测设备的开发研究人员修改其设备功能。
4总结与展望
混合网络环境下的数字电视除了具有传统机顶盒的广播功能之外,还可以通过实现标准化的交互协议来开展各类交互业务,符合广播电视行业未来发展的需要,可以将电视广播和宽带业务无缝地结合在一起。与此同时,如何判定各终端厂商生产的终端具有相同的协议实现,可以互相通信就显得尤为重要[10]。本文根据协议测试原理,在Windows平台设计并实现了混合网络环境下的数字电视协议测试系统,提供了一种验证被测终端与服务器之间交互是否符合一致性的检测方法,能够为今后混合终端的研发及测试提供借鉴。在系统实现的过程中发现,被测系统大部分是基于Linux系统实现的,但考虑到未来的发展趋势,基于Windows系统的交互终端也会占有一定的市场份额,甚至会有根据不同场景定制的基于Unix系统的交互终端,因此提高本文测试系统的可扩展性和可移植性是下一步的工作重点。一种提高扩展性的思路是,按照本文系统设计的架构,开发适配不同平台的监听程序,这样在未来的测试中,根据不同操作系统选择不同平台的监听程序即可。
作者:徐楠 董桂官 单位:中国电子技术标准化研究院