测试方法、测试装置和存储介质与流程

文档序号:18739097发布日期:2019-09-21 01:34阅读:131来源:国知局
测试方法、测试装置和存储介质与流程

技术领域

本申请涉及测试技术,尤其涉及一种在测试过程中实现流量隔离的测试方法及装置。



背景技术:

生产环境是指提供服务给线上真实用户使用的计算机系统,有别于供开发和测试人员进行例如开发、测试等非生产活动使用的非生产环境。

计算机系统是指提供某种服务的计算机集群系统,如,提供物品详情浏览页服务的计算机集群就称为一个计算机系统,一个计算机系统由多个应用组成。

应用是组成整个计算机系统的各个子系统,比如和物品相关的物品应用,和交易相关的交易应用。应用可以直接提供服务,也可以依赖于别的应用提供的服务;各个应用通过相互依赖的调用一起完成整个计算机系统的功能。

各个应用之间互相调用完成某个功能就是一个调用链路,例如,应用A调用应用B的服务,应用B为了完成该服务,又需要调用应用C的服务,这样A调用B,触发B调用C;A->B->C就是一个调用链路。

用户访问系统以向计算机系统请求一个调用链路,称之为一个单位的流量。

在现有技术中,为了发现生产环境中的问题,需要使非生产环境和生产环境保持高度一致,通常的做法是直接在生产环境中进行研发或测试等非生产活动。

但是采用现有技术中的方案存在以下问题:非生产活动与生产活动产生的流量无法隔离,导致不同用途的流量产生交叉影响。例如,测试人员构造的测试数据和用户在使用服务时产生的数据无法区分,造成用户数据污染,还可能导致用户看到测试数据,进而产生业务纠纷或线上故障。



技术实现要素:

本申请实施例中提供了一种测试方法和装置,用于解决现有技术中不同用途的流量无法隔离的问题。

根据本申请实施例的第一方面,提供了一种测试方法,包括:接收第一调用请求,其中,在对应于非测试流量的第一调用请求中以第一状态设置了预定字段,而在对应于测试流量的第一调用请求中以第二状态设置了预定字段,第二状态不同于第一状态;以及根据第一调用请求中的预定字段的状态调用相应线程池中的线程。

可选地,在根据第一调用请求中的预定字段的状态调用相应线程池中的线程之前,还包括:创建第一线程池和第二线程池,其中,第一线程池和第二线程池对等。

可选地,根据第一调用请求中的预定字段的状态调用相应线程池中的线程的步骤包括:在第一调用请求中的预定字段处于第一状态的情况下,调用第一线程池中的线程;在第一调用请求中的预定字段处于第二状态的情况下,调用第二线程池中的线程。

可选地,该方法还可以包括:创建第二调用请求;根据第一调用请求中的预定字段设置第二调用请求中的相应预定字段;以及发送第二调用请求。

可选地,该方法还可以包括:创建针对数据库的第三调用请求;根据第一调用请求中的预定字段设置第三调用请求中的相应预定字段;以及根据第三调用请求中的预定字段的状态将第三调用请求路由至数据库中相应的数据表。

可选地,在根据第三调用请求中的预定字段的状态将第三调用请求路由至数据库中相应的数据表之前,还包括:创建第一数据表和第二数据表,其中,第二数据表为第一数据表的映射表。

可选地,根据第三调用请求中的预定字段的状态将第三调用请求路由至数据库中相应的数据表的步骤包括:在第三调用请求中的预定字段处于第一状态的情况下,将第三调用请求路由至第一数据表;在第三调用请求中的预定字段处于第二状态的情况下,则将第三调用请求路由至第二数据表。

可选地,第一状态为没有设置预定字段,而第二状态为设置了预定字段;或者在第一状态和第二状态下,分别为预定字段设置了不同的值。

