针对嵌入式系统的通用协议测试方法 本发明涉及计算机技术,具体地说,涉及计算机测试技术领域。
目前,嵌入式实时系统中的通讯协议的复杂程度越来越高,通讯协议的测试成本在整个系统开发费用中所占的比例也越来越大。这是因为通讯协议在正常情况下的处理流程只是很少的一部分代码,而绝大部分的异常情况处理分支在实际的物理环境中很少得到执行,要想对协议进行比较彻底的测试,通常采用长时间运行程序的方式来验证协议是否稳定。这种方法的缺点:一、代价高,随着硬件可靠性的不断增加,各种异常情况的发生概率也越来越低,必须将系统运行充分长的时间才能将问题暴露出来;二、在实验条件下,异常情况发生的种类有限,不一定能充分对各种异常情况的处理分支进行测试;三、故障很难再现,大大增加了调试修改故障的难度;四、当通讯网络拓扑结构比较复杂时,开发、调试和测试的环境也变得十分复杂,通讯故障地发现、定位、再现和分析变得更加困难。为此,有许多商用软件提供了对协议程序进行模拟仿真的功能,如GEODE,SDT等,可以模拟协议的输入输出并进行统计分析,但它们都只能对严格基于SDL(Specification and Description Language)状态机的协议进行模拟,进行模拟的激励为消息,不能逼真地模拟物理链路的实际情况,更不能模拟在各种通讯网络拓扑结构下的通讯情况。
本发明的目的就是为解决上述问题,提出一种通用于嵌入式系统中各种通讯协议模拟测试方法。
本发明提供的针对嵌入式系统的通用协议测试方法是这样实现的:设置一个测试平台,该平台包括协议接口模块、异常控制模块、路由控制模块、透明数据通路模块和性能参数统计模块;被测通讯协议模块通过一个标准的协议接口模块和本发明所述的通用协议测试平台连接;在通用协议测试平台内部,由被测通讯协议模块产生的数据包通过异常控制和路由控制模块来模拟实际链路的异常情况和链路连接情况,最后通过透明传输通道模块传输出去;由所述的性能参数统计模块进行统计、分析和计算,并把结果放在相应参数统计文件中做进一步的分析。
按照本发明提供的方法,其特征在于异常控制模块根据异常配置文件的内容控制异常行为的产生。异常控制模块根据异常配置文件内容来模拟实际链路中的异常情况,包含以下内容:
1)、产生异常的控制方式:a、发送方控制,即在发送方产生异常;b、接收方控制,即在接收方产生异常;
2)、异常类型:
a、误码:控制参数有误码率,最大连续误码数,最大误码位数;
b、丢失:控制参数有丢失率,最大连续丢失字节数;
c、延时及抖动:控制参数有最大延时,最小延时,延时率,延时率参数也可以用来控制链路的波特率;
d、重复:主要用于测试多路由情况;
e、失序:主要用于测试多路由情况。
按照本发明提供的方法,其特征在于异常控制模块是这样进行物理链路异常模拟的:异常控制模块在启动时从异常配置文件中读取相关参数,根据异常配置文件中的控制方式来决定是发送方控制还是接收方控制之后,接收上层或下层的消息包,然后调用随机数产生函数,根据异常产生的概率来确定是否产生相应的异常。其中调用随机数产生函数时,是根据当前异常产生的概率决定本次是否产生异常以及异常的次数。
其中,异常的产生可以用以下方法:
误码:误码字节取反码;
丢失:丢失字节不被发送;
延时及抖动:被延时消息存放于缓冲区,从最大延时和最小延时的区间取一随机值,然后延时该时间后再发送。
按照本发明提供的方法,其特征在于可以通过路由控制模块来实现对各种通讯网络拓扑结构的模拟,同时不影响被测通讯协议中的路由算法。
路由控制模块通过路由配置文件实现对各种通讯网络拓扑结构的模拟,实现对多条透明数据链路的控制,透明数据链路由TCP/IP协议族中socket接口实现,协议采用TCP协议。实际情况下单板对不同的通讯口有不同的设备号。而在通用协议测试平台中将TCP链路和设备号一一对应以实现对路由的控制,从而模拟了实际情况中各个单板之间通讯口的物理连接情况,而被测对通讯协议中的路由表没有影响,这样实现了被测通讯协议在测试中的独立性和完整性。由于通讯协议最终发送数据是通过设备驱动程序实现的,调用设备驱动程序需要给出通讯链路的设备号和需要发送的数据,所以设备号是区分不同通讯链路的标志,在这里通讯链路是TCP链路,只要实现设备号和通讯链路的一一对应关系,配合标准的设备驱动程序接口,即协议接口模块对被测通讯协议模块提供的接口,这样可以对被测通讯协议不作任何修改。
按照本发明提供的方法,其特征在于可以通过性能参数统计模块记录下被测通讯协议运行时有关协议处理的效率、协议处理吞吐量和协议处理抗异常的能力等参数,并进行统计和处理,便于对协议进行分析,找出被测通讯协议的缺陷。
所测的协议参数包括并不限于:a、协议吞吐量:单位时间内协议可以处理数据包的最大数;b、协议中每个数据包的重发次数、丢失情况、时延情况;c、消息延时的分布情况:定长消息情况,不同长度消息对消息延时分布的影响;d、协议处理的延时和链路传输延时在消息延时中所占比例;e、协议异常处理开销:将协议的重发次数和异常控制模块记录的异常次数进行比较统计;f、协议的异常恢复时间:由异常控制模块一次注入错误后,定时统计协议的异常恢复情况;g、协议打包效率。
依照本发明提供的方法,其特征在于当规定了一个标准的协议接口之后,可以实现对被测通讯协议的独立性和可移值性。
应用本发明提供的方法,可以在普通的PC机局域网环境下模拟实际物理环境中可能发生的各种异常,对协议进行比较严格全面的测试,通过对测试结果的分析,可以为协议效率的提高和故障的分析定位提供了有力的支持。
本发明提供的方法,是一种比较通用的协议模拟测试手段。利用本发明的方法可以大大减少协议测试过程中对实际物理环境的依赖,克服实际物理环境的局限性,降低测试成本,提高测试效率。通过充分模拟实际物理环境下发生的各种异常情况,以及模拟各种通讯网络拓扑结构,对协议进行比较彻底的测试,并在此基础上对协议的性能和故障进行统计,为故障的排除和性能改进提供支持。同时,利用本通用协议测试平台可以在硬件完成之前在PC机上对通讯协议进行开发测试,这样可以加快项目的开发进度。
下面通过具体的实施例并结合附图对本发明作进一步详细地描述。
图1是本协议测试平台的整体结构示意图;
图2是实施例中的环境配置;
图3是SDH软件系统层次结构。
下面结合图1、图2介绍在具体环境下,如何采用本发明方法实现测试的。图2中,每个PC上运行一个通用协议测试平台,被测协议模块和通用协议测试平台作为一个程序编译运行,路由配置文件确定通讯网络拓扑结构,异常配置文件确定链路的异常情况。具体的工作过程如下:1、在被测通讯协议模块109和通用协议测试平台作为一个完整的程序运行后,通用协议测试平台通过读取路由配置文件107和异常配置文件106的配置数据,从而完成通用协议测试平台的初始化。如:通过读取路由配置文件中的数据来初始化内存中的路由配置表;2、被测通讯协议模块109产生的数据包首先经过协议接口模块101进入通用协议测试平台,协议接口是一个标准的接口,实现了被测通讯协议的独立性和完整性;3、然后数据包进入异常控制模块102,根据异常配置文件106中的数据决定异常产生的控制方式是发送方控制,还是接收方控制。如果是发送方控制,则数据包立即进行相应的链路异常模拟,其处理流程:是先进行误码处理,然后是数据丢失,最后是时延抖动、重复和失序。控制这些异常产生的数据也是由异常配置文件106决定的。误码和数据丢失的实现是对数据包中的每个数据根据一定的概率进行相应的处理,误码的实现采用对原数据取反码;而所谓数据丢失就是把该数据从数据包中去掉;时延抖动控制实现是把延迟的数据包和不延迟的数据包进行分开处理,采用单独的一个线程来处理延迟的数据包,而不延迟的数据包则直接交由下层模块,即由路由控制模块103来进行处理。在进行时延抖动控制的同时,也相应地产生了数据包的重复和失序;如果异常产生的控制方式是接收方控制,异常处理模块102则不对数据包进行链路异常模拟,数据包交给路由控制模块103处理。4、数据包进入路由控制模块103,路由控制模块103的作用是根据通讯协议发送时选择的设备号来选取相应的透明数据通路,并把数据包发送给选定的透明数据通路。每个设备号和透明数据通路是一一对应的,一条透明数据通路就是一条TCP链路,对应实际单板中的一个通讯设备,被测通讯协议模块109在发送数据时需要指定一个通讯设备,一般用设备号来表示。路由控制模块就是通过将设备号和TCP透明数据通路的一一对应关系,从而实现被测通讯协议的独立性和完整性。在路由配置表中对于每个设备号,都有相应的TCP控制数据,例如TCP连接模式(如:客户模式或服务器模式)、IP地址和端口号。在通用协议测试平台初始化过程中,通过读取路由配置文件中的这些数据分别建立相应的TCP链路。5、数据包在经过透明数据通路模块104之后,被接收方接收到,则按以上相反的次序进行处理。即:数据包在经过透明数据通路模块104之后,被接收方接收到后,交给异常控制模块102,再根据异常配置文件中的异常控制方式决定是否进行异常情况模拟。如果是接收方控制,则根据异常配置文件106中的参数进行异常情况模拟,具体模拟过程路由配置表如过程3所述;如果不是接收方控制,则对数据包不做异常情况模拟。6、经过异常处理模块的数据包,通过协议接口发给被测通讯协议模块。7、被测通讯协议模块109在被测试的过程中,性能参数统计模块105记录下被测通讯协议运行时有关协议处理的效率、协议处理吞吐量和协议处理抗异常的能力等一些参数进行统计和处理,便于对协议进行分析,找出协议的不足之处。
所有这一切的基础就是对每个数据包进行统计,如重发次数、丢失情况和时延情况,在打包每个数据包需要申请内存时,对于每个数据包都带有一个专用的数据区,其中包括重发次数、丢失标志和时戳等数据,在申请内存时重发次数和丢失标志清零,而时戳则打上当时的时间。当被测通讯协议重发时,则增加重发次数;数据包被通讯协议丢失时,记录下丢失标志;在内存归还时通过计算当时的时间和数据包上的时戳之差就可以得到数据包的发送时延。所有的数据包的数据结合到一起,记录在参数统计文件108中,就可以进行进一步的处理。而对于每个数据包的这些参数的统计,是本发明通过在被测通讯协议模块的源程序中加入一些采样函数来实现的。
在异常控制模块中只是记录异常产生的种类、次数和时间;路由控制模块中记录从每个透明数据通路中发送和接收到的数据包的数量;透明数据通路模块中不记录数据;在性能参数统计模块中根据以上的数据,可以分析出在不同的异常模拟情况下的被测通讯协议的性能,用于通讯协议的改进。有关被测通讯协议的性能主要包括如下一些内容,根据需要还可以增加。a、协议的吞吐量:根据一段时间内每条透明数据通路中的收发数据量可以计算出单位时间内处理数据包的最大数,即协议的吞吐量;b、协议中每个数据包的重发次数、丢失情况、时延情况:这些根据每个数据包中的专用的数据区进行统计;c、各种数据包时延的分布情况:根据每个数据包的时延,并结合实际链路的情况(链路的速度、链路的可靠性情况等)和每个数据包的长度来分析通讯协议的性能;d、通讯协议异常处理的开销:根据记录下来的异常产生的次数和时间,以及每个数据包的重发次数、时延和丢失情况,来分析通讯协议对异常处理的开销,同时根据协议从处理异常到正常运行的过程,可以分析出协议对于一个异常进行处理的恢复情况;e、协议的打包效率:针对不同的通讯协议对于数据包的打包方法,通过以上通讯协议性能的不同统计分析,比较出协议的不同打包方法对协议的影响,从而选出最好的打包方法。
SDH(Synchronous Digital Hierarchy)传输系统系统软件结构如图3所示:分为三层:包括操作维护台的网管系统SMN(SDH Management Network)软件、网元主控板NS(Network Equipment Supervisor)软件和单板MCU(Micro Controller Unit)软件。网管系统SMN提供网元管理层的功能,可同时对多个SDH子网的管理;网元主控板NS完成网元内设备的管理;单板MCU完成单板内硬件的管理。
其中:Qsdh为SMN和NS板的接口;
ECC为NS板之间的通讯接口;
S口为NS板和MCU单板的通讯接口。各个网元的主控板(NS板)有4个DCC(Data Communication Channel)各个网元的主控板(NS板)有4个DCC(Data Communication Channel)口,各个NS板通过DCC口的连接实现了一个ECC(Embedded ControlChannel)通讯网络。由于SDH组网的拓扑结构比较复杂,导致ECC通路的拓扑结构也比较复杂,ECC通讯模块就是实现各个网元通过ECC通路进行相互间的通讯,包括路由表的装载模块、数据包的收发模块和数据包的转发模块等,其特点是网络拓扑结构复杂,通讯协议也有一定的特殊性。在硬件环境还没有完成之前,使用本发明提供的通用协议测试平台对ECC通讯模块进行了开发、调试和测试,其环境配置如图2所示,每个PC代表一个网元,通过路由配置文件来实现各种网络拓扑结构,通过异常配置文件进行异常情况配置,在每台PC上运行通用协议测试平台,对ECC通讯模块进行测试,通过数据统计文件即可对ECC通讯协议进行分析,为协议效率的提高和故障的分析定位提供了有力的支持,同时加快了项目的开发进度。