一种互联网应用测试方法及装置与流程

文档序号:17298675发布日期:2019-04-03 04:41阅读:138来源:国知局
一种互联网应用测试方法及装置与流程

本发明涉及计算机网络技术领域,特别是涉及一种互联网应用测试方法及装置。



背景技术:

互联网应用是以小步快走、迅速迭代的方式进行新需求、新功能、新修复的开发与发布的。因此,为了保证互联网应用能够可靠、稳定的运行,在开发过程中,测试部分尤为重要。

现有技术中,通常采用模拟数据、模拟操作所设计的测试用例进行测试,但应用能否稳定运行受真实用户、真实数据、运行时间、外部用户装置的输入、网络环境、并发度等因素的影响。通过模拟数据、模拟操作、覆盖范围有限,无法反映真实的情况,测试结果不准确;还有的使用流量镜像录制回放的方法,将真实的流量数据录制下来回放给被测试应用,这样一来虽然获得的是真实数据,但是由于互联网更新迭代很快,录制的数据有可能已经过时,使测试结果不准确,而且一次业务操作有可能会产生数十个数据包,直接对数据包进行录制会占用大量的系统资源,对实际进行中的业务操作产生影响,造成极高的性能损耗。



技术实现要素:

本发明实施例提供一种互联网应用测试方法及装置,以解决应用测试时测试结果不准确,占用系统资源高的问题。

为了解决上述技术问题,本发明提供了一种互联网应用测试装置,所述装置包括:tcp解析模块、流量转发模块和流量镜像模块;

所述tcp解析模块,包括:

业务请求获取子模块,用于对接收到的tcp数据包进行解析,获取目标业务请求;

转发子模块,用于将所述目标业务请求发送给所述流量转发模块;

接口暴露子模块,用于触发镜像挂载接口,将所述目标业务请求通过所述镜像挂载接口暴露;

所述流量镜像模块,包括:

拷贝子模块,用于通过所述镜像挂载接口对所述目标业务请求进行镜像拷贝,获得镜像业务请求;

测试传输子模块,用于将所述镜像业务请求传输至待测试应用,并接收所述待测试应用的响应数据;

所述流量转发模块,用于将所述目标业务请求传输至投产应用,并接收所述投产应用的响应数据。

另一方面,本发明实施例还提供了一种互联网应用测试方法,其特征在于,所述方法包括:

tcp解析模块对接收到的tcp数据包进行解析,获取目标业务请求;

所述tcp解析模块将所述目标业务请求发送给流量转发模块,并触发镜像挂载接口将所述目标业务请求通过所述镜像挂载接口暴露;

所述流量镜像模块通过所述镜像挂载接口对所述目标业务请求进行镜像拷贝,获得镜像业务请求,并将所述镜像业务请求传输至待测试应用,并接收所述待测试应用的响应数据;

所述流量转发模块将所述目标业务请求传输至投产应用,并接收所述投产应用的响应数据。

本发明实施例中,通过对业务请求数据传输线路上的数据包进行解析,获得完整业务请求的数据,直接对业务请求进行旁路镜像,封装后再发送给待测试应用,同时将完整业务请求重新封装发送给投产应用,这样镜像复制的数据是已经过滤重复、损坏等无效数据包后的请求数据,大大降低了系统资源占用;另一方面,投产应用与待测试应用在相近的时间里,相同的网络环境下接收到了相同的业务请求数据,达到了对一次开发真实、实时的测试,获得的测试结果更准确,更具有参考性。

附图说明

图1是本发明装置实施例一种互联网应用测试装置的结构框图;

图2是本发明装置实施例另一种互联网应用测试装置的结构框图;

图3是本发明方法实施例一种互联网应用测试方法。

具体实施方式

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

【装置实施例一】

参照图1,示出了本发明实施例中的一种互联网应用测试装置100,其特征在于,所述装置包括:tcp解析模块101、流量转发模块102和流量镜像模块103:

本发明实施例可以用于可以对用户业务请求进行响应的应用系统进行开发或修复后的测试工作,在原数据传输的线路上,tcp解析模块对传输的tcp数据包进行解析,获得完整的应用层协议的封包数据,并将封装数据暴露给旁路的流量镜像模块,流量镜像模块对封包数据进行复制,发送给待测试应用,以供待测试应用进行响应。同时tcp解析模块将封包数据发送给流量转发模块,流量转发模块再将封包数据发送给投产应用,以供投产应用进行响应。这样既不影响投产应用实际的业务响应,又能够对待测试应用进行实时,真实的测试,得到准确的测试结果,还可以与投产应用的响应数据进行对比,以获得最好的评估。

本发明实施例中,投产应用是指实际使用中的应用系统版本,而待测试应用是指研发人员对投产应用进行开发、改良或修复等后新版本的应用系统,本发明实施例所述的测试,不仅仅包括对待测试应用是否出现运行错误、系统崩溃等问题的测试,也包括对系统的改良或修复是否达到预期效果如响应更快、操作更流畅等的测试。

所述tcp解析模块101包括:

业务请求获取子模块1011,用于对接收到的tcp数据包进行解析,获取目标业务请求。

本发明实施例中,所述tcp数据包是指根据tcp协议(transmissioncontrolprotocol,传输控制协议)对待传输的数据进行封装后获得的。tcp协议是一种面向连接的、可靠的、基于字节流的传输层通信协议。待传输的数据为使用应用层协议封装的请求数据,应用层协议包括http(hypertexttransferprotocol,超文本传输协议)、ftp(filetransferprotocol,文件传输协议)或其他的私有协议等。应用层协议以http协议为例,在一次实际操作中,发送端的应用层以http协议将请求数据封装为http请求,包括http请求行(指定请求方法、url(uniformresourcelocator,统一资源定位符)、协议版本号等信息)、hppt请求首部(存放协议相关数据,如http请求数据的大小)、http请求数据(存放具体的请求数据),封装结束后,将http请求传递给传输层。传输层根据tcp协议,对http请求进行封装,将http请求分为适当长度的报文段,在每一个报文段添加发送源端口、接收目的端口、数据序列号、确认序列号等信息,获得tcp数据包,通过网络将tcp数据包发送至接收端的传输层,接收端的传输层将tcp数据包根据tcp协议进行解析,获得其中封装的http请求,再将http请求传递给接收端的应用层,接收端根据http请求中的请求数据进行响应。

本发明实施例中,在tcp数据包到达接收端之前,tcp解析模块对tcp数据进行解析,获得其中应用层协议的封包数据,如http请求。例如,厂商对某应用系统进行了新功能的开发,此时,在实际投产应用中,用户a从用户端发起将某商品加入购物车的请求,用户端将加入购物车请求数据如金额、商家、商品等等进行http封装获得加入购物车请求传递给传输层,根据最大传输单元限制以及数据量的大小,该加入购物车请求被封装为三个数据包即tcp数据包1、tcp数据包2和tcp数据包3,为了进行测试,在三个tcp数据包到达该应用系统的商户端前,本发明实施例中的tcp解析模块对接收到的tcp数据包进行解析,获得其中的加入购物车请求。

转发子模块1012,用于将所述目标业务请求发送给所述流量转发模块。

本发明实施例中,流量转发模块会与投产应用建立数据传输通道,当tcp解析模块从tcp数据包中获得目标业务请求后,会将目标业务请求发送给流量转发模块,从而保证实际投产应用中业务顺利进行,上述传输过程在装置内部进行,不涉及网络数据传输,因此tcp解析模块可以将应用层协议封装的数据直接发送给流量转发模块,以待进一步的处理。例如,tcp解析模块将解析出的加入购物车请求发送给流量转发模块。

接口暴露子模块1013,用于触发镜像挂载接口,将所述目标业务请求通过所述镜像挂载接口暴露。

本发明实施例中,tcp解析模块在获得完整的目标业务请求后,会触发镜像挂载接口,将目标业务请求暴露,这样无需端口对数据进行复制转发,很大程度上降低了对应用系统资源的占用,减少了测试过程中对原业务操作的的影响。例如,tcp解析模块在解析出加入购物车请求后,触发镜像挂载接口,将用户a的加入购物车请求暴露。

所述流量镜像模块102,包括:

拷贝子模块1021,用于通过所述镜像挂载接口对所述目标业务请求进行镜像拷贝,获得镜像业务请求;