根据本申请实施例的第二方面,提供了一种测试方法,包括:接收第一调用请求,其中,在对应于非测试流量的第一调用请求中以第一状态设置了预定字段,而在对应于测试流量的第一调用请求中以第二状态设置了预定字段,第二状态不同于第一状态;创建第二调用请求;根据第一调用请求中的预定字段设置第二调用请求中的相应预定字段;以及发送第二调用请求。

可选地,第一状态为没有设置预定字段,而第二状态为设置了预定字段;或者在第一状态和第二状态下,分别为预定字段设置了不同的值。

根据本申请实施例的第三方面,提供了一种测试方法,包括:创建针对数据库的第三调用请求,其中,在对应于非测试流量的第三调用请求中以第一状态设置了预定字段,而在对应于测试流量的第三调用请求中以第二状态设置了预定字段,第二状态不同于第一状态;以及根据第三调用请求中的预定字段的状态将第三调用请求路由至数据库中相应的数据表。

可选地,该方法还可以包括:接收第一调用请求,其中,在对应于非测试流量的第一调用请求中以第一状态设置了预定字段,而在对应于测试流量的第一调用请求中以第二状态设置了预定字段,第二状态不同于第一状态;以及根据第一调用请求中的预定字段设置第三调用请求中的相应预定字段。

可选地,在根据第三调用请求中的预定字段的状态将第三调用请求路由至数据库中相应的数据表之前,还包括:创建第一数据表和第二数据表,其中,第二数据表为第一数据表的映射表。

可选地,根据第三调用请求中的预定字段的状态将第三调用请求路由至数据库中相应的数据表的步骤包括:在第一调用请求中的预定字段处于第一状态的情况下,将第三调用请求路由至第一数据表;在第一调用请求中的预定字段处于第二状态的情况下,则将第三调用请求路由至第二数据表。

可选地,第一状态为没有设置预定字段,而第二状态为设置了预定字段;或者在第一状态和第二状态下,分别为预定字段设置了不同的值。

根据本申请实施例的第四方面,提供了一种测试装置,包括:接收模块,用于接收第一调用请求,其中,在对应于非测试流量的第一调用请求中以第一状态设置了预定字段,而在对应于测试流量的第一调用请求中以第二状态设置了预定字段,第二状态不同于第一状态;以及第一调用模块,用于根据第一调用请求中的预定字段的状态调用相应线程池中的线程。

可选地,该装置还可以包括:线程创建模块,用于创建第一线程池和第二线程池,其中,第一线程池和第二线程池对等。

可选地,第一调用模块包括:第一线程调用子模块,用于在第一调用请求中的预定字段处于第一状态的情况下,调用第一线程池中的线程;以及第二线程调用子模块,用于在第一调用请求中的预定字段处于第二状态的情况下,调用第二线程池中的线程。

可选地,该装置还可以包括:第二调用请求创建模块,用于创建第二调用请求;第一字段设置模块,用于根据第一调用请求中的预定字段设置第二调用请求中的相应预定字段;以及发送模块,用于发送第二调用请求。

可选地,该装置还可以包括:第三调用请求创建模块,用于创建针对数据库的第三调用请求;第二字段设置模块,用于根据第一调用请求中的预定字段设置第三调用请求中的相应预定字段;以及路由模块,用于根据第三调用请求中的预定字段的状态将第三调用请求路由至数据库中相应的数据表。

可选地,该装置还可以包括:数据表创建模块,用于创建第一数据表和第二数据表,其中,第二数据表为第一数据表的映射表。

可选地,路由模块包括:第一路由子模块,用于在第三调用请求中的预定字段处于第一状态的情况下,将第三调用请求路由至第一数据表;第二路由子模块,用于在第三调用请求中的预定字段处于第二状态的情况下,将第三调用请求路由至第二数据表。

可选地,第一状态为没有设置预定字段,而第二状态为设置了预定字段;或者在第一状态和第二状态下,分别为预定字段设置了不同的值。

