测试方法及装置与流程

文档序号:11774306阅读:176来源:国知局
测试方法及装置与流程

本发明实施例涉及网络技术领域,尤其涉及一种测试方法及装置。



背景技术:

tcpcopy是一种请求复制工具,可以将线上流量拷贝至待测服务器,通过模拟线上环境实现待测服务器未上线时实时承担线上流量的效果,以实现对待测服务器的线上测试。

在测试过程中,待测服务器会根据线上流量执行相应的业务逻辑处理,会涉及数据处理操作,为了实现线上测试,现有技术中,待测服务器通常直接利用线上数据库中进行访问,但是这种方式会导致线上数据库引入重复数据,影响线上业务处理。



技术实现要素:

本发明实施例提供一种测试方法及装置,用以解决现有技术中线上测试导致影响线上业务处理的技术问题。

第一方面,本发明实施例中提供了一种测试方法,包括:

获取拷贝得到的线上流量;

确定所述线上流量的访问类型;

如果所述线上流量为读流量,利用所述读流量测试待测服务器;

如果所述线上流量为写流量,丢弃所述写流量。

可选地,所述确定所述线上流量的访问类型包括:

判断所述线上流量对应的访问接口是否为允许放行接口;

如果是,确定所述线上流量为读流量;

如果否,确定所述线上流量为写流量。

可选地,所述丢弃所述写流量之后,所述方法还包括:

跳转至提示页面。

可选地,所述确定所述线上流量的访问类型之后,所述方法还包括:

根据所述线上流量的业务类型,确定对应的所述待测服务器。

可选地,所述如果所述线上流量为读流量,利用所述读流量测试待测服务器包括:

如果所述线上流量为读流量,转发所述读流量至所述待测服务器,以供所述待测服务器根据所述读流量访问线上数据库。

第二方面,本发明实施例提供了一种测试装置,包括:

获取模块,用于获取拷贝得到的线上流量;

类型确定模块,用于确定所述线上流量的访问类型;

第一处理模块,用于如果所述线上流量为读流量,利用所述读流量测试待测服务器;

第二处理模块,用于如果所述线上流量为写流量,丢弃所述写流量。

可选地,所述类型确定模块包括:

判断单元,用于判断所述线上流量对应的访问接口是否为允许放行接口;

第一确定单元,用于所述判断单元结果为是时,确定所述线上流量为读流量;

第二确定单元,用于所述判断单元结果为否时,确定所述线上流量为写流量。

可选地,还包括:

跳转模块,用于跳转至提示页面。

可选地,还包括:

业务确定模块,用于根据所述线上流量的业务类型,确定对应的所述待测服务器。

可选地,所述第一处理模块具体用于如果所述线上流量为读流量,转发所述读流量至所述待测服务器,以供所述待测服务器根据所述读流量访问线上数据库。

本发明实施例中,首先对于拷贝获得的线上流量进行访问类型的判断,如果为读流量即用于测试待测服务器,而如果为写流量,则直接丢弃,从而即可以避免待测服务器的写库操作,不会向线上数据库引入重复数据,从而避免了对线上业务处理的影响。

本发明的这些方面或其他方面在以下实施例的描述中会更加简明易懂。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1示出了本发明实施例一种测试方法一个实施例的流程图;

图2示出了本发明实施例一种测试方法又一个实施例流程图;

图3示出了本发明实施例一种测试装置一个实施例的结构示意图;

图4示出了本发明实施例一种测试装置又一个实施例的结构示意图;

图5示出了本发明实施例一种电子设备一个实施例的结构示意图。

具体实施方式

为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述。

在本发明的说明书和权利要求书及上述附图中的描述的一些流程中,包含了按照特定顺序出现的多个操作,但是应该清楚了解,这些操作可以不按照其在本文中出现的顺序来执行或并行执行,操作的序号如101、102等,仅仅是用于区分开各个不同的操作,序号本身不代表任何的执行顺序。另外,这些流程可以包括更多或更少的操作,并且这些操作可以按顺序执行或并行执行。需要说明的是,本文中的“第一”、“第二”等描述,是用于区分不同的消息、设备、模块等,不代表先后顺序,也不限定“第一”和“第二”是不同的类型。

