一种仿真线上流量的压力测试方法
技术领域
本发明属于仿真测试
技术领域
,特别是涉及一种仿真线上流量的压力测试方法。背景技术
随着互联网行业的迅速发展,市面上出现了各式各样的软件,软件测试也变得日益重要,一个健壮的软件必然是经过了多种测试的,当一个软件刚刚面世时,往往缺少真实的用户,在这种情况下,如果只是通过简单的客户端进行模拟,模拟不出真实环境的效果,而在软件迭代的过程中,往往需要根据真实的环境进行特定的优化,那么,如何保证测试时的真实性,就成了一个关键的问题。
发明内容
为解决上述问题,本发明提供了一种仿真线上流量的压力测试方法,能够提升在测试环境模拟时的真实性,让开发者更好地了解线上情况,从而能够对软件进行特定的优化。
本发明提供的一种仿真线上流量的压力测试方法,包括:
利用多个抓包服务端对真实客户端的端口进行线上抓包;
将至少两个所述抓包服务端抓到的包发送到收包客户端;
利用包处理模块将所述抓到的包进行重新组合以放大流量;
将重新组合之后的包发给模拟器进行压力测试。
优选的,在上述仿真线上流量的压力测试方法中,利用多个抓包服务端对多个真实客户端的端口进行线上抓包。
优选的,在上述仿真线上流量的压力测试方法中,将至少两个所述抓包服务端抓到的包发送到多个收包客户端。
优选的,在上述仿真线上流量的压力测试方法中,所述利用包处理模块将所述抓到的包进行重新组合以放大流量包括:
利用所述包处理模块将所述抓到的包进行过滤,留下同种类型的包,将同种类型的包文件合并成一个包文件。
优选的,在上述仿真线上流量的压力测试方法中,所述将同种类型的包文件合并成一个包文件为:
将同种类型的包文件根据收包时刻的时间戳进行交错合并。
优选的,在上述仿真线上流量的压力测试方法中,在所述利用包处理模块将所述抓到的包进行重新组合以放大流量之前,还包括:
利用所述包处理模块伪造包并加入到所述抓到的包中。
优选的,在上述仿真线上流量的压力测试方法中,所述将重新组合之后的包发给模拟器进行压力测试包括:
根据所述重新组合之后的包中的链接信息建立不同的链接;
将带有相同的链接信息的包由相同的链接发给所述模拟器。
优选的,在上述仿真线上流量的压力测试方法中,还包括:
利用所述模拟器的线程休眠,模拟真实客户端发包的时间间隔发包进行压力测试。
通过上述描述可知,本发明提供的上述仿真线上流量的压力测试方法,由于包括先利用多个抓包服务端对真实客户端的端口进行线上抓包;然后将至少两个所述抓包服务端抓到的包发送到收包客户端;再利用包处理模块将所述抓到的包进行重新组合以放大流量;最后将重新组合之后的包发给模拟器进行压力测试,可见该方法结合了线上抓包和线下测试两个方面,利用线上抓到真实的包的组合来增加测试流量,从而能够提升在测试环境模拟时的真实性,让开发者更好地了解线上情况,从而能够对软件进行特定的优化。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
图1为本发明提供的一种仿真线上流量的压力测试方法的实施例的示意图;
图2为仿真线上流量的压力测试方法的具体流程图。
具体实施方式
本发明的核心是提供一种仿真线上流量的压力测试方法,能够提升在测试环境模拟时的真实性,让开发者更好地了解线上情况,从而能够对软件进行特定的优化。
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明提供的一种仿真线上流量的压力测试方法的实施例如图1所示,图1为本发明提供的一种仿真线上流量的压力测试方法的实施例的示意图,该方法可以包括如下步骤:
S1:利用多个抓包服务端对真实客户端的端口进行线上抓包;
需要说明的是,参考图2,图2为仿真线上流量的压力测试方法的具体流程图,每当真实的用户请求抓包服务端时,如果当前开启了抓包功能,就会监听真实客户端的几个固定的端口,包的流动方向有两个,其中一个是当作正常的请求进行处理,另外一个就是将包通过网络发送到其他进程,由另外的进程处理包的格式之类琐碎的事情,由于包是通过网络发送出去的,而开启了抓包功能后,需要额外发送请求包,这可能占用部分网络带宽,因此,可以简单的将包发送给本地进程,这样一来就可以不消耗网络带宽,从而不会影响原来的服务端性能。
S2:将至少两个抓包服务端抓到的包发送到收包客户端。
如果监听收包程序的端口连接上了一个客户端,那么抓包服务端就会将真实客户端发来的包原样的发给收包客户端,此时抓包服务端不对这个包进行任何格式上的处理,否则可能影响原有服务的性能。
S3:利用包处理模块将抓到的包进行重新组合以放大流量;
需要说明的是,从线上抓到包之后,就可以将包作为不同工具的输入,例如可以将不同的包进行分离,分开进行测试,如果需要压力测试,并且当前真实用户并没有那么多,就可以将获取的包重新组合,根据需要将压力放大到不同的倍数。如果需要保证请求的时间顺序并且需要当时不同服务的发包测试,那么可以由不同服务所在服务器发包给某一台专门用来接收的服务器,这就保证了捕获到的包的时间顺序。
S4:将重新组合之后的包发给模拟器进行压力测试。
需要说明的是,处理完包之后,就可以进行模拟测试,其中模拟器就是一个输入为包、输出为性能分析报告的客户端,它可以将线上获取的包按照时间顺序重新发给测试环境的服务器。
通过上述描述可知,本发明提供的上述仿真线上流量的压力测试方法的实施例中,由于包括先利用多个抓包服务端对真实客户端的端口进行线上抓包;然后将至少两个抓包服务端抓到的包发送到收包客户端;再利用包处理模块将抓到的包进行重新组合以放大流量;最后将重新组合之后的包发给模拟器进行压力测试,可见该方法结合了线上抓包和线下测试两个方面,利用线上抓到真实的包的组合来增加测试流量,从而能够提升在测试环境模拟时的真实性,让开发者更好地了解线上情况,从而能够对软件进行特定的优化。
在上述仿真线上流量的压力测试方法的一个具体实施例中,利用多个抓包服务端对多个真实客户端的端口进行线上抓包,这样就可以用抓包服务端抓到更多的包进行组合,从而更好的模拟流量的放大。
在上述仿真线上流量的压力测试方法的另一个具体实施例中,将至少两个抓包服务端抓到的包发送到多个收包客户端。
需要注意的是,收包客户端可以不只有一个,当网络带宽未被完全利用时,可以将多个收包客户端连接到抓包服务端,此时,抓包服务端需要将收到的包发给不同的收包客户端。
在上述仿真线上流量的压力测试方法的又一个具体实施例中,利用包处理模块将抓到的包进行重新组合以放大流量包括:
利用包处理模块将抓到的包进行过滤,留下同种类型的包,将同种类型的包文件合并成一个包文件。
需要说明的是,有了线上环境的真实客户端发的包,就可以对包进行不同的处理,如果需要客观真实地模拟当时的场景,那么无需对包进行任何处理,而如果需要对服务端程序进行压力测试,而实际的流量并没有那么大,那么就可以将相同的包文件进行组合,比如,需要将流量放大两倍,那么就可以将两个相同的包合并在一起。
在上述仿真线上流量的压力测试方法的一个优选实施例中,将同种类型的包文件合并成一个包文件可以为:
将同种类型的包文件根据收包时刻的时间戳进行交错合并。
具体的,这就是说要注意合并的顺序问题,因为在抓包服务端将包发给收包客户端后,收包客户端会记录下收包时刻的时间戳,所以需要将包进行交错合并。这样会更加真实。
在上述仿真线上流量的压力测试方法的另一个优选实施例中,在利用包处理模块将抓到的包进行重新组合以放大流量之前,还可以包括:
利用包处理模块伪造包并加入到抓到的包中。
需要说明的是,由于在开启抓包的时候线上环境已经有存在一些状态,所以在模拟测试时就需要先恢复这些环境,方法之一是伪造一些包向服务端发起请求,而如果不伪造包的话,服务端可能会出错。
在上述仿真线上流量的压力测试方法的又一个优选实施例中,将重新组合之后的包发给模拟器进行压力测试可以包括:
根据重新组合之后的包中的链接信息建立不同的链接;
将带有相同的链接信息的包由相同的链接发给模拟器。
也就是说,当捕获到的包中带有链接信息时,需要根据这个链接信息,建立不同的链接,将带有相同链接信息的包由相同的链接发送出去,这样就不会出错。
进一步的,在上述仿真线上流量的压力测试方法的基础上,还可以包括:
利用模拟器的线程休眠,模拟真实客户端发包的时间间隔发包进行压力测试。
具体的,为了使测试更加真实,模拟器需要模拟真实客户端发包的时间间隔,这可以通过让模拟器线程休眠达到目的,模拟测试时,模拟器会以一个固定的时间间隔输出响应时间的延时分布。
综上所述,现有的测试中是根据虚构的数据进行测试,而本方法则采用真实的线上环境的包进行测试,提高了模拟测试的真实性,可以还原当时的场景,从而可以对相应的服务端程序进行特定的优化。
对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。
- 上一篇:石墨接头机器人自动装卡簧、装栓机
- 下一篇:一种评估应用系统健康度的方法及装置