一种网络通信异常测试方法和装置与流程

文档序号:12375967阅读:611来源:国知局
本发明涉及一种网络通信异常测试方法和装置。
背景技术
::在互联网应用中,网络通信是必不可少的环节,通常发生在系统与系统之间、应用与应用之间、以及接口与接口之间。而通信协议通常都是基于TCP和UDP,在网络传输层之上进行的。尽管TCP是一种可靠的链接,但在真实网络中还是经常出现数据包丢失、数据包内容传输错误、数据包之间传输超时等问题。这种情况,可能导致通信失败而程序僵死,也可能导致程序崩溃,严重时可能造成数据内容错误带来经济损失。虽然研发人员可能会进行异常保护,但是这种保护是否起效,却很难得知。特别是在分布式系统中,如果某分片发生瞬断等故障,需要启动系统故障处理流程以及备份功能。测试人员需要构造网络通信异常的场景来进行模拟测试。而通常这样的场景仅是偶然现象,很难复现。更难以实现自动化异常测试。目前,测试团队构造这样的异常场景主要通过人工制造异常和辅助工具进行。测试团队,通常很难构造异常场景。异常测试覆盖率较低。常见的方法包括:拔插网线构造断网场景、利用发包工具发送大量数据构造网络拥塞场景、还可以配置错误ip地址或者port端口号造成链接失败等方法。但是这样的方法仅能模拟出近似的异常场景,不能完成实现丢包、错包、延时事件发生,并且偶然性较大,人为干扰因素较多。随着测试工具的发展,也可利用一些工具进行网络测试。例如:tcpreplay可实现tcp数据包重新发送,但需要前期录制好测试数据业务; tcpwrite可实现对tcp数据包协议头部分的改写,但无法对数据包内容进行改写;wireshark、tcpdump可截获网络数据业务,用于分析数据包内容,但是不能做修改;iptables是一款linux管理防火墙工具,在路由策略和端口转发上应用广泛;很多代理工具也可实现网络数据转发,但是转发过程中不能进行其他异常场景的构造操作。针对分布式系统,有一款chaosmonkey工具,可以在系统中随机关闭某些服务来实现瞬断。但是在实际测试中,不易与其他测试流程集成,不利于自动地执行。综上所述,现有技术中存在如下不足:针对人工构造异常场景1.测试过程中人为干扰因素较多,不易复现问题,并且操作繁琐,费时费力。2.并不能准确构造丢包、错包、延时的策略,时间和数量都无法准确把握。3.手工测试无法实现自动化,无法量化计算。针对利用网络工具构造异常场景1.各工具满足一部分测试工作,无法相互调用,不便于系统化集成测试。无法自动化。2.缺乏一种构造测试数据的工具,无法实现错包异常的模拟。3.各工具目前主要用于协议分析观测、业务复现,无法满足延时异常和数据异常灵活的场景构造。4.无法保留测试过程,测试数据保存困难,不利用复用,无法形成有效的、固化的测试场景。技术实现要素:鉴于本领域中存在的上述问题,本发明提出了一种网络通信异常测试的方法,可以解决上述异常场景构造的问题,即通过代理方式故意造成网络通信数据包丢失、数据出错、数据包延时现象,并以此达 到网络通信异常场景构造的目的。本方法主要利用一种代理的方法实现对数据包的截获和转发,在过程中通过不转发数据包、修改数据包内容、增加转发延时的操作实现丢包、错包、延时大的网络异常现象。并且在控制和维护上增加命令行和多任务机制实现自动化控制和多场景构造的功能。利用本方法可以及时发现产品中存在的隐性故障,杜绝小概率的异常事件对产品造成的危害。通过利用本方法制作的工具装置可以帮助测试人员构造丰富的测试场景,保障测试质量,提高产品抗异常风险的能力,并最终带来收益。同时,本方法还是一种自动化的方法,可以方便的集成在自动化系统中,为测试人员提高效率。本发明技术方案可以带来这样的有益效果,即实现网络通信异常场景的构造,提高测试覆盖,保障产品质量,防范风险。自动化执行异常测试,提高测试效率,节约人力成本,降低人为风险。可扩展、可移植的异常测试场景,方便执行。可移植到任何网络通信异常测试中,利于复用到其它测试团队和产品线。也可用于研发产品准出测试、多场景构造的系统测试和分布式系统功能测试。根据本发明的一个方面,提供了一种网络通信异常测试方法。所述方法包括:从应用接收数据包;对所述数据包执行代理服务;并且向其它应用转发所述数据包,其中对所述数据包执行代理服务还包括:当超过丢包忽略时间后,根据丢包策略,对所述数据包执行丢包处理;和/或当超过延时忽略时间后,根据延时时间,对所述数据包执行延时处理;和/或当超过错包忽略时间后,对所述数据包的数据内容执行错包处理。根据本发明的一个实施例,其中所述丢包策略包括随机丢包和模板丢包,其中所述随机丢包是指根据随机的几率,自动判定是否丢弃某数据包,以及所述模板丢包是指将给定的n位二进制字符串确定为丢包模板,根据字符串中各位的状态判定是否丢弃某数据包。根据本发明的一个实施例,其中所述延时时间能够由用户进行设置,其中所述错包处理的具体内容能够由用户进行设置,以及其中所述丢包忽略时间、所述延时忽略时间和所述错包忽略时间为忽略包数并且能够由用户进行设置。根据本发明的一个实施例,还包括自动地执行代理服务中的所述丢包处理、所述延时处理和所述错包处理中的任意一个或多个的组合。根据本发明的一个实施例,还包括记录测试任务和一系列异常控制udp指令,作为异常测试标准场景。根据本发明的另一个方面,提供了一种网络通信异常测试装置。所述装置包括:接收装置,用于从应用接收数据包;代理装置,用于对所述数据包执行代理服务;以及转发装置,用于向其它应用转发所述数据包,其中所述代理装置包括:丢包处理模块,用于当超过丢包忽略时间后,根据丢包策略,对所述数据包执行丢包处理;和/或延时处理模块,用于当超过延时忽略时间后,根据延时时间,对所述数据包执行延时处理;和/或错包处理模块,用于当超过错包忽略时间后,对所述数据包的数据内容执行错包处理。根据本发明的一个实施例,其中所述丢包策略包括随机丢包和模板丢包,其中所述随机丢包是指根据随机的几率,自动判定是否丢弃某数据包,以及所述模板丢包是指将给定的n位二进制字符串确定为丢包模板,根据字符串中各位的状态判定是否丢弃某数据包。根据本发明的一个实施例,其中所述延时时间能够由用户进行设置,其中所述错包处理的具体内容能够由用户进行设置,以及其中所述丢包忽略时间、所述延时忽略时间和所述错包忽略时间为忽略包数并且能够由用户进行设置。根据本发明的一个实施例,还包括命令行控制接口,用于自动地执行代理服务中的所述丢包处理、所述延时处理和所述错包处理中的任意一个或多个的组合。根据本发明的一个实施例,还包括场景生成器,用于记录测试任务和一系列异常控制udp指令,作为异常测试标准场景。附图说明附图用于更好地理解本发明,并不构成对本发明的不当限定。其中:图1是根据本发明实施例的一种网络通信异常测试方法的示意流程图;图2是根据本发明实施例的一种网络通信异常测试装置10的示意框图;图3是根据本发明实施例的一种网络通信异常测试方案架构的示意框图;图4是根据本发明实施例的数据包传输异常构造过程的示意流程图;以及图5是根据本发明实施例的自动化测试过程的示意流程图。具体实施方式以下结合附图对本发明的示范性实施例做出说明,其中包括本发明实施例的各种细节以助于理解,应当将它们认为仅仅是示范性的。因此,本领域普通技术人员应当认识到,可以对这里描述的实施例做出各种改变和修改,而不会背离本发明的范围和精神。同样,为了清楚和简明,以下的描述中省略了对公知功能和结构的描述。图1是根据本发明实施例的一种网络通信异常测试方法的示意流程图。如图1所示,网络通信异常测试方法包括:步骤S01,从应用接 收数据包;步骤S02,对所述数据包执行代理服务;以及步骤S03,向其它应用转发所述数据包。其中对所述数据包执行代理服务的步骤S02还包括:当超过丢包忽略时间后,根据丢包策略,对所述数据包执行丢包处理;和/或当超过延时忽略时间后,根据延时时间,对所述数据包执行延时处理;和/或当超过错包忽略时间后,对所述数据包的数据内容执行错包处理。根据本发明的一个实施例,在网络通信异常测试方法中,所述丢包策略包括随机丢包和模板丢包,其中所述随机丢包是指根据随机的几率,自动判定是否丢弃某数据包,以及所述模板丢包是指将给定的n位二进制字符串确定为丢包模板,根据字符串中各位的状态判定是否丢弃某数据包。根据本发明的一个实施例,在网络通信异常测试方法中,所述延时时间能够由用户进行设置,其中所述错包处理的具体内容能够由用户进行设置,以及其中所述丢包忽略时间、所述延时忽略时间和所述错包忽略时间为忽略包数并且能够由用户进行设置。根据本发明的一个实施例,网络通信异常测试方法还包括自动地执行代理服务中的所述丢包处理、所述延时处理和所述错包处理中的任意一个或多个的组合。根据本发明的一个实施例,网络通信异常测试方法还包括记录测试任务和一系列异常控制udp指令,作为异常测试标准场景。图2是根据本发明实施例的一种网络通信异常测试装置10的示意框图。如图2所示,网络通信异常测试装置10包括:接收装置110,用于从应用接收数据包;代理装置120,用于对所述数据包执行代理服务;以及转发装置130,用于向其它应用转发所述数据包,其中所述代理装置120包括:丢包处理模块,用于当超过丢包忽略时间后,根据 丢包策略,对所述数据包执行丢包处理;和/或延时处理模块,用于当超过延时忽略时间后,根据延时时间,对所述数据包执行延时处理;和/或错包处理模块,用于当超过错包忽略时间后,对所述数据包的数据内容执行错包处理。根据本发明的实施例的装置10,其中丢包策略包括随机丢包和模板丢包,其中所述随机丢包是指根据随机的几率,自动判定是否丢弃某数据包,以及所述模板丢包是指将给定的n位二进制字符串确定为丢包模板,根据字符串中各位的状态判定是否丢弃某数据包。根据本发明的实施例的装置10,其中所述延时时间能够由用户进行设置,其中所述错包处理的具体内容能够由用户进行设置,以及其中所述丢包忽略时间、所述延时忽略时间和所述错包忽略时间为忽略包数并且能够由用户进行设置。本发明核心设计是以代理服务的方式构造异常场景,在应用A和应用B之间架设代理服务,使原本可以直达的数据链路,经过代理服务才能到达对端。代理的工作是监听应用A发送的数据包,收到后进行解析和处理,再转发给应用B的监听端口。在转发阶段做数据处理,以实现丢包、错包、延时的效果。异常测试方案架构如图3所示。在代理过程中,数据包从应用A流向代理服务,经过处理后再向应用B转发。在经过代理服务时分别做丢包、错包、延时的处理。根据任务场景,可选择性执行一种处理或者多种处理。如图4所示。在处理延时任务,为了保证通信连接正常建立,选择恰当的测试点,可以设置首先忽略若干数据包,当到达忽略包数上限时再执行延时处理。在处理线程中,直接等待延时所设置的时长,当到达sleep时长后再执行后续任务。以此达到数据包延时发送的效果。延时时长和忽略包数用户可设置。在处理丢包任务时,同理先判断是否达到忽略上限,达到后再进行判断是否应丢弃此数据包。丢包策略分为随机丢包和模板丢包。随机丢包是指:用户给定随机的几率(例如,数字0-100),生成随机数自动判定是否丢弃此包。模板丢包是指用户给定n位由“1”和“0”组成的字符串,每一位对应一个网络数据包。从开始执行丢包任务起,遍历字符串。扫描第一个数字,若为“1”时,不丢弃此包,若为“0”时,执行丢包。下一个数据包扫描第二个数字,以此类推……当n个数字都扫描结束时,重新扫描第一个数字。其中,n优选为例如10。本策略为丢包场景构造重要保护的方法。丢包策略和忽略包数,可由用户设置。在处理错包任务时,同理先判断是否达到忽略上限,达到后再修改数据包。先要对根据协议类型对协议进行解析,获取数据包内关键字段,对其中数据进行修改。此方法需要预知数据包格式。数据包修改内容和忽略包数可由用户设置。自动化接口要求实时可配置,因此本发明设计udp的方式进行命令控制。如图3所示,命令行控制接口可由任何udp通信接口控制执行。在自动化系统中,添加udp通信模块即可对本发明装置进行实时控制。需要命令解析模块分析指令内容,并执行相应的开启、关闭服务操作。如图5所示。命令行控制接口设计包括add、del、close三种操作。接口参数包括:[-p][-d][--st][--dt][--sdrop][--ddrop][--change]-p[proxyIP:proxyPORT]:参数表示代理服务监听的ip和端口-d[dstIP:dstPORT]:参数代理转发的目标ip和端口--dt[time:ignore]:代理转发给目标端数据的延迟时间和忽略包数--st[time:ignore]:代理返回给发送端数据的延迟时间和忽略包数--ddrop[templet:ignore]:代理与目标端链路丢包策略和丢包前忽略的包数--sdrop[templet:ignore]:代理与发送端链路丢包策略和丢包前忽略的包数--change[key:content]:修改数据关键字名称和修改成的数据示例:add–p192.168.1.1:8080–d192.168.171.198:5656--st10:89返回:ok、err在自动化测试过程中,当一个测试任务完成后,可利用udp命令行对代理服务重新设置。例如,删除原有的具体代理服务内容,再添加新的代理服务内容等。在做命令设置时,代理服务对于新的指令立即生效。因此可以实现实时控制的效果,满足自动化测试的需求。无需人工界面操作,可利用脚本发送udp指令控制。在图3所示中,自动化测试系统包括场景生成器模块。本模块可记录测试任务,并且记录一系列异常控制udp指令,作为异常测试标准场景。通过此方法,可向其他测试团队推广。添加测试场景的过程一般为:1.新建场景,并命名。2.设置测试对象,即利用命令行对代理服务进行配置。可能是多种策略同时进行,也可以是某一种策略。3.通过延时方式设置上述策略执行时长。4.删除已有策略,并进行新的策略设置。5.重复2-4的过程,直到测试任务结束。6.保存上述全部步骤为测试场景文件。本发明推荐一种默认异常构造场景如下所示:udp(add–p192.168.1.1:8080–d192.168.171.198:5656--dt5:20–ddrop0111111111:40)//A到B数据延时5s,从20个包后开始,并且每10个数据包丢弃第一个,从第40个数据包开始sleep(100)udp(del)udp(add–p192.168.1.1:8080–d192.168.171.198:5656--st5:20–sdrop1111111110:40)//B到A返回数据延时5s,从20个包后开始,并且每10个数据包丢弃最后一个,从第40个数据包开始。sleep(100)udp(del)上述场景用于网络状况不稳定的异常测试。小概率出现的事件为丢包和延时。其中,延时时间较长,有可能达到网络数据通信等待超时时限。上述具体实施方式,并不构成对本发明保护范围的限制。本领域技术人员应该明白的是,取决于设计要求和其他因素,可以发生各种各样的修改、组合、子组合和替代。任何在本发明的精神和原则之内所作的修改、等同替换和改进等,均应包含在本发明保护范围之内。当前第1页1 2 3 当前第1页1 2 3 
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1