本发明实施例的技术方案主要应用于利用线上流量对待测服务器进行线上测试的应用场景。线上流量通常采用tcpcopy技术拷贝获得。

由于待测服务器进行线上测试时,会涉及数据处理操作,现有技术的一种方式可以为待测服务器设置一个测试数据库,由测试人员根据线上数据库,向测试数据库中灌入与线上数据库类似的数据,但是这种方式需要设置测试数据库、部署灌库逻辑、进行灌库等操作,耗费较多人力且无法保证测试数据库与线上数据局的数据完全一致。因此通常采用第二种方式,即待测试服务器直接使用线上数据库。

但是发明人研究发现,如果直接使用线上数据库,由于线上流量包括写流量以及读流量,读流量会触发待测服务器的读库操作,写流量会触发待测服务器进行写库操作,而写库操作会向线上数据库中写入数据,由于针对写流量,线上服务器也会向线上数据库写入数据,从而就会导致线上数据库引入重复数据,影响线上业务处理,且会消耗线上资源。例如网上支付场景中,有可能导致线上用户重复支付,而影响用户使用。

为了不影响线上业务的正常处理,无需消耗过多线上资源,发明人经过进一步研究发现,线上业务涉及的写流量很少,大部分均为读流量,且写流量涉及的业务操作在线上逻辑中通常涉及多方平台,可以无需进行测试,且线上测试频率又非常高,频繁写入数据也会影响线上测试。据此,发明人提出了本发明的技术方案,在本发明实施例中,对于拷贝获得线上流程进行访问类型的判断,如果为读流量即用于测试待测服务器,而如果为写流量,则直接丢弃,不用于测试待测服务器,从而即可以避免待测服务器的写库操作,不会向线上数据库引入重复数据,从而避免了对线上业务处理的影响。

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

图1是本发明实施例提供的一种测试方法一个实施例的流程图,该方法可以包括以下几个步骤:

101:获取拷贝得到的线上流量。

其中,线上流量即可以指发送至线上服务器的线上请求,该线上请求可以是指http(hypertexttransferprotocol,超文本传输协议)请求。线上请求会导致写库或读库的数据操作。

线上服务器会根据线上流量进行正常的业务逻辑。

102:确定所述线上流量的访问类型。

针对拷贝得到的任一线上流量,并不立即用于测试待测服务器,本发明实施例中首先对其访问类型进行判断。

线上流量的访问类型分为写流量以及读流量,因此根据该访问类型,即可以确定线上流量中的读流量以及写流量。

103:如果所述线上流量为读流量,利用所述读流量测试待测服务器。

待测服务器进行测试时,即可以根据读流量访问线上数据库,进行读库操作。

可选地,如果所述线上流量为读流量,即转发所述读流量至所述待测服务器,以供所述待测服务器根据所述读流量访问线上数据库。

104:如果所述线上流量为写流量,丢弃所述写流量。

丢弃写流量之后,写流量不会转发至待测服务器,从而待测服务器不会利用写流量进行测试,不会造成对线上数据库的写库操作。

本实施例中,根据线上流量的访问类型,如果线上流量为读流量,即直接该读流量测试待测试服务器,而如果为写流量,则直接丢弃该写流量,从而避免了待测试服务器的读库操作,不会向线上数据库引入重复数据,且避免了对线上业务处理的影响。

其中,确定所述线上流量的访问类型可以有多种可能的实现方式。由于线上流量是否为读流量或者写流量,并不依赖与请求类型为get或者post。

因此,作为一种可能的实现方式,可以根据线上流量的访问接口,该访问接口可以唯一标识一个线上流量,预先设置写流量对应的访问接口以及读流量对应的访问接口,从而即可以基于访问接口来确定线上流量的访问类型。

如图2所述,为本发明实施例提供的一种测试方法又一个实施例的流程图,该方法可以包括以下几个步骤:

201:获取拷贝得到的线上流量。