根据本申请实施例的第五方面,提供了一种测试装置,包括:接收模块,用于接收第一调用请求,其中,在对应于非测试流量的第一调用请求中以第一状态设置了预定字段,而在对应于测试流量的第一调用请求中以第二状态设置了预定字段,第二状态不同于第一状态;第二调用请求创建模块,用于创建第二调用请求;第一字段设置模块,用于根据第一调用请求中的预定字段设置第二调用请求中的相应预定字段;以及发送模块,用于发送第二调用请求。

根据本申请实施例的第六方面,提供了一种测试装置,包括:第三调用请求创建模块,用于创建针对数据库的第三调用请求,其中,在对应于非测试流量的第三调用请求中以第一状态设置了预定字段,而在对应于测试流量的第三调用请求中以第二状态设置了预定字段,第二状态不同于第一状态;以及路由模块,用于根据第三调用请求中的预定字段的状态将第三调用请求路由至数据库中相应的数据表。

可选地,该装置还可以包括:接收模块,用于接收第一调用请求,其中,在对应于非测试流量的第一调用请求中以第一状态设置了预定字段,而在对应于测试流量的第一调用请求中以第二状态设置了预定字段,第二状态不同于第一状态;以及第二字段设置模块,用于根据第一调用请求中的预定字段设置第三调用请求中的相应预定字段。

可选地,该装置还可以包括:数据表创建模块,用于创建第一数据表和第二数据表,其中,第二数据表为第一数据表的映射表。

可选地,路由模块包括:第一路由子模块,用于在第三调用请求中的预定字段处于第一状态的情况下,将第三调用请求路由至第一数据表;第二路由子模块,用于在第三调用请求中的预定字段处于第二状态的情况下,将第三调用请求路由至第二数据表。

根据本申请实施例的第七方面,提供了一种全链路测试方法,应用于生产环境,生产环境包括至少一个应用,其特征在于,包括:至少一个应用接收调用请求,调用请求包括用户发送的调用请求和测试人员发起的调用请求,其中用户发送的调用请求和测试人员发起的调用请求在相同的预定字段具有不同的状态;至少一个应用通过第一线程池中的线程处理用户发送的调用请求;以及至少一个应用通过第二线程中的线程处理测试人员发起的调用请求。

可选地,该方法还可以包括:创建针对调用链路中下一应用的下一调用请求;根据针对调用链路中当前应用的调用请求中的预定字段设置下一调用请求中的相应预定字段;以及向下一应用发送下一调用请求。

可选地,所述下一调用请求包括HSF调用请求。

可选地,该方法还可以包括:所述下一应用根据所述下一调用请求中的相应预定字段的状态调用相应线程池中的线程。

可选地,该方法还可以包括:调用链路末端的当前应用创建针对数据库的数据库调用请求;根据针对当前应用的调用请求中的预定字段设置数据库调用请求中的相应预定字段;以及根据数据库调用请求中的预定字段的状态将数据库调用请求路由至数据库中相应的数据表。

可选地,所述数据库调用请求包括JDBC请求。

可选地,该方法还可以包括:根据所述数据库调用请求中的预定字段的状态将所述数据库调用请求路由至所述数据库中相应的数据表。

根据本申请实施例的第八方面,提供了一种计算机可读存储介质,其上存储有可执行代码,当可执行代码被电子设备的处理器执行时,使处理器执行如上述第一至三以及第七方面的测试方法。

根据本申请实施例的第九方面,提供了一种流量隔离方法,包括:接收第一调用请求;查找第一调用请求中的预定字段,其中,预定字段是根据第一调用请求的类型而设置的;以及根据第一调用请求中的预定字段的状态调用相应线程池中的线程。

根据本申请实施例的第十方面,提供了一种流量隔离装置,包括:接收模块,用于接收第一调用请求;查找模块,用于查找第一调用请求中的预定字段,其中,预定字段是根据第一调用请求的类型而设置的;第一调用模块,用于根据第一调用请求中的预定字段的状态调用相应线程池中的线程。

采用本申请实施例中的测试方法及装置,通过查找调用请求中根据调用请求的类型设置的预定字段,并根据该预定字段的状态来调用相应线程,使得应用能够根据不同类型的调用请求调用不同的线程,从而实现了测试流量和一般流量的隔离。

