应用程序的测试方法和装置与流程

文档序号:18684898发布日期:2019-09-13 23:50阅读:228来源:国知局
应用程序的测试方法和装置与流程

本发明涉及测试领域,具体而言,涉及一种应用程序的测试方法和装置。



背景技术:

Android实时在线应用随着移动网络的不稳定,用户会出现高延迟、掉线重连、数据不同步多种异常状态。因此,在研发过程中模拟复杂的网络环境进行测试不可或缺。目前已有的弱网络模拟技术,往往需要手机连接到Linux服务器或Windows PC建立的wifi热点,这些方案一般搭建部署比较麻烦,且要求测试人员位于wifi热点覆盖范围内。

针对上述的问题,目前尚未提出有效的解决方案。



技术实现要素:

本发明实施例提供了一种应用程序的测试方法和装置,以至少解决由于测试应用程序需要搭建网络环境造成的测试过程比较复杂的技术问题。

根据本发明实施例的一个方面,提供了一种应用程序的测试方法,包括:获取在测试终端预先设置的网络参数,其中,所述网络参数用于表示待模拟的网络环境的参数;在所述测试终端注册VPN服务后,通过所述VPN服务在目标应用程序和目标服务器之间传输网络数据包,其中,所述VPN服务按照所述网络参数传输所述网络数据包;记录在所述网络环境下所述目标应用程序的性能数据。

根据本发明实施例的另一方面,还提供了一种应用程序的测试装置,包括:获取单元,用于获取在测试终端预先设置的网络参数,其中,所述网络参数用于表示待模拟的网络环境的参数;传输单元,用于在所述测试终端注册VPN服务后,通过所述VPN服务在目标应用程序和目标服务器之间传输网络数据包,其中,所述VPN服务按照所述网络参数传输所述网络数据包;记录单元,用于记录在所述网络环境下所述目标应用程序的性能数据。

在本发明实施例中,在VPN服务器转发到目标服务器之前,由VPN服务器先按照网络参数进行传输,再通过测试终端的网卡发送到目标服务器。即,在VPN服务将网络数据包发送给目标服务器之前,已经完成了按照网络参数传输网络数据包的动作,因此,无需搭建复杂的模拟网络就可以实现在不同网络参数下发送网络数据包,解决了现有技术由于测试应用程序需要搭建网络环境造成的测试过程比较复杂的技术问题,达到了简化测试过程的效果。

附图说明

此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:

图1是根据本发明实施例的硬件系统的架构图;

图2是根据本发明实施例的应用程序的测试方法的流程图;

图3是根据本发明实施例的选择应用程序界面的示意图;

图4是根据本发明实施例的设置上行参数界面的示意图;

图5是根据本发明实施例的设置下行参数的示意图;

图6是根据本发明实施例的传输网络数据包的流程图;

图7是根据本发明实施例的模拟网络环境的流程图;

图8是根据本发明实施例的分层令牌桶的示意图;

图9是根据本发明实施例的应用程序的测试装置的示意图;

图10是根据本发明实施例的终端的示意图。

具体实施方式

为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分的实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。

需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。

实施例1

根据本发明实施例,提供了一种可以通过本申请装置实施例执行的方法实施例,需要说明的是,在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。

根据本发明实施例,提供了一种应用程序的测试方法。

可选地,在本实施例中,上述应用程序的测试方法可以应用于如图1所示的终端102和服务器104所构成的硬件环境中。如图1所示,终端102通过网络与服务器104进行连接,上述网络包括但不限于:移动通信网络、广域网、城域网或局域网,终端102可以是手机终端,平板电脑等具有安卓系统的终端。

图1中示出的硬件环境系统的主要工作原理是:

以终端102为手机终端为例进行说明。

手机终端中安装有多个应用程序,将多个应用程序中的其中一个选择为目标应用程序进行测试。该测试可以采集目标应用程序在不同网络环境下的性能表现,以便优化目标应用程序,提高目标应用程序在不同的网络环境下的性能。

通过手机终端上的VPN服务模拟不同的网络环境,为VPN服务设置不同的网络参数来模拟不同的网络环境,目标应用程序的网络请求包通过VPN服务模拟的网络环境向服务器104(可以是目标应用程序所对应的服务器)传输,目标应用程序通过VPN服务模拟的网络环境接收服务器104返回的网络响应包。在这个过程中,VPN服务和服务器104之间采用移动通信网络或者wifi进行通信。网络请求包和网络响应包在VPN服务中的传输过程模拟了网络请求包和网络响应包在不同的网络环境下的传输过程,VPN服务与服务器104之间的数据传输为实际网络环境的传输。

