发明内容
针对相关技术中的问题,本发明提出一种系统的测试方法和装置,能够模拟各种各样可变的网络真实报文,提高测试报文的多样性和数量;通过系统中实现的算法来实现被测系统的预期测试结果存储,提高了系统开发效率。
本发明的技术方案是这样实现的:
根据本发明的一个方面,提供了一种系统的测试方法。
该测试方法包括:
基于预定的规范对网络通信协议的参数信息进行随机配置;
根据预定的第一算法对配置后的网络通信协议所产生的报文进行计算,得到预期测试结果并存储;
由被测系统对报文进行处理,得到处理结果;
将处理结果和目标测试结果进行对比,根据对比结果确定被测系统的测试情况。
其中,在基于预定的规范对网络通信协议的参数信息进行随机配置时,可根据预定的算法提取网络通信协议的参数信息中的关键信息;并基于预定的规范对关键信息进行随机配置。
优选的,可基于预定的规范对开放式系统互联参考模型(OSI)中至少一层网络通信协议的参数信息进行随机配置。
其中,在根据预定的第二算法对配置后的网络通信协议所产生的报文进行计算时,可根据不同的预定子算法对配置后的不同层的网络通信协议所产生的不同子报文分别进行计算,得到对应被测系统的不同测试接口的预期测试子结果并存储。
相应的,在由被测系统对报文进行处理时,可由被测系统的不同测试接口分别对相应的子报文进行处理,从而得到对应不同测试接口的处理子结果。
相应的,在将处理结果和目标测试结果进行对比,并根据对比结果确定被测系统的测试情况时,可将对应相同测试接口的处理子结果与预期测试子结果进行对比,从而根据对比结果来确定该测试接口的测试情况。
优选的,当多个测试接口存在业务联系时,如果该多个测试接口中至少一个测试接口的对比结果为处理子结果和预期测试子结果不同,那么将停止对与该测试接口有业务联系的一个或多个测试接口的测试。
根据本发明的另一方面,提供了一种系统的测试装置。
该测试装置包括:
配置模块,用于基于预定的规范对网络通信协议的参数信息进行随机配置;
存储模块,用于根据预定的第一算法对配置后的网络通信协议所产生的报文进行计算,得到预期测试结果并存储;
处理模块,用于由被测系统对报文进行处理,得到处理结果;
对比模块,用于将处理结果和目标测试结果进行对比,根据对比结果确定被测系统的测试情况。
其中,该配置模块可包括:
提取模块,用于根据预定的第二算法提取网络通信协议的参数信息中的关键信息;
配置子模块,用于基于预定的规范对关键信息进行随机配置。
优选的,该配置模块可进一步用于基于预定的规范对开放式系统互联参考模型OSI中至少一层网络通信协议的参数信息进行随机配置。
本发明通过模拟各种各样可变的网络真实报文,提高了测试报文的多样性和数量;通过系统中实现的算法来实现被测系统的预期测试结果存储,提高了系统开发效率。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员所获得的所有其他实施例,都属于本发明保护的范围。
根据本发明的实施例,提供了一种系统的测试方法。
如图1所示,根据本发明实施例的测试方法包括:
步骤S101,基于预定的规范对网络通信协议的参数信息进行随机配置;
步骤S103,根据预定的第一算法对配置后的网络通信协议所产生的报文进行计算,得到预期测试结果并存储;
步骤S105,由被测系统对报文进行处理,得到处理结果;
步骤S107,将处理结果和目标测试结果进行对比,根据对比结果确定被测系统的测试情况。
为了更好的理解本发明的上述技术方案,下面结合一具体实施例来对本发明的上述技术方案进行详细阐述。
为了能够使被测系统的测试场景更加符合真实的系统使用场景(即复杂交错的网络环境),在本实施例中可对OSI中的各层协议分别进行参数配置,从而构造出任何嵌套式的复杂报文,具体的,参照图2所示的报文构造与预期结果预存的流程图可以看出,在本实施例中,通过对OSI中的应用层、传输层(例如TCP)、网络层(例如IP)、数据链路层协议的参数信息或者说是协议的属性在符合规范格式的情况下分别进行随机赋值(随机配置),这样经过随机配置后的各层协议所产生的子报文就会构成一个测试激励(即测试报文),具体的,从图2可以看出,DataSrcBuf是原始报文缓存区,其中,配置后的每层协议在产生子报文时,均会将其存储在DataSrcBuf中,那么当OSI中所有层的协议子报文均产生后就会形成测试激励并存储在Global Buffer中;同时,每层协议还均会将其产生的子报文发送至下一层协议处理,从而使得配置后的下一层协议能够基于从上一层协议处接收的子报文再产生本层协议的子报文;同时,本发明还会对每层协议所产生子报文利用预定的子算法对其分别进行计算,从而得到对应被测系统的不同测试接口的预期测试子结果,并每层协议的预期测试子结果存储在对应的预期结果模块中,这样每个预期结果模块均存储着与之对应的协议层的预期测试子结果;其中,前面提到的被测系统的不同测试接口也是与不同的协议层一一对应的;同时,每个预期结果模块中的预期测试子结果均会存储在DataExpBuf,即预期结果缓冲区中;并且,当OSI中所有层的协议均进行了预期测试子结果的存储后,系统还会将预期测试结果(即所有预期测试子结果的结合)存储在Global Buffer中,这样就实现了测试激励的在不同协议层的层层构造,同时还预存了测试激励在被测系统的不同测试接口(即不同协议层)的预期测试子结果。
其中,在一个优选的实施例中,为了避免在构造复杂且嵌套的报文时所存在的数据冗余问题,在基于预定的规范格式对网络通信协议的参数信息进行随机配置时,可根据预定的第二算法来对不同层的网络通信协议的参数信息中的关键信息进行提取;并基于预定的规范对关键信息进行随机配置。
具体的,以传输层协议(例如TCP)来说,图3示出了TCP报文头部的结构图,其中该结构图中示出了TCP报文头部的多个属性(参数),那么为了不对系统性能造成影响,造成不必要的配置,可利用哈希(hash)算法从TCP头部中提取源端口和目的端口这些关键信息,然后对这些关键信息进行随机配置,即随机赋值,当然是在符合规范格式的情况下随机赋值,从而实现了对传输层TCP协议的随机配置,从而对某一个端口在正常情况下和极端情况下的工作状态进行测试。
再例如,以网络层协议IP协议来说,图4示出了IPv4报文头部的结构图,从图4可以看出其示出了IP报文头部的多个属性,那么为了不对系统性能造成影响,造成不必要的配置,可利用第二算法从IP头部中提取报头长度、IP层的总长度、源IP地址、目标IP地址这些关键信息,然后对这些关键信息进行随机配置,即随机赋值,当然是在符合规范格式的情况下随机赋值,从而实现了对网络层IP协议的随机配置。由于本发明所限定的对网络通信协议的配置方式是只要符合规范格式的都可以任意对其进行主动配置,这样就能够真实的模拟出各种报文,从而更容易测试出系统的问题所在,同时也可以模拟极端情况下系统的反应能力,以及通过故意模拟错误的报文,查看系统的处理能力,这些都是在本发明中可以任意得到的。
那么通过图2所示的方式进行报文的构造,就可以构造出任何嵌套式的复杂报文,只要需求中有的,本发明都可以按照要求构造出真实的流给系统测试应用,这样给整个系统的符合性带来了极大的方便。
值得注意的是,这里只是示意性的举了两个对OSI层中的协议进行配置的具体方式,即,本发明对于对每个协议层中配置的协议个数,以及对协议中关键信息的确定、提取方式并不作限定,此外,在上述实施例中,图2只是示意性的举了四个协议层,但是,在实际应用中,可以根据被测系统需要测试的接口的不同,来对不同协议层的协议进行配置,使得配置的协议层是与该测试接口相对应的,另外,该协议层必然处于OSI中。
那么在构造完测试激励和预期测试子结果后,就可以参照图5,将测试激励发送至被测系统的各个测试接口(DUT)中,由被测系统对测试激励进行处理,其中,由于在本实施例中的各个DUT是存在着业务联系,或者说是存在着业务处理的逻辑关系的,因此,在由被测系统对报文进行处理时,虽然每个测试接口均接收到了测试激励,但是除了DUT1,其他的测试接口DUT均是需要接收上一个DUT传送的相关处理数据后才可以执行对测试激励的处理;
其中,对于每个测试接口(测试模块)对测试激励的处理来说,在本实施例中,每个测试接口都会对接收的测试激励进行解析,从而从解析得到的数据中读取对应本测试接口的子报文,然后再对该子报文进行处理,得到对应本测试接口的处理子结果,然后,DUT会将处理子结果发送至结果输出比对模块,而结果输出比对模块中是存储着对应着该测试接口的预期测试子结果的,因此,结果输出对比模块就会将对应相同测试接口(即本测试接口)的处理子结果与预期测试子结果进行对比,并将对比结果反馈给该测试接口DUT,而如果DUT根据对比结果确定二者不一致,则不会发送处理信息至下一个DUT,即停止对与该测试接口有业务联系的测试接口的测试;而如果DUT根据对比结果确定二者一致,则会发送处理信息至下一个DUT,对被测系统的下一个DUT继续进行测试,测试过程同上,在此不再赘述;另一方面,对于接收到来自DUT的处理子结果的结果输出对比模块来说,在对处理子结果与预期测试子结果进行对比后,其会根据对比结果的不同作出不同的处理,具体的,在对比结果为相同的情况下,该结果输出对比模块会生成异常信息并输出,那么系统就会根据该异常信息确定被测系统的DUT1在性能的哪些方面有问题;而在对比结果为相同的情况下,那么系统将会对下一个DUT继续进行测试,具体过程同上,在此不再赘述,这样通过对被测系统的每一层测试接口进行测试,就可以确定被测系统在功能和性能的哪些方面存在异常,大大减少了开发周期,提高了测试效率。
从上述描述可以看出,本发明首先基于网络协议的规范,以及系统中算法的需求,逐层将数据写到缓存区,同时记录关键信息,其中,整个系统中会出现多种算法,为了达到全面的覆盖,需要模拟真实的算法,利用反推的方式得到所需要的关键信息,比如五元组信息的提取,hash算法的实现,bloomfiltre算法的实现,规则匹配等,都需要提前反推出关键信息,然后以原始报文的形势填充到对应层的字节域中,所以根据测试要求的不用,灵活配置寄存器得到所需要的真实数据流对整个系统的测试是非常关键的,尤其是大规模大流量的系统测试,这种提前预知的目的性和随机性,对整个系统的效率提高是显而易见的。
根据本发明的实施例,还提供了一种系统的测试装置。
如图6所示,根据本发明实施例的测试装置包括:
配置模块61,用于基于预定的规范对网络通信协议的参数信息进行随机配置;
存储模块62,用于根据预定的第一算法对配置后的网络通信协议所产生的报文进行计算,得到预期测试结果并存储;
处理模块63,用于由被测系统对报文进行处理,得到处理结果;
对比模块64,用于将处理结果和目标测试结果进行对比,根据对比结果确定被测系统的测试情况。
其中,在一个实施例中,根据本发明实施例的配置模块61可包括:
提取模块(未示出),用于根据预定的第二算法提取网络通信协议的参数信息中的关键信息;
配置子模块(未示出),用于基于预定的规范对关键信息进行随机配置。
优选的,在一个实施例中,根据本发明实施例的配置模块61可进一步用于基于预定的规范对开放式系统互联参考模型OSI中至少一层网络通信协议的参数信息进行随机配置。
综上所述,借助于本发明的上述技术方案,本发明通过模拟各种各样可变的网络真实报文以及系统中实现的算法,并对系统中所有的接口进行结果预存并实时读取比对,同时配合详细的输出打印信息,既能快速准确定位功能错误所在,又可以清晰的发现系统的性能瓶颈,综合以上特点,高效全面的测试方案可以提高大大提高整个系统的开发效率。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。