附图说明

通过结合附图对本公开示例性实施方式进行更详细的描述,本公开的上述以及其它目的、特征和优势将变得更加明显,其中,在本公开示例性实施方式中,相同的参考标号通常代表相同部件。

图1为本申请实施例一所示的测试方法中实现流量隔离的方法流程图;

图2为本申请实施例二所示的测试装置中用于实现流量隔离的装置的结构示意图;

图3为根据本申请实施例三的采用流量隔离装置的计算机系统的结构示意图;

图4为根据本申请实施例三的采用流量隔离装置的计算机系统中的应用A的数据处理流程图;

图5为根据本申请实施例三的采用流量隔离装置的计算机系统中的应用B的数据处理流程图。

具体实施方式

下面将参照附图更详细地描述本公开的优选实施方式。虽然附图中显示了本公开的优选实施方式,然而应该理解,可以以各种形式实现本公开而不应被这里阐述的实施方式所限制。相反,提供这些实施方式是为了使本公开更加透彻和完整,并且能够将本公开的范围完整地传达给本领域的技术人员。

为了使本申请实施例中的技术方案及优点更加清楚明白,以下结合附图对本申请的示例性实施例进行进一步详细的说明,显然,所描述的实施例仅是本申请的一部分实施例,而不是所有实施例的穷举。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。

在实现本申请的过程中,发明人发现,在现有技术中,为了发现生产环境中的问题,需要使非生产环境和生产环境保持高度一致,通常的做法是直接在生产环境中进行研发或测试等非生产活动。

但是采用现有技术中的方案存在以下问题:非生产活动与生产活动产生的流量无法隔离,导致不同用途的流量产生交叉影响。例如,测试人员构造的测试数据和用户在使用服务时产生的数据无法区分,造成用户数据污染,还可能导致用户看到测试数据,进而产生业务纠纷或线上故障;或者是压力验证流量和正常用户访问流量如果不能区分隔离,那么压力验证流量会抢占线上用户资源,导致线上用户资源耗尽而不能提供正常服务,影响系统的可用性进而产生线上故障。

为了解决数据污染的问题,相关技术中也提供了相关的解决方案,例如,在生产环境之外再搭建一个非生产环境,利用另一计算机系统来做功能测试和压力验证工作,但是由于是搭建的环境,与真实的生产环境不一致,无法发现一些真实环境里面的问题,并且搭建环境成本也非常高。

针对上述问题,本申请中提供了一种测试方法和装置,核心思想在于,在生产环境的各应用中,创建多个线程,然后根据调用请求的类型来调用不同的线程,使得应用能够根据该预定字段调用能够调用相应线程,从而实现流量的隔离。

本申请实施例中提供的方案能够应用于生产环境线上全链路压测等测试产品中。

图1为本申请实施例一所示的测试方法中实现流量隔离的方法流程图。

如图1所示,根据本申请实施例一所示的流量隔离方法包括以下步骤:

步骤102,接收第一调用请求;

步骤104,查找第一调用请求中的预定字段,其中,该预定字段是根据第一调用请求的类型而设置的;

步骤106,根据第一调用请求中的预定字段的状态调用相应线程池中的线程。

在具体实施时,第一调用请求的类型可以包括一般调用,即普通用户,如买家、卖家等发起的调用;也可以包括如测试人员发起的测试调用;还可以包括如研发人员发起的研发调用等;具体的类型本申请不作限制。

在具体实施时,该第一调用请求可以是用户发送的HTTP(HyperText Transfer Protocol,超文本传输协议)请求,也可以是上游应用发送给下游应用的、基于TCP(Transmission Control Protocol,传输控制协议)长连接的远程方法调用框架HSF(High Speed Framework,服务调用框架协议)请求,本申请对此不作限制。