图2是根据本发明实施例的应用程序的测试方法的流程图,以下结合图2对本发明实施例所提供的应用程序的测试方法做具体介绍,如图2所示,该应用程序的测试方法主要包括如下步骤:

步骤S202,获取在测试终端预先设置的网络参数,其中,网络参数用于表示模拟的网络环境的参数。

在图3所示的界面上选择一个应用程序作为目标应用程序,对该目标应用程序进行测试。对于该目标应用程序可以设置网络参数。网络参数包括上行参数的设置和下行参数的设置。设置上行参数的界面如图4所示,设置下行参数的界面如图5所示。

如图4所示,上行参数可以设置上行带宽、上行延迟、上行抖动、上行丢包率、上行误码率、上行包重复率和上行包乱序率等。如图5所示,下行参数可以设置下行带宽、下行延迟、下行抖动、下行丢包率、下行误码率、下行包重复率和下行包乱序率等。

在图4和图5所设置的参数表示的网络环境下进行目标应用程序的测试。

步骤S204,在测试终端注册VPN服务后,通过VPN服务获取在目标应用程序和目标服务器之间进行传输的网络数据包。

步骤S206,通过VPN服务按照网络参数传输网络数据包。

此时终端可以是图1中的终端102。测试终端可以使用或者扩展vpnservice基础类库来申请开启VPN服务。在开启VPN服务后,测试终端上的应用程序发送的网络请求包,不会直接通过真实的网卡发送给目标服务器,而是发送给VPN服务,由VPN服务转发到目标服务器。

VPN服务可以按照上述图4和图5设置好的参数对网络数据包进行传输。

例如,按照上行带宽为200KB/s的速度向目标服务器传输目标应用程序的网络数据包,按照下行带宽为300KB/s的速度向目标应用程序传输来自目标服务器的网络数据包。

例如,按照上行延迟300ms向目标服务器传输目标应用程序的网络数据包,按照下行延迟200ms向目标应用程序传输来自目标服务器的网络数据包。

例如,按照上行抖动50ms向目标服务器传输目标应用程序的网络数据包,按照下行抖动50ms向目标应用程序传输来自目标服务器的网络数据包。

例如,按照上行包率5%、上行误码率3%、上行包重复率0%和上行包乱序率2%等向目标服务器传输目标应用程序的网络数据包,下行丢包率3%、下行误码率6%、下行包重复率2%和下行包乱序率7%等向目标应用程序传输来自目标服务器的网络数据包。

由上述例子可知,上行参数和下行参数设置为不同的参数,VPN按照设置的参数进行网络数据包的传输。

步骤S208,在网络环境下对目标应用程序进行测试。

在网络环境下对目标应用程序进行测试,以便于测试人员记录下目标应用程序在按照当前网络参数进行网络数据包的传输的性能数据,更改网络参数,就可以记录下按照不同网络参数进行网络数据包的传输的性能数据。利用这些数据可以对目标应用程序进行优化,从而使得目标应用程序在不同的网络环境下都能具有良好的性能表现,使得目标应用程序适应更多的网络环境,能够被广泛应用且运行稳定。

本实施例中,在VPN服务器转发到目标服务器之前,由VPN服务器先按照网络参数进行传输,再通过测试终端的网卡发送到目标服务器。即,在VPN服务将网络数据包发送给目标服务器之前,已经完成了按照网络参数传输网络数据包的动作,因此,无需搭建复杂的模拟网络就可以实现在不同网络参数下发送网络数据包,解决了现有技术由于测试应用程序需要搭建网络环境造成的测试过程比较复杂的技术问题,达到了简化测试过程的效果。

可选地,VPN服务按照网络参数传输网络数据包的过程就是VPN模拟网络参数所指示的网络环境的过程,即,通过所述VPN服务按照所述网络参数传输网络数据包包括:按照网络参数设置VPN服务,其中,VPN服务模拟网络参数所指示的网络环境;通过所述VPN服务模拟的所述网络环境传输所述网络数据包。