本发明实施例中,流量镜像模块易旁路的形式挂载到tcp解析模块之后,流量转发模块之前的链路上,当tcp解析模块触发镜像挂载接口并暴露目标业务请求后,流量镜像模块在流量转发模块接收到目标业务请求的同时对此目标业务请求进行镜像拷贝工作。由于对目标业务请求进行旁路镜像拷贝,因此该镜像过程对实际业务没有侵入性,对于实际业务来说透明且无感知,对原生产业务的影响低,且流量镜像模块与流量转发模块几乎同时接收到目标业务请求,对于后续的处理工作来说,对实际情况的重现性更好。例如,流量镜像模块对tcp解析模块暴露出的加入购物车请求进行镜像复制,获得镜像加入购物车请求。

测试传输子模块1022,用于将所述镜像业务请求传输至待测试应用,并接收所述待测试应用的响应数据。

本发明实施例中,流量镜像模块还负责与待测试应用建立数据传输通道,将镜像业务请求发送给待测试应用,当待测试应用根据接收到的镜像业务请求响应产生响应数据后,流量镜像模块还负责接收该响应数据即反馈结果。待测试应用几乎与投产应用同时接收到同样的业务请求,因此,响应数据的实时性、真实性更高,测试结果对实际开发过程的指导更加明确、可靠。例如,流量镜像模块将镜像加入购物车请求发送至待测试应用,并接收待测试应用的镜像加入购物车请求响应数据。

所述流量转发模块1023,用于将所述目标业务请求传输至投产应用,并接收所述投产应用的响应数据。

本发明实施例中,流量转发模块在接收到tcp解析模块发送的目标业务请求后,负责将目标业务请求发送至投产应用,并在投产应用根据接收到的目标业务请求产生响应数据后,接收原路返回的响应数据。在这种情况下,既不影响投产应用的实际业务操作,也可以通过对比同一请求下,投产应用与待测试应用的响应数据,获得更加准确的测试结果。例如,流量转发模块将加入购物车请求发送至投产应用,并接收投产应用的加入购物车请求响应数据。

本发明实施例中,通过对业务请求数据传输线路上的数据包进行解析,获得完整业务请求的数据,直接对业务请求进行旁路镜像,封装后再发送给待测试应用,同时将完整业务请求重新封装发送给投产应用,这样镜像复制的数据是已经过滤重复、损坏等无效数据包后的请求数据;另一方面,投产应用与待测试应用在相近的时间里,相同的网络环境下接收到了相同的业务请求数据,达到了对一次开发真实、实时的测试,获得的测试结果更准确,更具有参考性。

【装置实施例二】

参照图2,示出了本发明装置实施例另一种互联网应用测试装置200的结构框图,所述装置包括:tcp解析模块201、流量转发模块202和流量镜像模块203:

所述tcp解析模块201,包括:

业务请求获取子模块2011,用于对接收到的tcp数据包进行解析,获取目标业务请求;

转发子模块2012,用于将所述目标业务请求发送给所述流量转发模块;

接口暴露子模块2013,用于触发镜像挂载接口,将所述目标业务请求通过所述镜像挂载接口暴露;

所述流量镜像模块202,包括:

拷贝子模块2021,用于通过所述镜像挂载接口对所述目标业务请求进行镜像拷贝,获得镜像业务请求;

测试传输子模块2022,用于将所述镜像业务请求传输至待测试应用,并接收所述待测试应用的响应数据;

所述流量转发模块203,用于将所述目标业务请求传输至投产应用,并接收所述投产应用的响应数据。

上述模块参照装置实施例一的模块基本相似,相关之处参见装置实施例一的部分说明即可,此处不再赘述。

可选地,所述业务请求获取子模块2011,包括:

tcp数据包分拣子单元20111,用于对接收到的tcp数据包按预设规则进行分拣,获得至少一个目标tcp数据包;所述预设规则包括:丢弃无效的tcp数据包,并保留用于完成业务请求的至少一个目标tcp数据包。

