本发明涉及网络技术领域,特别涉及一种网络环境模拟测试工具及测试方法。
背景技术:
网站运维过程中,经常会遇到用户反馈但无法重现的问题,这些问题中有很大一部分是由于用户自身的网络环境波动,或者是网站本身所处的网络环境比较恶劣造成的。对网络环境进行模拟测试可以在开发过程中模拟出各种网络环境,可让开发测试人员看到各种网络条件下服务的表现,便于提前发现问题,防患于未然。当前在开发过程中模拟恶劣网络环境一般通过以下手段实现:
1)通过应用层或者传输层的代理服务器,通过在代理服务器上设置一些模拟网络环境的参数,使得通过这些代理服务器的流量都被转化为被设置的网络环境下的流量(如采用一些网络流量分析软件)。
2)通过利用一些更底层的驱动层面的服务,通过控制网卡的收包发包的行为,来模拟各种网络环境(改写网卡驱动)。
以上两种方法模拟网络环境,或者是要选用其他软件,进行复杂的配置,或者是要修改硬件驱动,两种方法需要开发人员额外编写代码,实现成本高,且不容易掌握。
技术实现要素:
为解决上述技术问题,本发明提供了一种网络环境模拟测试工具及测试方法,以达到可以在产品上线之前解决更多的问题,节省开发运维团队的时间,提高用户满意度的目的。
为达到上述目的,本发明的技术方案如下:
一种网络环境模拟测试工具,包括如下功能模块:
主模块:提供主窗口的展示,支持主窗口基本操作,控制整个网络模拟工具的主线程运行;
拦截模块:利用wfp的windivert库,拦截服务器上所有网络请求;
分发模块:根据窗口中选择的项目,对于拦截的所有网络请求,分配给不同的干扰模块进行处理;
干扰模块:执行具体的干扰操作;
发送模块:发送干扰后的数据包;
所述干扰模块包括延迟子模块、丢包子模块、限流子模块、重复子模块、乱序子模块和篡改子模块,所述延迟子模块是指所有数据包延迟指定时间后再发送,所述丢包子模块是指发送不完整的数据包,所述限流子模块是指分块发送数据包、中间间隔一段时间,所述重复子模块是指发送重复的数据包,所述乱序子模块是指分块发送数据包、且顺序打乱,所述篡改子模块是指发送错误的数据包。
一种网络环境模拟测试方法,采用上述的一种网络环境模拟测试工具,包括如下过程:
(1)拦截模块对客户端请求进行拦截;
(2)分发模块根据窗口中选择的项目,将拦截的客户端请求分配给不同的干扰模块进行处理;
(3)不同的干扰模块对客户端请求进行干扰操作;
(4)将干扰后的数据包发送到服务器端。
通过上述技术方案,本发明提供的网络环境模拟测试工具可以在无须改动硬件设置或服务器配置的情况下,模拟各种网络环境来测试网站或应用程序的健壮性,可以在上线之前解决更多的问题,节省开发运维团队的时间,提高用户满意度。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍。
图1为本发明实施例所公开的一种网络环境模拟测试工具组成示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述。
本发明提供了一种网络环境模拟测试工具及测试方法,该工具利用封装wfp(windows过滤平台)的windivert库,实时的将系统接收和发出的网络数据包拦截下来,自动造成延迟,掉包和篡改等操作后再进行发送;可以让开发人员在不需要额外编写代码的情况下,在系统层次达到重现网络异常造成的程序错误或者是评估应用程序在不良网络状况下的表现。
如图1所示的一种网络环境模拟测试工具,包括如下功能模块:
主模块:提供主窗口的展示,支持主窗口基本操作,控制整个网络模拟工具的主线程运行。
拦截模块:利用wfp的windivert库,拦截服务器上所有网络请求;即所有通过服务器网卡进行的信息交互都可被本工具拦截,根据主窗口选择的方式进行处理。
分发模块:根据窗口中选择的项目,对于拦截的所有网络请求,分配给不同的干扰模块进行处理;运行过程中,本模块开启一个线程读取所有通过服务器网卡的数据包,把本应该由服务器进行处理的数据包全部变为由该工具接管。
干扰模块:执行具体的干扰操作;干扰模块包括延迟子模块、丢包子模块、限流子模块、重复子模块、乱序子模块和篡改子模块,延迟子模块是指所有数据包延迟指定时间后再发送,丢包子模块是指发送不完整的数据包,限流子模块是指分块发送数据包、中间间隔一段时间,重复子模块是指发送重复的数据包,乱序子模块是指分块发送数据包、且顺序打乱,篡改子模块是指发送错误的数据包。
发送模块:发送干扰后的数据包;把拦截到的所有数据包进行干扰操作后,变成新的数据包替代客户端发送给服务器。运行模块中,本模块开启一个线程,把干扰后的数据包伪装成客户端请求再发送给服务器。
一种网络环境模拟测试方法,采用上述的一种网络环境模拟测试工具,包括如下过程:
(1)拦截模块对客户端请求进行拦截;
(2)分发模块根据窗口中选择的项目,将拦截的客户端请求分配给不同的干扰模块进行处理;
(3)不同的干扰模块对客户端请求进行干扰操作;
(4)将干扰后的数据包发送到服务器端。
原始运行过程:
客户端请求--->服务器端服务--->客户端响应。
利用工具后的运行过程:
客户端请求--->工具拦截干扰--->模拟客户端请求--->服务器端服务--->客户端响应。
由此可以看出,采用该网络环境模拟测试工具后,可以在无须改动硬件设置或服务器配置的情况下,模拟各种网络环境来测试网站或应用程序的健壮性,可以在上线之前解决更多的问题,节省开发运维团队的时间,提高用户满意度。
对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。