由图4和图5可知,网络参数包括带宽、延迟、抖动、丢包率、误码率、包重复率和包乱序率等,利用VPN服务模拟网络环境,使得模拟的网络环境在传输网络数据包时按照设置好的网络参数进行网络数据包的传输。

以下结合图6对本实施例中注册VPN服务,并且传输网络数据包的过程进行说明。

在本实施例中,以安卓系统的手机作为测试终端为例。

①目标应用程序(处于应用层)向安卓内核(处于传输层、网络层和数据链路层)发送网络请求包。

②安卓内核将网络请求包写入到tun虚拟接口。手机终端在注册VPN服务后会在网络层创建一个tun虚拟接口,待测试终端的网络请求包会通过安卓内核发送到tun虚拟接口,而不会直接发送到网卡。tun虚拟接口用于将目标应用程序的网络请求包发送到VPN服务,或者将VPN服务返回的网络响应包发送到目标应用程序。

③VPN调用系统API来读取tun虚拟接口的网络请求包。

④VPN服务根据网络参数进行包队列调整,也就是,此时VPN服务模拟网络环境进行网络请求包的传输。

⑤VPN服务通过安卓内核、网络和linux内核将调整后的包队列发送给目标服务器。

⑥目标服务器根据网络请求包生成网络响应包,并通过linux内核、网络和安卓内核传会给VPN服务。

⑦VPN服务通过系统API写回tun虚拟接口。

⑧目标应用程序通过调用recv或read内核API,就可以读取tun虚拟接口,从而使得目标应用程序获得网络响应包。

以下参考图7分别对图6中的步骤④在传输网络请求包和网络响应包的过程进行说明。

图7中的步骤S701至S711是从tun虚拟接口向目标服务器传输网络请求包的过程。图7中的步骤S801至S811是从目标服务器向tun虚拟接口传输网络响应包的过程。

第一种:网络数据包包括网络请求包,通过VPN服务传输网络请求包。

可选地,通过所述VPN服务按照所述网络参数传输网络数据包包括:VPN服务按照网络参数所包含的队列规则将网络请求包加入发送缓冲队列,其中,队列规则表示VPN服务传输网络请求包的传输参数;VPN服务通过socket连接将发送缓冲队列中的网络请求包发送给目标服务器。

可选地,传输参数包括传输速度、延迟、丢包、重包和乱序,利用所述VPN服务按照所述网络参数所包含的队列规则将所述网络请求包加入发送缓冲队列包括:VPN服务通过分层令牌桶和网络模拟功能模块对网络请求包的包队列进行调整;将调整后的包队列加入发送缓冲队列,其中,分层令牌桶用于模拟网络参数所指示的传输速度,网络模拟功能模块用于模拟网络参数所指示的延迟、丢包、重包和乱序中的至少之一。

结合图7进行说明如下:

步骤S701,读取网络请求包。

步骤S703,通过分层令牌桶模拟传输网络请求包的速度。分层令牌桶(Hierarchical Token Bucket,简称HTB)可以对传输速度进行复杂而精细的控制。HTB的一个重要特性就是租借模型。当子分类的流量超过了设定整形流量速率的最小速度时,它们就会向父分类借用令牌,直到子分类借到的令牌数量满足能让其达到设定整形流量速率的最大速度为止。与此同时,子分类会暂缓发送数据包,直到有了足够多的令牌。

如图8所示,叶子节点向中间节点借用令牌,中间节点向叶子节点提供令牌。在叶子节点不再需要借用的令牌时,会将借用的令牌还给中间节点。在叶子节点接到的令牌数量满足能让其达到设定整形流量速率的最大速度时,叶子节点会暂缓发送数据包。需要说明的是,只有叶子节点才会对流量进行整形,中间节点不会延迟发送数据包。

步骤S705,通过网络模拟功能模块(netemE)控制网络延迟、丢包、重包和乱序。该网络模拟功能模块正态、帕累托分布(pareto)等模式,丢包和延时在一定正负范围内波动,模拟更真实的网络情况。

步骤S707,在经过步骤S703和步骤S705之后,得到调整后的包队列。将调整后的包队列写入到发送缓冲队列中。

步骤S709,对发送缓冲队列中的网络数据包进行解析。

步骤S711,建立socket,并通过socket尽可能多的从发送缓冲队列中取出数据包,并把取出来的数据发送到测试终端的网卡中,以便通过网卡将网络请求包发送到目标服务器。