在具体实施时,该预定字段的状态与第一调用请求的类型相对应,并且可以根据第一调用请求的类型适应性设置;例如,如果将第一调用请求分为一般调用和特殊调用(除一般调用以外的调用),则可以将一般调用请求的预定字段设置为空或者为0,而将特殊调用请求的预定字段设置为1等,也可以将一般调用请求设置为不携带预定字段,而特殊调用请求携带预定字段等;如果将第一调用请求分为一般调用、测试调用和研发调用;则可以将一般调用请求的预定字段设置为空或0,将测试调用请求的预定字段设置为1,将研发调用请求的预定字段设置为2等;本领域技术人员应当理解,上述仅为示例的目的示出,并不用于限制本申请。

在具体实施时,该第一调用请求的预定字段可以是该调用请求中的指定字段,例如,如果该第一调用请求是HTTP请求,则该预定字段可以是URL中的某一特殊字段,如flag=test;如果该第一调用请求是HSF请求,则该预定字段可以是自定义的某一特殊字段,如flag=test;本申请对此不作限制。

在具体实施时,可以在接收到第一调用请求之前,也可以在查找第一调用请求中的预定字段之前创建与第一调用请求的类型相对应的线程池。例如,如果将第一调用请求分为一般调用和特殊调用两种类型,则可以预先创建两个线程池;如果将第一调用请求分为一般调用、测试调用和研发调用三种类型,则可以预先创建三个线程池等;本申请对此不作限制。

在具体实施时,不同类型的调用请求对应的线程池可以按需求设置为不同大小的,也可以设置为对等的,本申请对此不做限制。

优选地,该第一调用请求为测试调用请求,该测试调用请求携带预定字段。

在具体实施时,对于接收到的测试调用请求,应用根据该测试调用请求中携带的预定字段判断出接收到的调用请求为测试调用请求,然后调用预先创建的相应线程池中的线程,并从而能够将测试调用请求与一般调用请求隔离。

例如,用户和测试人员分别向应用A发送HTTP请求,用户发送的请求中不携带预定字段,测试人员发送的请求中携带预定字段;应用A判断出用户发送的请求中没有携带预定字段,则把用户的请求放入第一个线程池中;应用A判断出测试人员发送的请求中携带有预定字段,则把测试人员的请求放入另一个线程池中;从而使得用户和测试人员的流量能够调用不同的线程池,互不干扰,从而实现了不同类型的流量之间的隔离。

采用本申请实施例中的流量隔离方法,通过查找调用请求中根据调用请求的类型设置的预定字段,并根据该预定字段来调用预先创建的相应线程,使得应用能够根据不同类型的调用请求调用不同的线程,从而实现流量的隔离。

优选地,在根据第一调用请求中的预定字段的状态调用预先创建的相应线程池中的线程之前,还包括:创建第一线程池和第二线程池,其中,第一线程池和第二线程池对等。

在具体实施时,为避免测试流量抢占普通用户的流量,可以将第一调用请求的类型设置为两种,即一般调用和测试调用;相应的,可以在调用线程池之前创建两个线程池。同时,为了使测试流量与一般流量的环境更加一致,可以创建两个对等的线程池。

优选地,根据第一调用请求中的预定字段的状态调用预先创建的相应线程池中的线程具体包括:判断第一调用请求中是否携带预定字段;如果判断结果为否,则调用第一线程池中的线程;如果判断结果为是,则调用第二线程池中的线程。

为节省系统资源,可以采用使某一种调用请求保持不变,仅改变其他类型的调用请求的方式来区分不同类型的调用请求;即,可以使某一种类型的第一调用请求不携带预定字段,而在其他类型的第一调用请求中增加预定字段。

除压力测试之外,通常的测试流量仍然小于一般流量,因此,可以使一般的调用请求中不携带预定字段,而仅在测试流量等特殊流量的调用请求中携带预定字段。

优选地,在根据第一调用请求中的预定字段的状态调用预先创建的相应线程池中的线程之后,还包括:创建第二调用请求;根据第一调用请求中的预定字段设置第二调用请求中的相应预定字段;发送第二调用请求。