本发明实施例中,对于tcp数据包来说,在传输过程中有可能因为网络波动等原因造成数据包丢失或损坏的情况,这时候发送端会重新发送该数据包以保证数据完整,但是有时有可能因为时延,发送端未及时接收到确认信息误以为数据包丢失,重新发送了数据包,导致线路上的数据包重复等,而且在同一链路上传输的tcp数据包也并不都是业务相关的数据包。因此,本发明实施例中,首先对接收到的tcp数据包进行分拣,通过发送源端口、接收目的端口、数据序列号、确认序列号等信息将重复的,损坏的数据包丢弃,不属于业务相关的数据包不作处理,仅留下完整的,有效的业务tcp数据包,这样对数据包进行过滤、挑选大大减少后续解析,镜像的工作量,同时,有可能因其他原因造成数据包顺序错乱的情况,也可通过数据包序列号,进行重排,进一步修正例如,tcp解析模块接收到tcp数据包1、tcp数据包1、tcp数据包2、tcp数据包3,tcp解析模块对上述数据包的进行校验,发现tcp数据包1重复,且第一次接收到的tcp数据包1数据有损坏,因此将第一次接收到的tcp数据包1丢弃,获得tcp数据包1、tcp数据包2和tcp数据包3。

封装子单元201112,用于根据所述至少一个tcp数据包,获得目标业务请求。

本发明实施例中,tcp解析模块对获得的tcp数据包根据tcp协议进行解析,以获得完整的应用层协议封包数据,这样当旁路流量镜像模块进行镜像复制时,复制的对象就只是待测试应用需要进行响应的请求数据,而非传输链路上所有的tcp数据包了。例如,tcp解析模块从tcp数据包1、tcp数据包2和tcp数据包3中获得加入购物车请求。

可选地,所述测试传输子模块2022包括:

镜像业务请求封装子单元20221,用于对所述镜像业务请求进行tcp协议封装,获得至少一个镜像tcp数据包。

业务传输子单元20222,用于将所述至少一个镜像tcp数据包发送至待测试应用。

测试数据接收子单元20223,用于接收所述待测试应用的响应数据。

本发明实施例中,为了对真实业务环境尽可能的还原,对于镜像业务请求,再次进行tcp协议封装,获得tcp数据包,将tcp数据包发送给待测试应用,让待测试应用对tcp数据包进行解析,并对其中的请求数据进行响应。同时,接收待测试应用的响应数据。本发明实施例中,待测试应用与投产应用几乎同时,在同样的网络环境下接收到了同样的数据包,因此获得的测试结果更加实时、可靠。例如,流量镜像模块将镜像加入购物车请求重新按照tcp协议进行封装,获得tcp数据包1、tcp数据包2和tcp数据包3,并将三个tcp数据包按次序发送至待测试应用商户端,待测试应用商户端对tcp数据包进行解析,最终获得其中的请求数据,根据获得的请求数据,待测试应用对请求数据进行响应,产生加入购物车请求响应数据,待测试应用商户端对响应数据进行层层封装,传输回流量镜像模块。

可选地,所述流量转发模块203包括:

目标业务请求封装子模块2031,用于对所述目标业务请求进行tcp协议封装,获得至少一个目标tcp数据包。

业务传输子模块2032,用于将所述至少一个目标tcp数据包发送至投产应用。

本发明实施例中,流量转发模块需要将接收到的目标业务请求重新进行tcp协议的封装,将获得的tcp数据包通过数据传输通道发送至投产应用,以供投产应用解析,响应。

响应数据接收子模块2033,用于接收所述投产应用的响应数据。

本发明实施例中,投产应用在接收到tcp数据包后,解析出其中的请求数据,并对请求数据进行响应,将产生的响应数据发原路返回发送给流量转发模块,流量转发模块接收到响应数据后,在沿原路发送给tcp解析模块,最终返回到请求发送端,完成一个完整的业务操作。这样在待测试应用进行测试的同时,投产应用的业务操作几乎不受影响,测试过程对系统资源的占用低。例如,流量转发模块将加入购物车请求重新按照tcp协议进行封装,获得tcp数据包1、tcp数据包2和tcp数据包3,并将三个tcp数据包按次序发送至投产应用商户端,投产应用商户端对tcp数据包进行解析,最终获得其中的请求数据,根据获得的请求数据,投产应用商户端对请求数据进行响应,产生加入购物车请求响应数据,投产应用商户端对响应数据进行层层封装,传输回流量转发模块,流量转发模块再将响应数据传输回tcp解析模块,最终到达投产应用用户端。

可选地,所述互联网应用测试装置,还包括测试数据存储模块204。