第二种:网络数据包包括网络响应包,通过VPN服务传输网络响应包。

网络响应包可以是目标服务器根据网络数据包生成的。可选地,通过所述VPN服务按照所述网络参数传输网络数据包包括:VPN服务通过socket连接接收目标服务器发送的网络响应包;VPN服务按照网络参数所包含的队列规则将网络响应包加入接收缓冲队列,其中,队列规则表示VPN服务传输网络响应包的传输参数。

可选地,传输参数包括传输速度、延迟、丢包、重包和乱序,利用VPN服务按照网络参数所包含的队列规则将网络响应包加入接收缓冲队列包括:VPN服务通过分层令牌桶和网络模拟功能模块将网络响应包的包队列进行调整;将调整后的包队列加入接收缓冲队列,其中,分层令牌桶用于模拟网络参数所指示的传输速度,网络模拟功能模块用于模拟网络参数所指示的延迟、丢包、重包和乱序中的至少之一。

结合图7进行说明如下:

步骤S801,socket接收目标服务器发送的网络响应包。

步骤S803,解析通过socket接收到的网络响应包。

步骤S805,通过分层令牌桶模拟传输网络响应包的速度。

步骤S807,通过网络模拟功能模块控制网络延迟、丢包、重包和乱序。

步骤S809,在经过步骤S805和步骤S807之后,得到调整后的包队列。将调整后的包队列写入到接收缓冲队列中。

步骤S811,尽可能多的从接收缓冲队列中取出网络响应包,并将取出的网络响应包写入到tun虚拟接口中。

在接收网络响应包和发送网络请求包的过程中,先进行传输速度的调整,再进行丢包率等参数的调整,使得调整后的包队列满足设定好的网络参数,从而实现了模拟网络环境进行数据传输的过程。并且,在这个过程中,不需要另外搭建用于模拟网络环境的网络,利用测试终端的系统本身可以注册的VPN服务,模拟弱网络环境,达到了流量控制和弱网络控制的目的。

通过本实施例,移动应用在研发测试过程中需要模拟复杂网络环境的功能,仅需单台安卓手机,即可实现网络包丢包、延迟、抖动、序列重排等设置,测试应用程序在不同国家地区和应用环境下的性能表现,解决现有的测试方法需要依赖额外设备搭建wifi热点以及局限于wifi热点覆盖范围的烦扰,大大降低研发测试接入成本。并且,由于利用手机终端的VPN服务和手机本身的上网功能,可以提供随时随地随身测试的高效体验。

需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明并不受所描述的动作顺序的限制,因为依据本发明,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本发明所必须的。

通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到根据上述实施例的方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。

实施例2

根据本发明实施例,还提供了一种用于实施上述应用程序的测试方法的应用程序的测试装置,该应用程序的测试装置主要用于执行本发明实施例上述内容所提供的应用程序的测试方法,以下对本发明实施例所提供的应用程序的测试装置做具体介绍:

图9是根据本发明实施例的应用程序的测试装置的示意图,如图9所示,该应用程序的测试装置主要包括:第一获取单元10、第二获取单元10、传输单元30和测试单元40。

获取单元10用于获取在测试终端预先设置的网络参数,其中,网络参数用于表示待模拟的网络环境的参数。

在图3所示的界面上选择一个应用程序作为目标应用程序,对该目标应用程序进行测试。对于该目标应用程序可以设置网络参数。网络参数包括上行参数的设置和下行参数的设置。设置上行参数的界面如图4所示,设置下行参数的界面如图5所示。

如图4所示,上行参数可以设置上行带宽、上行延迟、上行抖动、上行丢包率、上行误码率、上行包重复率和上行包乱序率等。如图5所示,下行参数可以设置下行带宽、下行延迟、下行抖动、下行丢包率、下行误码率、下行包重复率和下行包乱序率等。

获取单元10获取图4和图5所显示的网络参数。

第二获取单元20用于在所述测试终端注册VPN服务后,通过所述VPN服务获取在目标应用程序和目标服务器之间进行传输的网络数据包。

传输单元30通过所述VPN服务按照所述网络参数传输所述网络数据包。