调用链路中的应用除根据接收到的第一调用请求中预定字段的状态调用相应线程池中的线程之外,还将进一步将该预定字段的状态传递至调用链路中的下一应用,以使下一应用能够继续隔离流量。

在具体实施时,该第二调用请求可以是HSF请求,也可以是采用其他协议的应用调用请求,本申请不作限制。

优选地,在根据第一调用请求中的预定字段的状态调用预先创建的相应线程池中的线程之后,还包括:创建第三调用请求;根据第一调用请求中的预定字段设置第三调用请求中的相应预定字段;根据第三调用请求中的预定字段的状态将第三调用请求路由至相应的数据表。

在具体实施时,处于调用链路末端的应用,除根据接收到的第一调用请求中预定字段的状态调用相应线程池中的线程之外,还将进一步将该预定字段设置至对数据库的第三调用请求中,以使数据库能够继续隔离流量。

在具体实施时,该第三调用请求可以是JDBC(Java Data Base Connectivity,java数据库连接)请求,也可以是采用其他数据库调用协议的请求,本申请对此不作限制。

在具体实施时,该第三调用请求中的预定字段可以是SQL语法中的表名,例如,对于普通用户发起的一般调用,将该表名设置为A;对于测试人员发起的测试调用,将表名设置为B等;本领域技术人员应当能够,只要通过该预定字段能够区分调用的类型即可。

优选地,在根据第三调用请求中的预定字段的状态将第三调用请求路由至相应的数据表之前,还包括:创建第一数据表和第二数据表,其中,第二数据表为第一数据表的映射表。

为进一步隔离流量,具体实施时,可以在数据库内创建一个与原始表C的表结构完全一致的映射表D,为便于区分,该映射表D的表名可以和原始表C的表名不同。

优选地,根据第三调用请求中的预定字段的状态将第三调用请求路由至相应的数据表具体包括:判断第三调用请求中是否携带预定字段;如果判断结果为否,则将第三调用请求路由至第一数据表(例如,原始表);如果判断结果为是,则将第三调用请求路由至第二数据表(例如,原始表的映射表D)。

在具体实施时,调用链路末端的应用在调用相应的线程池后,需要进一步将调用请求路由至数据表,在路由到数据表之前,可以判断JDBC请求中的预定字段是否空,如果为空,则直接把请求路由到原始表C;对于测试人员发起的测试调用请求,可以判断出JDBC请求中的预定字段不为空,则把请求路由到映射表D,直接替换SQL语句中的表名。

采用本申请实施例中的测试方法,一般调用请求和特殊调用请求能够在一个计算机系统里被处理,并且数据完全存储在一个数据库中,一般的正常数据存储在原始表中,测试数据存储在映射表中,做到了流量间互相隔离不影响,数据间的隔离互相不影响,可以有效的完成功能性测试和压力验证测试。

基于同一发明构思,本申请实施例中还提供了一种测试装置,由于该装置解决问题的原理与本申请实施例所提供的方法相似,因此该装置的实施可以参见方法的实施,重复之处不再赘述。

图2为本申请实施例二所示测试装置中用于实现流量隔离的装置的结构示意图。

如图2所示,根据本申请实施例二所示流量隔离装置200,包括:接收模块202,用于接收第一调用请求;查找模块204,用于查找第一调用请求中的预定字段,其中,预定字段是根据第一调用请求的类型而设置的;第一调用模块206,用于根据第一调用请求中的预定字段的状态调用预先创建的相应线程池中的线程。

优选地,根据本申请实施例二所示流量隔离装置200还包括:线程创建模块208,用于创建第一线程池和第二线程池,其中,第一线程池和所述第二线程池对等。

优选地,第一调用模块具体包括:第一判断子模块,用于判断第一调用请求中是否携带预定字段;第一线程调用子模块,用于在判断结果为否时,调用第一线程池中的线程;第二线程调用子模块,用于在判断结果为是时,调用第二线程池中的线程。