所述测试数据存储模块204,用于接收并存储所述流量镜像模块发送的所述待测试应用的响应数据。

本发明实施例中,当流量镜像模块接收到待测试应用产生的响应数据后,将其发送至测试数据存储模块存储起来,以便测试人员随时调用。在存储时,可以用测试时间、测试业务类型、测试版本号、测试结果等的信息命名,以便测试数据的管理与保存。对于结果中显而易见的错误例如http状态码是500、400、404等,测试人员可以直接从测试数据中获得,或者,测试人员还可以将获得的测试结果通过业务唯一表示编号与投产应用产生的响应数据进行关联比较,以对待测试应用的性能进行更准确的评估。对于最终产生的测试结果数据,可以进行在线流处理分析,或者进行离线大数据分析,获得更准确的结果。

本发明实施例中,通过对业务请求数据传输线路上的数据包进行解析,获得完整业务请求的数据,直接对业务请求进行旁路镜像,封装后再发送给待测试应用,同时将完整业务请求重新封装发送给投产应用,这样镜像复制的数据是已经过滤重复、损坏等无效数据包后的请求数据;另一方面,投产应用与待测试应用在相近的时间里,相同的网络环境下接收到了相同的业务请求数据,达到了对一次开发真实、实时的测试,获得的测试结果更准确,更具有参考性。

【方法实施例三】

参照图3,示出了本发明实施例中的一种互联网应用测试方法的步骤流程图。具体步骤包括:

步骤301:tcp解析模块对接收到的tcp数据包进行解析,获取目标业务请求。

步骤302:所述tcp解析模块将所述目标业务请求发送给流量转发模块,并触发镜像挂载接口将所述目标业务请求通过所述镜像挂载接口暴露。

步骤303:所述流量镜像模块通过所述镜像挂载接口对所述目标业务请求进行镜像拷贝,获得镜像业务请求,并将所述镜像业务请求传输至待测试应用,并接收所述待测试应用的响应数据。

步骤304:所述流量转发模块将所述目标业务请求传输至投产应用,并接收所述投产应用的响应数据。

可选地,所述步骤301,包括:

步骤3011:tcp解析模块对接收到的tcp数据包按预设规则进行分拣,获得至少一个目标tcp数据包;所述预设规则包括:丢弃无效的tcp数据包,并保留用于完成业务请求的至少一个目标tcp数据包。

步骤3012:tcp解析模块根据根据所述至少一个tcp数据包,获得目标业务请求。

可选地,所述步骤303,包括:

步骤3031:所述流量镜像模块对所述镜像业务请求进行tcp协议封装,获得至少一个镜像tcp数据包,并将所述至少一个镜像tcp数据包发送至待测试应用,并接收所述待测试应用的响应数据。

可选地,所述步骤304,包括:

步骤3041:所述流量转发模块对所述目标业务请求进行tcp协议封装,获得至少一个目标tcp数据包,并将所述至少一个目标tcp数据包发送至投产应用,并接收所述投产应用的响应数据。

可选地,所述303步骤之后,还包括:

步骤305:测试数据存储模块接收并存储所述流量镜像模块发送的所述待测试应用的响应数据。

对于方法实施例而言,由于其与装置实施例基本相似,所以描述的比较简单,相关之处参见装置实施例的部分说明即可。

本发明实施例中,通过对业务请求数据传输线路上的数据包进行解析,获得完整业务请求的数据,直接对业务请求进行旁路镜像,封装后再发送给待测试应用,同时将完整业务请求重新封装发送给投产应用,这样镜像复制的数据是已经过滤重复、损坏等无效数据包后的请求数据;另一方面,投产应用与待测试应用在相近的时间里,相同的网络环境下接收到了相同的业务请求数据,达到了对一次开发真实、实时的测试,获得的测试结果更准确,更具有参考性。

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

需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者装置不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者装置所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者装置中还存在另外的相同要素。

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

上面结合附图对本发明的实施例进行了描述,但是本发明并不局限于上述的具体实施方式,上述的具体实施方式仅仅是示意性的,而不是限制性的,本领域的普通技术人员在本发明的启示下,在不脱离本发明宗旨和权利要求所保护的范围情况下,还可做出很多形式,均属于本发明的保护之内。

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