此时终端可以是图1中的终端102。测试终端可以使用或者扩展vpnservice基础类库来申请开启VPN服务。在开启VPN服务后,测试终端上的应用程序发送的网络请求包,不会通过真实的网卡发送给目标服务器,而是发送给VPN服务,由VPN服务转发到目标服务器。

VPN服务可以按照上述图4和图5设置好的参数对网络数据包进行传输。

例如,按照上行带宽为200KB/s的速度向目标服务器传输目标应用程序的网络数据包,按照下行带宽为300KB/s的速度向目标应用程序传输来自目标服务器的网络数据包。

例如,按照上行延迟300ms向目标服务器传输目标应用程序的网络数据包,按照下行延迟200ms向目标应用程序传输来自目标服务器的网络数据包。

例如,按照上行抖动50ms向目标服务器传输目标应用程序的网络数据包,按照下行抖动50ms向目标应用程序传输来自目标服务器的网络数据包。

例如,按照上行包率5%、上行误码率3%、上行包重复率0%和上行包乱序率2%等向目标服务器传输目标应用程序的网络数据包,下行丢包率3%、下行误码率6%、下行包重复率2%和下行包乱序率7%等向目标应用程序传输来自目标服务器的网络数据包。

由上述例子可知,上行参数和下行参数设置为不同的参数,VPN按照设置的参数进行网络数据包的传输。

测试单元30用于在网络环境下对目标应用程序进行测试。

测试单元30在网络环境下对目标应用程序进行测试,以便于测试人员记录下目标应用程序在按照当前网络参数进行网络数据包的传输的性能数据,更改网络参数,就可以记录下按照不同网络参数进行网络数据包的传输的性能数据。利用这些数据可以对目标应用程序进行优化,从而使得目标应用程序在不同的网络环境下都能具有良好的性能表现,使得目标应用程序适应更多的网络环境,能够被广泛应用且运行稳定。

本实施例中,在VPN服务器转发到目标服务器之前,由VPN服务器先按照网络参数进行传输,再通过测试终端的网卡发送到目标服务器。即,在VPN服务将网络数据包发送给目标服务器之前,已经完成了按照网络参数传输网络数据包的动作,因此,无需搭建复杂的模拟网络就可以实现在不同网络参数下发送网络数据包,解决了现有技术由于测试应用程序需要搭建网络环境造成的测试过程比较复杂的技术问题,达到了简化测试过程的效果。

可选地,VPN服务按照网络参数传输网络数据包的过程就是VPN模拟网络参数所指示的网络环境的过程,传输单元包括:设置模块,用于按照网络参数设置VPN服务,其中,VPN服务模拟网络参数指示的网络环境;传输模块,用于过所述VPN服务模拟的所述网络环境传输所述网络数据包。

由图4和图5可知,网络参数包括带宽、延迟、抖动、丢包率、误码率、包重复率和包乱序率等,利用VPN服务模拟网络环境,使得模拟的网络环境在传输网络数据包时按照设置好的网络参数进行网络数据包的传输。

以下结合图6对本实施例中注册VPN服务,并且传输网络数据包的过程进行说明。

在本实施例中,以安卓系统的手机作为测试终端为例。

①目标应用程序(处于应用层)向安卓内核(处于传输层、网络层和数据链路层)发送网络请求包。

②安卓内核将网络请求包写入到tun虚拟接口。手机终端在注册VPN服务后会在网络层创建一个tun虚拟接口,待测试终端的网络请求包会通过安卓内核发送到tun虚拟接口,而不会直接发送到网卡。即可选地,装置还包括:创建单元,用于在测试终端注册VPN服务之后,创建tun虚拟接口,其中,tun虚拟接口用于将目标应用程序的网络请求包发送到VPN服务,或者将VPN服务返回的网络响应包发送到目标应用程序。

③VPN调用系统API来读取tun虚拟接口的网络请求包。

④VPN服务根据网络参数进行包队列调整,也就是,此时VPN服务模拟网络环境进行网络请求包的传输。

⑤VPN服务通过安卓内核、网络和linux内核将调整后的包队列发送给目标服务器。

⑥目标服务器根据网络请求包生成网络响应包,并通过linux内核、网络和安卓内核传会给VPN服务。

⑦VPN服务通过系统API写回tun虚拟接口。

⑧目标应用程序通过调用recv或read内核API,就可以读取tun虚拟接口,从而使得目标应用程序获得网络响应包。