202:判断所述线上流量对应的访问接口是否为允许放行接口,如果是执行步骤203,如果否执行步骤205。

203:确定所述线上流量为读流量。

204:利用所述读流量测试待测服务器。

205:确定所述线上流量为写流量。

206:丢弃所述写流量。

其中,由于线上流量通常为http请求,因此访问接口具体可以是指请求访问的业务地址,也即url(uniformresourcelocator,统一资源定位符)地址。

在实际应用中,待测服务器的测试结果通常通过日志,进行测试分析获得,以确定待测服务器是否存在故障等。

为了方便进行测试分析,可选地,在某些实施例中,所述丢弃所述写流量之后,所述方法还包括:

跳转至提示页面。

由于待测服务器的测试过程不会影响线上业务,该提示页面的输出请求会被拦截,不会影响线上业务。但是会被记录在日志,以用于日志分析。通过跳转至提示页面,可以模拟真实线上环境,将写流量认为是一个非法操作,从而记录在日志中,方便进行日志分析。

例如下一段日志:

100.64.14.182remote_user=-[27/dec/2016:14:11:59+0800]request="get/test/testpagehttp/1.1"status=302body_bytes_sent=165http_r

eferer="http://www.example.com/test/testpage"upstream_addr=-upstream_header_time=-upstream_response_time=-request_time=0.000upstream_response_time=-

由上述日志可知,用户ip100.64.14.182访问了一个http://www.example.com/test/testpage,该url我们在系统没有添加放行权限,为非允许放行接口。从日志中可以看状态码为302,该状态表明该线上流量跳转至提示页面,是一个非法操作,无需用其进行测试分析。

如果线上流量为读流量,其对应的日志可以如下所述:

100.64.18.182remote_user=-[27/dec/2016:14:11:59+0800]request="get/read/testpagehttp/1.1"status=200body_bytes_sent=19189http_referer="http://www.example.com/read/testpage"upstream_addr=10.8.38.9:8088upstream_header_time=0.120upstream_response_time=0.122request_time=0.122upstream_response_time=0.122。

由该日志可知用户ip100.64.14.182访问了一个http://www.example.com/read/testpage该url我们为允许放行接口,从日志状态中看出状态码为200,表明该线上流量已被转发至对应的待测服务器。

为了安全进行线上测试,待测服务器通常部署在沙盒系统中,由沙盒系统的前端服务器进行流量判断,本发明实施例中的技术方案即由该前端服务器执行。

沙盒系统会预先屏蔽掉全部线上流量,因此可以通过规则设置来规定沙盒系统允许放行哪些流量。

因此,在某些实施例中,所述确定所述线上流量的访问类型可以包括:

读取预配置规则;

基于所述预配置规则,确定所述线上流量的访问类型。

该预配置规则中可以包括线上流量的区分条件,从而基于该区分条件即可以确定线上流量为读流量或者写流量。该区分条件即可以是指允许放行接口。从而沙盒系统可以将非允许放行接口的写流量拒绝。

该预配置规则可以由用户通过控制平台设置并推送至前端服务器中,以由前端服务器据此实现对线上流量的区分。

此外,由于一个业务通常可以分为多个业务类型,例如对于一个网站业务,其业务类型可以包括新闻、娱乐、母婴、健康等。

沙盒系统可以对应多个业务类型部署相应的待测服务器,由沙盒系统的前端服务器进行流量区分。

因此,在某些实施例中,所述确定所述线上流量的访问类型之后,所述方法还可以包括:

根据所述线上流量的业务类型,确定对应的待测服务器。

从而利用读流量具体测试的即为该线上流量的业务类型对应的待测服务器。

上述预配置规则中也可以包括不同业务类型与不同待测服务器的对应关系,从而可以根据预配置规则将读流量转发至相应的待测服务器中。

本发明实施例在实际应用中,可以用于网上交易场景的待测服务器进行测试。在网上交易场景中,线上流量可以包括浏览请求、下单请求以及支付请求等等。其中浏览请求即为读流量,而下单请求以及支付请求为写流量,如果不对读写流量进行区分,那么下单请求以及支付请求,就可能导致线上用户重复下单以及重复支付,影响线上用户的体验。而通过本发明实施例,可以将写流量拒绝,避免了对线上业务处理的影响。且无需向线上数据库中写入重复数据,降低了线上资源的消费。