优选地,根据本申请实施例二所示流量隔离装置200还包括:第二调用请求创建模块,用于创建第二调用请求;第一字段设置模块,用于根据第一调用请求中的预定字段设置第二调用请求中的相应预定字段;发送模块,用于发送第二调用请求。

优选地,根据本申请实施例二所示流量隔离装置200还包括:第三调用请求创建模块,用于创建第三调用请求;第二字段设置模块,用于根据第一调用请求中的预定字段设置第三调用请求中的相应预定字段;路由模块,用于根据第三调用请求中的预定字段的状态将第三调用请求路由至相应的数据表。

优选地,根据本申请实施例二所示流量隔离装置200还包括:数据表创建模块,用于创建第一数据表和第二数据表,其中,第二数据表为第一数据表的映射表。

优选地,路由模块具体包括:第二判断子模块,用于判断第三调用请求中是否携带预定字段;第一路由子模块,用于在判断结果为否时,将第三调用请求路由至第一数据表;第二路由子模块,用于在判断结果为是时,将第三调用请求路由至第二数据表。

优选地,该第一调用请求为测试调用请求,该测试调用请求携带预定字段。

采用本申请实施例中的流量隔离装置,一般调用请求和特殊调用请求能够在一个计算机系统里被处理,并且数据完全存储在一个数据库中,一般的正常数据存储在原始表中,测试数据存储在映射表中,做到了流量间互相隔离不影响,数据间的隔离互相不影响,可以有效的完成功能性测试和压力验证测试。

图3为根据本申请实施例三的采用流量隔离装置的计算机系统的结构示意图。

图4为根据本申请实施例三的采用流量隔离装置的计算机系统中的应用A的数据处理流程图。

图5为根据本申请实施例三的采用流量隔离装置的计算机系统中的应用B的数据处理流程图。

如图3所示,在根据本申请实施例三的采用流量隔离装置的计算机系统中,当前的调用链路包括两个应用A和应用B,应用A和应用B中各自创建有两个对等线程池用来处理不同的流量;数据库中存储有数据表C和数据表D;数据表D为C的映射表。

应用A中新增有本申请实施例提供的第一流量隔离装置,包括接收模块、查找模块、第一调用模块、第一调用请求创建模块、第一字段设置模块和发送模块,查找模块用于识别HTTP协议和HSF协议中是否存在预定字段,如果无,则把接收到的调用请求放入线程池1,如果有,则把调用请求放入线程池2,做到流量隔离;第一调用请求创建模块、第一字段设置模块和发送模块用于将预定字段传递至下一应用。应用A执行的流量隔离方法流程如图4所示。

应用B中新增有本申请实施例提供的第二流量隔离装置,包括:接收模块、查找模块、第一调用模块、第三调用请求创建模块、第二字段设置模块和路由模块,查找模块用于识别HSF协议中是否存在预定字段,如果无,则把接收到的调用请求放入线程池2,如果有,则把调用请求放入线程池4,做到流量隔离;第三调用请求创建模块、第二字段设置模块和路由模块用于根据将不同的请求路由至不同的数据表。例如,对于一般用户发起的普通调用请求,不设置预定字段,路由模块发现JDBC协议中不存在预定字段,直接把请求路由到原始表C;测试人员发起测试请求时,给请求设置特殊的预定字段,路由模块识别到该预定字段,直接替换表名,将请求路由到映射表D。应用B执行的流量隔离方法流程分别如图5所示。

采用本申请实施例中的测试方案,请求完全在一个系统和计算机集群里被处理,正常数据存储在原始表中,测试数据存储在映射表中,数据完全存储在一个数据库中,做到了流量间互相隔离不影响和数据间的隔离互相不影响,可以有效的完成功能性测试和压力验证测试。

本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。

本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。

这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。

这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。

尽管已描述了本申请的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本申请范围的所有变更和修改。

显然,本领域的技术人员可以对本申请进行各种改动和变型而不脱离本申请的精神和范围。这样,倘若本申请的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。

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