以下参考图7分别对图6中的步骤④在传输网络请求包和网络响应包的过程进行说明。

图7中的步骤S701至S711是从tun虚拟接口向目标服务器传输网络请求包的过程。图7中的步骤S801至S811是从目标服务器向tun虚拟接口传输网络响应包的过程。

可选地,网络数据包包括网络请求包,传输单元包括:第一加入模块,用于通过VPN服务按照网络参数所包含的队列规则将网络请求包加入发送缓冲队列,其中,队列规则表示VPN服务传输网络请求包的传输参数;发送模块,用于通过VPN服务通过socket连接将发送缓冲队列中的网络请求包发送给目标服务器。

可选地,传输参数包括传输速度、延迟、丢包、重包和乱序,第一加入模块包括:第一调整子模块,用于通过VPN服务利用分层令牌桶和网络模拟功能模块对网络请求包的包队列进行调整;第一加入子模块,用于将调整后的包队列加入发送缓冲队列,其中,分层令牌桶用于模拟网络参数所指示的传输速度,网络模拟功能模块用于模拟网络参数所指示的延迟、丢包、重包和乱序中的至少之一。

结合图7进行说明如下:

步骤S701,读取网络请求包。

步骤S703,通过分层令牌桶模拟传输网络请求包的速度。分层令牌桶(Hierarchical Token Bucket,简称HTB)可以对传输速度进行复杂而精细的控制。HTB的一个重要特性就是租借模型。当子分类的流量超过了设定整形流量速率的最小速度时,它们就会向父分类借用令牌,直到子分类借到的令牌数量满足能让其达到设定整形流量速率的最大速度为止。与此同时,子分类会暂缓发送数据包,直到有了足够多的令牌。

如图8所示,叶子节点向中间节点借用令牌,中间节点向叶子节点提供令牌。在叶子节点不再需要借用的令牌时,会将借用的令牌还给中间节点。在叶子节点接到的令牌数量满足能让其达到设定整形流量速率的最大速度时,叶子节点会暂缓发送数据包。需要说明的是,只有叶子节点才会对流量进行整形,中间节点不会延迟发送数据包。

步骤S705,通过网络模拟功能模块(netemE)控制网络延迟、丢包、重包和乱序。该网络模拟功能模块正态、帕累托分布(pareto)等模式,丢包和延时在一定正负范围内波动,模拟更真实的网络情况。

步骤S707,在经过步骤S703和步骤S705之后,得到调整后的包队列。将调整后的包队列写入到发送缓冲队列中。

步骤S709,对发送缓冲队列中的网络数据包进行解析。

步骤S711,建立socket,并通过socket尽可能多的从发送缓冲队列中取出数据包,并把取出来的数据发送到测试终端的网卡中,以便通过网卡将网络请求包发送到目标服务器。

可选地,网络数据包包括网络响应包,传输单元包括:接收模块,用于利用VPN服务通过socket连接接收目标服务器发送的网络响应包;第二加入模块,用于利用VPN服务按照网络参数所包含的队列规则将网络响应包加入接收缓冲队列,其中,队列规则表示VPN服务传输网络响应包的传输参数。

可选地,传输参数包括传输速度、延迟、丢包、重包和乱序,第二加入模块包括:第二调整子模块,用于利用VPN服务通过分层令牌桶和网络模拟功能模块对网络响应包进行包队列调整;第二加入子模块,用于将调整后的包队列加入接收缓冲队列,其中,分层令牌桶用于模拟网络参数所指示的传输速度,网络模拟功能模块用于模拟网络参数所指示的延迟、丢包、重包和乱序中的至少之一。

结合图7进行说明如下:

步骤S801,socket接收目标服务器发送的网络响应包。

步骤S803,解析通过socket接收到的网络响应包。

步骤S805,通过分层令牌桶模拟传输网络响应包的速度。

步骤S807,通过网络模拟功能模块控制网络延迟、丢包、重包和乱序。

步骤S809,在经过步骤S805和步骤S807之后,得到调整后的包队列。将调整后的包队列写入到接收缓冲队列中。

步骤S811,尽可能多的从接收缓冲队列中取出网络响应包,并将取出的网络响应包写入到tun虚拟接口中。