图3为本发明实施例提供的一种测试装置一个实施例的结构示意图,该装置可以包括:

获取模块301,用于获取拷贝得到的线上流量;

类型确定模块302,用于确定所述线上流量的访问类型;

第一处理模块303,用于如果所述线上流量为读流量,利用所述读流量测试待测服务器;

可选地,该第一处理模块可以具体用于如果所述线上流量为读流量,转发所述读流量至所述待测服务器,以供所述待测服务器根据所述读流量访问线上数据库。

第二处理模块304,用于如果所述线上流量为写流量,丢弃所述写流量。

本实施例中,根据线上流量的访问类型,如果线上流量为读流量,即直接该读流量测试待测试服务器,而如果为写流量,则直接丢弃该写流量,从而避免了待测试服务器的读库操作,不会向线上数据库引入重复数据,且避免了对线上业务处理的影响。

其中,确定所述线上流量的访问类型可以有多种可能的实现方式。由于线上流量是否为读流量或者写流量,并不依赖与请求类型为get或者post。

因此,作为一种可能的实现方式,可以根据线上流量的访问接口,该访问接口可以唯一标识一个线上流量,预先设置写流量对应的访问接口以及读流量对应的访问接口,从而即可以基于访问接口来确定线上流量的访问类型。

因此,作为又一个实施例,如图4所示,与图3所示实施例不同之处在于,该类型确定模块302可以包括:

判断单元401,用于判断所述线上流量对应的访问接口是否为允许放行接口;

第一确定单元402,用于所述判断单元结果为是时,确定所述线上流量为读流量;

第二确定单元403,用于所述判断单元结果为否时,确定所述线上流量为写流量。

其中,由于线上流量通常为http请求,因此访问接口具体可以是指请求访问的业务地址,也即url地址。

在实际应用中,待测服务器的测试结果通常通过日志,进行测试分析获得,以确定待测服务器是否存在故障等。

为了方便进行测试分析,可选地,在某些实施例中,该装置还可以包括:

跳转模块,用于跳转至提示页面。

为了安全进行线上测试,待测服务器通常部署在沙盒系统中,由沙盒系统的前端服务器进行流量判断,本发明实施例中的技术方案即由该前端服务器执行。

沙盒系统会预先屏蔽掉全部线上流量,因此可以通过规则设置来规定沙盒系统允许放行哪些流量。

因此,在某些实施例中,所述类型确定模块可以具体用于读取预配置规则;基于所述预配置规则,确定所述线上流量的访问类型。

预配置规则中可以包括线上流量的区分条件,从而基于该区分条件即可以确定线上流量为读流量或者写流量。该区分条件即可以是指允许放行接口。从而沙盒系统可以将非允许放行接口的写流量拒绝。

该预配置规则可以由用户通过控制平台设置并推送至前端服务器中,以由前端服务器据此实现对线上流量的区分。

此外,由于一个业务通常可以分为多个业务类型,例如对于一个网站业务,其业务类型可以包括新闻、娱乐、母婴、健康等。

沙盒系统可以对应多个业务类型部署相应的待测服务器,由沙盒系统的前端服务器进行流量区分。

因此,在某些实施例中,该装置还可以包括:

业务确定模块,用于根据所述线上流量的业务类型,确定对应的所述待测服务器。

上述预配置规则中也可以包括不同业务类型与不同待测服务器的对应关系,从而可以根据预配置规则将读流量转发至相应的待测服务器中。

通过本发明实施例的技术方案,避免对线上业务处理的影响。

在一个可能的设计中,上述任一实施例的测试装置可以实现为电子设备,该电子设备可以部署在沙盒系统中,作为待测服务器的前端服务器。

如图5所示,该电子设备可以包括一个或多个处理器501以及一个或多个存储器502;

所述一个或多个存储器502存储一条或多条计算机指令,所述一条或多条计算机指令用于供所述一个或多个处理器501调用执行;