在接收网络响应包和发送网络请求包的过程中,先进行传输速度的调整,再进行丢包率等参数的调整,使得调整后的包队列满足设定好的网络参数,从而实现了模拟网络环境进行数据传输的过程。并且,在这个过程中,不需要另外搭建用于模拟网络环境的网络,利用测试终端的系统本身可以注册的VPN服务,模拟弱网络环境,达到了流量控制和弱网络控制的目的。

通过本实施例,移动应用在研发测试过程中需要模拟复杂网络环境的功能,仅需单台安卓手机,即可实现网络包丢包、延迟、抖动、序列重排等设置,测试应用程序在不同国家地区和应用环境下的性能表现,解决现有的测试方法需要依赖额外设备搭建wifi热点以及局限于wifi热点覆盖范围的烦扰,大大降低研发测试接入成本。并且,由于利用手机终端的VPN服务和手机本身的上网功能,可以提供随时随地随身测试的高效体验。

在接收网络响应包和发送网络请求包的过程中,先进行传输速度的调整,再进行丢包率等参数的调整,使得调整后的包队列满足设定好的网络参数,从而实现了模拟网络环境进行数据传输的过程。并且,在这个过程中,不需要另外搭建用于模拟网络环境的网络,利用测试终端的系统本身可以注册的VPN服务,模拟弱网络环境,达到了流量控制和弱网络控制的目的。

通过本实施例,移动应用在研发测试过程中需要模拟复杂网络环境的功能,仅需单台安卓手机,即可实现网络包丢包、延迟、抖动、序列重排等设置,测试应用程序在不同国家地区和应用环境下的性能表现,解决现有的测试方法需要依赖额外设备搭建wifi热点以及局限于wifi热点覆盖范围的烦扰,大大降低研发测试接入成本。并且,由于利用手机终端的VPN服务和手机本身的上网功能,可以提供随时随地随身测试的高效体验。

实施例3

根据本发明实施例,还提供了一种用于实施上述应用程序的测试方法的终端,如图10所示,该终端主要包括处理器1001、摄像头1002、显示器1003、数据接口1004、存储器1005和网络接口1006,其中:

摄像头1002主要用于采集图像信息。

数据接口1004则主要通过数据传输的方式将第三方工具获取到的数据传输给处理器1001。

存储器1005主要用于存储预先设置的网络参数和目标应用程序的运行数据、安装数据等。

网络接口1006主要用于与服务器进行网络通信,将网络请求包发送给目标服务器,并接收来自目标服务器的网络响应包。

显示器1003主要用于显示测试终端上安装的应用程序,已经设置的网络参数等。

处理器1001主要用于执行如下操作:

获取在测试终端预先设置的网络参数,其中,所述网络参数用于表示待模拟的网络环境的参数;在所述测试终端注册VPN服务后,通过所述VPN服务获取在目标应用程序和目标服务器之间进行传输的网络数据包;通过所述VPN服务按照所述网络参数传输所述网络数据包;在所述网络环境下对所述目标应用程序进行测试。

处理器1001还用于按照所述网络参数设置所述VPN服务,其中,所述VPN服务模拟所述网络参数指示的所述网络环境;通过所述VPN服务模拟的所述网络环境传输所述网络数据包。

处理器1001还用于利用所述VPN服务按照所述网络参数所包含的队列规则将所述网络请求包加入发送缓冲队列,其中,所述队列规则表示所述VPN服务传输所述网络请求包的传输参数;利用所述VPN服务通过socket连接将所述发送缓冲队列中的所述网络请求包发送给所述目标服务器。

处理器1001还用于利用所述VPN服务通过分层令牌桶和网络模拟功能模块对所述网络请求包的包队列进行调整;将调整后的包队列加入所述发送缓冲队列,其中,所述分层令牌桶用于模拟所述网络参数所指示的传输速度,所述网络模拟功能模块用于模拟所述网络参数所指示的所述延迟、所述丢包、所述重包和所述乱序中的至少之一。

处理器1001还用于利用所述VPN服务通过socket连接接收所述目标服务器发送的所述网络响应包;利用所述VPN服务按照所述网络参数所包含的队列规则将所述网络响应包加入接收缓冲队列,其中,所述队列规则表示所述VPN服务传输所述网络响应包的传输参数。