所述一个或多个处理器501用于:

获取拷贝得到的线上流量;

确定所述线上流量的访问类型;

如果所述线上流量为读流量,利用所述读流量测试待测服务器;

如果所述线上流量为写流量,丢弃所述写流量。

此外,该一个或多个处理器可以用于执行上述任一实施例所述的测试方法。

该一个或多个存储器可以由任何类型的易失性或非易失性存储设备或者它们的组合实现,如静态随机存取存储器(sram),电可擦除可编程只读存储器(eeprom),可擦除可编程只读存储器(eprom),可编程只读存储器(prom),只读存储器(rom),磁存储器,快闪存储器,磁盘或光盘。

本发明实施例还提供了一种计算机可读存储介质,该计算机可读存储介质存储有计算机程序,所述计算机程序使计算机执行时实现如上述任一实施例所述测试方法。

所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。

以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。

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

最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。

本发明公开了a1、一种测试方法,包括:

获取拷贝得到的线上流量;

确定所述线上流量的访问类型;

如果所述线上流量为读流量,利用所述读流量测试待测服务器;

如果所述线上流量为写流量,丢弃所述写流量。

a2、根据a1所述的方法,所述确定所述线上流量的访问类型包括:

判断所述线上流量对应的访问接口是否为允许放行接口;

如果是,确定所述线上流量为读流量;

如果否,确定所述线上流量为写流量。

a3、根据a1所述的方法,所述丢弃所述写流量之后,所述方法还包括:

跳转至提示页面。

a4、根据a1所述的方法,所述确定所述线上流量的访问类型之后,所述方法还包括:

根据所述线上流量的业务类型,确定对应的所述待测服务器。

a5、根据a1所述的方法,所述如果所述线上流量为读流量,利用所述读流量测试待测服务器包括:

如果所述线上流量为读流量,转发所述读流量至所述待测服务器,以供所述待测服务器根据所述读流量访问线上数据库。

a6、根据a1所述的方法,所述确定所述线上流量的访问类型包括:

读取预配置规则;

基于所述预配置规则,确定所述线上流量的访问类型。

a7、根据权利要求2所述方法,所述访问接口为请求访问的url地址。

b8、一种测试装置,包括:

获取模块,用于获取拷贝得到的线上流量;

类型确定模块,用于确定所述线上流量的访问类型;

第一处理模块,用于如果所述线上流量为读流量,利用所述读流量测试待测服务器;

第二处理模块,用于如果所述线上流量为写流量,丢弃所述写流量。

b9、根据b8所述的装置,所述类型确定模块包括:

判断单元,用于判断所述线上流量对应的访问接口是否为允许放行接口;

第一确定单元,用于所述判断单元结果为是时,确定所述线上流量为读流量;

第二确定单元,用于所述判断单元结果为否时,确定所述线上流量为写流量。

b10、根据b8所述的装置,还包括:

跳转模块,用于跳转至提示页面。

b11、根据b8所述的装置,还包括:

业务确定模块,用于根据所述线上流量的业务类型,确定对应的所述待测服务器。

b12、根据b8所述的装置,所述第一处理模块具体用于如果所述线上流量为读流量,转发所述读流量至所述待测服务器,以供所述待测服务器根据所述读流量访问线上数据库。

b13、根据b8所述的装置,所述类型确定模块具体用于读取预配置规则;基于所述预配置规则,确定所述线上流量的访问类型。

b14、根据b9所述的装置,所述访问接口为请求访问的url地址。

c15、一种电子设备,包括一个或多个处理器以及一个或多个存储器;

所述一个或多个存储器存储一条或多条计算机指令,所述一条或多条计算机指令用于供所述一个或多个处理器调用执行;

所述一个或多个处理器用于:

获取拷贝得到的线上流量;

确定所述线上流量的访问类型;

如果所述线上流量为读流量,利用所述读流量测试待测服务器;

如果所述线上流量为写流量,丢弃所述写流量。

d16、一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序;

所述计算机程序使计算机执行时实现如a1~a7任一项所述的测试方法。

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