处理器1001还用于利用所述VPN服务通过分层令牌桶和网络模拟功能模块对所述网络响应包进行包队列调整;将调整后的包队列加入所述接收缓冲队列,其中,所述分层令牌桶用于模拟所述网络参数所指示的传输速度,所述网络模拟功能模块用于模拟所述网络参数所指示的所述延迟、所述丢包、所述重包和所述乱序中的至少之一。

处理器1001还用于创建tun虚拟接口,其中,所述tun虚拟接口用于将所述目标应用程序的网络请求包发送到所述VPN服务,或者将所述VPN服务返回的网络响应包发送到所述目标应用程序。

可选地,本实施例中的具体示例可以参考上述实施例1和实施例2中所描述的示例,本实施例在此不再赘述。

实施例4

本发明的实施例还提供了一种存储介质。可选地,在本实施例中,上述存储介质可以用于存储本发明实施例的应用程序的测试方法的程序代码。

可选地,在本实施例中,上述存储介质可以位于移动通信网络、广域网、城域网或局域网的网络中的多个网络设备中的至少一个网络设备。

可选地,在本实施例中,存储介质被设置为存储用于执行以下步骤的程序代码:

S1,获取在测试终端预先设置的网络参数,其中,所述网络参数用于表示待模拟的网络环境的参数;

S2,在所述测试终端注册VPN服务后,通过所述VPN服务获取在目标应用程序和目标服务器之间进行传输的网络数据包;

S3,通过所述VPN服务按照所述网络参数传输所述网络数据包;

S4,在所述网络环境下对所述目标应用程序进行测试。

可选地,在本实施例中,上述存储介质可以包括但不限于:U盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。

可选地,在本实施例中,处理器根据存储介质中已存储的程序代码执行:按照所述网络参数设置所述VPN服务,其中,所述VPN服务模拟所述网络参数指示的所述网络环境;通过所述VPN服务模拟的所述网络环境传输所述网络数据包。

可选地,在本实施例中,处理器根据存储介质中已存储的程序代码执行:利用所述VPN服务按照所述网络参数所包含的队列规则将所述网络请求包加入发送缓冲队列,其中,所述队列规则表示所述VPN服务传输所述网络请求包的传输参数;利用所述VPN服务通过socket连接将所述发送缓冲队列中的所述网络请求包发送给所述目标服务器。

可选地,在本实施例中,处理器根据存储介质中已存储的程序代码执行:利用所述VPN服务通过分层令牌桶和网络模拟功能模块对所述网络请求包的包队列进行调整;将调整后的包队列加入所述发送缓冲队列,其中,所述分层令牌桶用于模拟所述网络参数所指示的传输速度,所述网络模拟功能模块用于模拟所述网络参数所指示的所述延迟、所述丢包、所述重包和所述乱序中的至少之一。

可选地,在本实施例中,处理器根据存储介质中已存储的程序代码执行:利用所述VPN服务通过socket连接接收所述目标服务器发送的所述网络响应包;利用所述VPN服务按照所述网络参数所包含的队列规则将所述网络响应包加入接收缓冲队列,其中,所述队列规则表示所述VPN服务传输所述网络响应包的传输参数。

可选地,在本实施例中,处理器根据存储介质中已存储的程序代码执行:利用所述VPN服务通过分层令牌桶和网络模拟功能模块对所述网络响应包进行包队列调整;将调整后的包队列加入所述接收缓冲队列,其中,所述分层令牌桶用于模拟所述网络参数所指示的传输速度,所述网络模拟功能模块用于模拟所述网络参数所指示的所述延迟、所述丢包、所述重包和所述乱序中的至少之一。

可选地,在本实施例中,处理器根据存储介质中已存储的程序代码执行:创建tun虚拟接口,其中,所述tun虚拟接口用于将所述目标应用程序的网络请求包发送到所述VPN服务,或者将所述VPN服务返回的网络响应包发送到所述目标应用程序

可选地,本实施例中的具体示例可以参考上述实施例1和实施例2中所描述的示例,本实施例在此不再赘述。

上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。

上述实施例中的集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在上述计算机可读取的存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在存储介质中,包括若干指令用以使得一台或多台计算机设备(可为个人计算机、服务器或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。

在本发明的上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。

在本申请所提供的几个实施例中,应该理解到,所揭露的客户端,可通过其它的方式实现。其中,以上所描述的装置实施例仅仅是示意性的,例如所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,单元或模块的间接耦合或通信连接,可以是电性或其它的形式。

所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。

另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。

以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1