掌桥专利:专业的专利平台
掌桥专利
首页

系统迁移性测试方法、迁移性测试系统、装置及存储介质

文献发布时间:2023-06-19 10:11:51


系统迁移性测试方法、迁移性测试系统、装置及存储介质

技术领域

本申请涉及系统测试技术领域,特别涉及一种系统迁移性测试方法、迁移性测试系统、装置及存储介质。

背景技术

在业务系统的更新换代中,往往伴随着将原本响应在老业务系统中的业务请求,转移到新业务系统中的需求。

在将老业务系统中的业务转移到目标系统之前,需要对新业务系统的可迁移性进行测试,以保证在业务系统发生改变时,不会对原本依赖于老业务系统的应用的业务执行情况造成影响,在相关技术中,在进行新业务系统的可迁移性测试时,一般是通过获取老业务系统历史上已处理过的业务请求中的一部分业务请求对新业务系统的可迁移性进行测试。

然而在上述相关技术中,通过采用离线的业务请求对新业务系统的可迁移性进行测试,数据实时性较差,从而导致对新业务系统的测试准确度较低。

发明内容

本申请关于一种系统迁移性测试方法、迁移性测试系统、装置及存储介质,基于线上真实业务请求进行系统的可迁移性测试,扩大了测试数据的覆盖范围,提高了对目标系统测试的准确度。该技术方案如下:

一方面,提供了一种系统迁移性测试方法,所述方法包括:

实时接收业务请求,所述业务请求中包含第一业务请求,所述第一业务请求是原始系统对应的接口中实时接收的业务请求中的至少一个;

按照第一顺序将所述第一业务请求分别输入所述原始系统和目标系统进行处理;

获取第一原始处理结果以及第一测试处理结果;所述第一原始处理结果是所述原始系统对所述第一业务请求进行响应得到的处理结果;所述第一测试处理结果是所述目标系统对所述第一业务请求进行响应得到的处理结果;

基于所述第一原始处理结果以及所述第一测试处理结果,确定所述目标系统的可迁移性。

在一种可能的实现方式中,所述按照第一顺序将所述第一业务请求输入所述原始系统和目标系统进行处理,包括:

将所述第一业务请求接入所述原始系统中进行处理;

响应于所述原始系统中的所述第一业务请求已处理完成,将所述第一业务请求回放到所述目标系统中。

在一种可能的实现方式中,所述响应于所述原始系统中的所述第一业务请求已处理完成,将所述第一业务请求回放到所述目标系统中,包括:

响应于所述原始系统中的所述第一业务请求已处理完成,通过API(ApplicationProgramming Interface,应用程序接口)代理将所述第一业务请求回放到所述目标系统中。

在一种可能的实现方式中,所述基于所述第一原始处理结果以及所述第一测试处理结果确定所述目标系统的可迁移性,包括:

响应于所述第一原始处理结果与所述第一测试处理结果相同,确定所述目标系统可迁移;

响应于所述第一原始处理结果与所述第一测试处理结果相异,确定所述目标系统不可迁移。

在一种可能的实现方式中,响应于所述第一原始处理结果与所述第一测试处理结果相同,所述方法还包括:

按照第二顺序将第二业务请求分别输入所述原始系统和所述目标系统进行处理;所述第二业务请求是所述原始系统对应的接口中实时接收的所述业务请求中的至少一个,所述第二顺序与所述第一顺序不同;

获取第二测试处理结果以及第二原始处理结果;所述第二原始处理结果是所述原始系统对所述第二业务请求进行响应得到的处理结果;所述第二测试处理结果是所述目标系统对所述第二业务请求进行响应得到的处理结果;

基于所述第二测试处理结果以及所述第二原始处理结果,确定所述目标系统的可迁移性。

在一种可能的实现方式中,所述按照第二顺序将第二业务请求分别输入所述原始系统和所述目标系统进行处理,包括:

将所述第二业务请求接入所述目标系统中;

响应于所述目标系统中的所述第二业务请求已处理完成,将所述第二业务请求回放到所述原始系统中。

在一种可能的实现方式中,所述方法还包括:

响应于所述第一原始处理结果与所述第一测试处理结果相异,在所述目标系统中对所述第一业务请求进行回放重试;

在预设重试次数阈值内,响应于所述第一原始处理结果与所述第一测试处理结果相异,确定所述目标系统不可迁移。

在一种可能的实现方式中,所述方法还包括:

响应于所述第二原始处理结果与所述第二测试处理结果相异,在所述原始系统中对所述第二业务请求进行回放重试;

在预设重试次数阈值内,响应于所述第二原始处理结果与所述第二测试处理结果相异,确定所述目标系统不可迁移。

在一种可能的实现方式中,执行至少一次第一系统可迁移性确定过程,直至所述第一业务请求的数量与所述原始系统对应的接口中实时接收的所述业务请求的数量相同;所述第一系统可迁移性确定过程包括:

按照所述第一顺序将所述第一业务请求分别输入所述原始系统和所述目标系统进行处理;

获取所述第一原始处理结果以及所述第一测试处理结果;

响应于所述第一原始处理结果与所述第一测试处理结果相同,基于当前所述第一业务请求的数量,对所述第一业务请求的数量进行增加;

所述基于所述第一原始处理结果以及所述第一测试处理结果,确定所述目标系统的可迁移性,包括:

响应于所述第一业务请求的数量与所述原始系统对应的接口中实时接收的所述业务请求的数量相同,基于所述第一原始处理结果以及所述第一测试处理结果,确定所述目标系统的可迁移性。

在一种可能的实现方式中,所述方法还包括:

执行至少一次第二系统可迁移性确定过程,直至所述第二业务请求的数量与所述原始系统对应的接口中实时接收的所述业务请求的数量相同;所述第二系统可迁移性确定过程包括:

按照所述第二顺序将所述第二业务请求分别输入所述原始系统和所述目标系统进行处理;

获取所述第二测试处理结果以及所述第二原始处理结果;

响应于所述第二原始处理结果与所述第二测试处理结果相同,基于当前所述第二业务请求的数量,对所述第二业务请求的数量进行增加;

所述基于所述第二测试处理结果以及所述第二原始处理结果,确定所述目标系统的可迁移性,包括:

响应于所述第二业务请求的数量与所述原始系统对应的接口中实时接收的所述业务请求的数量相同,基于所述第二测试处理结果以及所述第二原始处理结果,确定所述目标系统的可迁移性。

另一方面,提供了一种迁移性测试系统,所述系统包括:应用程序接口API代理以及数据对比工具;

所述API代理,用于按照第一顺序将所述第一业务请求分别输入所述原始系统和目标系统进行处理;所述第一业务请求是原始系统对应的接口中实时接收的所述业务请求中的至少一个;

所述数据对比工具,用于基于所述第一原始处理结果以及所述第一测试处理结果确定所述目标系统的可迁移性,所述第一原始处理结果是所述原始系统对所述第一业务请求进行响应得到的处理结果;所述第一测试处理结果是所述目标系统对所述第一业务请求进行响应得到的处理结果。

在一种可能的实现方式中,所述API代理,用于响应于所述第一原始处理结果与所述第一测试处理结果相同,按照第二顺序将第二业务请求分别输入所述原始系统和所述目标系统进行处理;所述第二业务请求是原始系统对应的接口中实时接收的所述业务请求中的至少一个,所述第二顺序与所述第一顺序不同;

所述数据对比工具,用于基于所述第二测试处理结果以及所述第二原始处理结果,确定所述目标系统的可迁移性,所述第二原始处理结果是所述原始系统对所述第二业务请求进行相应得到的处理结果;所述第二测试处理结果是所述目标系统对所述第二业务请求进行响应得到的处理结果。

另一方面,提供了一种系统迁移性的测试装置,所述装置应用于迁移性测试系统中,所述装置包括:

业务请求接收模块,用于实时接收业务请求,所述业务请求中包含第一业务请求,所述第一业务请求是原始系统对应的接口中实时接收的业务请求中的至少一个;

第一业务请求处理模块,用于按照第一顺序将所述第一业务请求分别输入所述原始系统和目标系统进行处理;

第一处理结果获取模块,用于获取第一原始处理结果以及第一测试处理结果;所述第一原始处理结果是所述原始系统对所述第一业务请求进行响应得到的处理结果;所述第一测试处理结果是所述目标系统对所述第一业务请求进行响应得到的处理结果;

第一可迁移性确定模块,用于基于所述第一原始处理结果以及所述第一测试处理结果,确定所述目标系统的可迁移性。

在一种可能的实现方式中,所述第一业务请求处理模块,包括:

第一业务请求处理子模块,用于将所述第一业务请求接入所述原始系统中进行处理;

第二业务请求处理子模块,用于响应于所述原始系统中的所述第一业务请求已处理完成,将所述第一业务请求回放到所述目标系统中。

在一种可能的实现方式中,所述第二业务请求处理子模块,用于响应于所述原始系统中的所述第一业务请求已处理完成,通过应用程序接口API代理将所述第一业务请求回放到所述目标系统中。

在一种可能的实现方式中,所述第一可迁移性确定模块,包括:

第一可迁移确定子模块,用于响应于所述第一原始处理结果与所述第一测试处理结果相同,确定所述目标系统可迁移;

第二可迁移确定子模块,用于响应于所述第一原始处理结果与所述第一测试处理结果相异,确定所述目标系统不可迁移。

在一种可能的实现方式中,所述装置还包括:

第二业务请求处理模块,用于响应于所述第一原始处理结果与所述第一测试处理结果相同,按照第二顺序将第二业务请求分别输入所述原始系统和所述目标系统进行处理;所述第二业务请求是所述原始系统对应的接口中实时接收的所述业务请求中的至少一个,所述第二顺序与所述第一顺序不同;

第二处理结果获取模块,用于获取第二测试处理结果以及第二原始处理结果;所述第二原始处理结果是所述原始系统对所述第二业务请求进行响应得到的处理结果;所述第二测试处理结果是所述目标系统对所述第二业务请求进行响应得到的处理结果;

第二可迁移性确定模块,用于基于所述第二测试处理结果以及所述第二原始处理结果,确定所述目标系统的可迁移性。

在一种可能的实现方式中,所述第二业务请求处理模块,包括:

第三业务请求处理子模块,用于将所述第二业务请求接入所述目标系统中进行处理;

第四业务请求处理子模块,用于响应于所述目标系统中的所述第二业务请求已处理完成,将所述第二业务请求回放到所述原始系统中。

在一种可能的实现方式中,所述第一可迁移性确定模块,还包括:

第一回放重试子模块,用于响应于所述第一原始处理结果与所述第一测试处理结果相异,在所述目标系统中对所述第一业务请求进行回放重试;

所述第二可迁移性确定子模块,用于在预设重试次数阈值内,响应于所述第一原始处理结果与所述第一测试处理结果相异,确定所述目标系统不可迁移。

在一种可能的实现方式中,所述第二可迁移性确定模块,还包括:

第二回放重试子模块,用于响应于所述第二原始处理结果与所述第二测试处理结果相异,在所述原始系统中对所述第二业务请求进行回放重试;

所述第四可迁移性子模块,用于在预设重试次数阈值内,响应于所述第二原始处理结果与所述第二测试处理结果相异,确定所述目标系统不可迁移。

在一种可能的实现方式中,所述装置还包括:

第一循环执行模块,用于执行至少一次第一系统可迁移性确定过程,直至所述第一业务请求的数量与所述原始系统对应的接口中实时接收的所述业务请求的数量相同;所述第一系统可迁移性确定过程包括:

按照所述第一顺序将所述第一业务请求分别输入所述原始系统和所述目标系统进行处理;

获取所述第一原始处理结果以及所述第一测试处理结果;

响应于所述第一原始处理结果与所述第一测试处理结果相同,基于当前所述第一业务请求的数量,对所述第一业务请求的数量进行增加;

所述第一可迁移性确定模块,用于响应于所述第一业务请求的数量与所述原始系统对应的接口中实时接收的所述业务请求的数量相同,基于所述第一原始处理结果以及所述第一测试处理结果,确定所述目标系统的可迁移性。

在一种可能的实现方式中,所述装置还包括:

第二循环执行模块,用于执行至少一次第二系统可迁移性确定过程,直至所述第二业务请求的数量与所述原始系统对应的接口中实时接收的所述业务请求的数量相同;所述第二系统可迁移性确定过程包括:

按照所述第二顺序将所述第二业务请求分别输入所述原始系统和所述目标系统进行处理;

获取所述第二测试处理结果以及所述第二原始处理结果;

响应于所述第二原始处理结果与所述第二测试处理结果相同,基于当前所述第二业务请求的数量,对所述第二业务请求的数量进行增加;

所述第二可迁移性确定模块,用于响应于所述第二业务请求的数量与所述原始系统对应的接口中实时接收的所述业务请求的数量相同,基于所述第二测试处理结果以及所述第二原始处理结果,确定所述目标系统的可迁移性。

另一方面,提供了一种计算机设备,所述计算机设备包含处理器和存储器,所述存储器中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、所述至少一段程序、所述代码集或指令集由所述处理器加载并执行以实现本申请实施例中提供的系统迁移性测试方法。

另一方面,提供了一种计算机可读存储介质,可读存储介质中存储有至少一条指令、至少一段程序、代码集或指令集,至少一条指令、至少一段程序、代码集或指令集由处理器加载并执行以实现上述本申请实施例中提供的系统迁移性测试方法。

另一方面,提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行上述各种可选实现方式中提供的系统迁移性测试方法。

本申请提供的技术方案带来的有益效果至少包括:

通过将在原始系统中实时接收的线上业务请求中的全部或部分获取为第一业务请求,将该第一业务请求在目标系统中进行回放,对比第一业务请求在原始系统和目标系统中分别对应的处理结果,基于对比结果确定目标系统的可迁移性。从而使得在系统迁移性的测试过程中,能够基于线上真实业务请求进行系统的可迁移性测试,扩大了测试数据的覆盖范围,提高了对目标系统测试的准确度。

附图说明

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

图1示出了本申请一示例性实施例示出的代理模式的示意图;

图2示出了本申请一示例性实施例提供的迁移性测试系统的示意图;

图3示出了本申请一示例性实施例示出的系统迁移性测试方法的流程图;

图4示出了本申请一示例性实施例示出的系统迁移性测试方法的流程图;

图5示出了本申请一示例性实施例示出的系统迁移性测试方法的流程图;

图6示出了本申请一示例性实施例示出的系统可迁移性测试过程中,业务请求执行顺序切换的示意图;

图7示出了本申请一示例性实施例示出的迁移性测试系统的示意图;

图8示出了本申请一示例性实施例示出的测试API代理以及服务代理的示意图;

图9示出了本申请一示例性实施例示出的目标系统的工作示意图;

图10示出了本申请一个示例性实施例提供的系统迁移性的测试装置的结构框图;

图11是根据一示例性实施例示出的计算机设备的结构框图。

具体实施方式

为使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请实施方式作进一步地详细描述。

首先,对本申请实施例中涉及的名词进行简单的介绍:

1)灰度测试

灰度测试,就是在某项产品或应用正式发布前,选择特定人群使用,逐步扩大其使用者数量,以便及时发现和纠正其中的问题,从而及时规避可能存在的风险。

灰度测试存在两种方式,一种是软件系统内自带灰度测试发布系统;另一种方式是使用第三方工具来辅助进行。

2)代理服务

代理(Proxy)是一种设计模式,提供了对目标对象另外的访问方式;即通过代理对象访问目标对象。如此可以在目标对象实现的基础上,增强额外的功能操作,即扩展目标对象的功能。图1示出了本申请一示例性实施例示出的代理模式的示意图,如图1所示,用户110可通过代理对象120对目标对象130进行访问,目标对象130中的信息也可以通过代理对象120反馈给用户110。

代理分为静态代理、动态代理和Cglib代理。静态代理在使用时,需要定义接口或者父类,目标对象与代理对象一起实现相同的接口或者是继承相同父类;在静态代理模式下,代理对象与目标对象要实现相同的接口,然后通过调用相同的方法来调用目标对象的方法。动态代理,也称为JDK代理,接口代理,动态代理在使用时,代理对象不需要实现接口,但是目标对象需要实现接口,代理对象的生成是利用JDK的API,动态地在内存中构建代理对象。Cglib代理,也称为子类代理,可以在内存中构建一个子类对象从而实现对目标对象功能的扩展,Cglib代理可以实现在目标对象没有实现接口的情况下代理。

可选的,代理对象可以实现为服务器;目标对象可以实现为终端或者服务器。

3)幂等

幂等是指是同一个请求执行多次,处理的结果是相同的。即任意多次执行一个幂等操作,其所产生的影响相同。

图2示出了本申请一示例性实施例提供的迁移性测试系统的示意图,如图2所示,该迁移性测试系统200包括API(应用程序接口,Application Programming Interface)代理201以及数据对比工具202。

API代理201,用于代理业务系统原有的对外提供接口,如图2中的原始API。在本申请实施例中,在API代理内部可以实现双写控制和请求分发,其中,双写是指是否进行重复执行,在本申请中表现为在老业务系统(新业务系统)中执行过一次之后,在新业务系统(老业务系统)中再执行一次;双写控制是指确定调用对应接口的业务请求中哪些进行双写,哪些不进行双写;请求分发是指在进行双写时,先将业务请求导入哪个业务系统,后导入哪个业务系统;比如,在团购订单查询API代理中,支持查询老业务系统中的团购订单,也支持查询迁移后的新业务系统中的团购订单。

在本申请实施例中,将老业务系统称为原始系统,将新业务系统称为目标系统。

数据对比工具202,用于验证原始系统的目标系统的处理结果的一致性,从而确定目标系统的可迁移性。

图3示出了本申请一示例性实施例示出的系统迁移性测试方法的流程图,该方法可以由迁移性测试系统执行,该迁移性测试系统可以是图2的迁移性测试系统,如图3所示,该方法可以包括以下步骤:

步骤310,实时接收业务请求,该业务请求中包含第一业务请求,该第一业务请求是原始系统对应的接口中实时接收到的业务请求中的一个。

原始系统是业务请求迁移前的业务系统,相关的应用程序可以通过调用原始系统对外提供的接口,即图2中的原始API,将业务请求发送到原始系统中。在对目标系统进行可迁移性测试时,采用将原始系统对应的接口中实时接收的业务请求中的全部或部分作为第一业务请求,比如,原始系统实时接收了10个业务请求,可以将10个业务请求全部获取为第一业务请求;或者,可以将10个业务请求中的3个获取为第一业务请求,该第一业务请求是对目标系统的可迁移性进行测试的业务请求。其中,第一业务请求的数量可以根据测试需求进行调节。目标系统可以是基于原始系统进行更新后的系统,或者,在原始系统的基础上进行业务扩展的业务系统,目标系统需要满足能够实现原始系统所具有的功能的需求。目标系统具有对外提供的接口,即目标API,在目标系统进行可迁移性测试期间,应用程序无法直接调用目标API进行业务请求发送。

示意性的,基于对第一业务请求占原始系统中实时接收的业务请求的比例的调节,实现对第一业务请求数量的调节;比如,可以获取原始系统对应的接口中实时接收的业务请求中50%为第一业务请求,或者,可以获取原始系统对应的中实时接收的业务请求中的20%为第一业务请求。

示意性的,基于对获取业务请求为第一业务请求的周期的调节,实现对第一业务请求数量的调节;比如,当获取的第一业务请求数量较少时,可以每隔10分钟获取一个业务请求为第一业务请求;当获取的第一业务请求的数量较多时,可以每隔1分钟获取一个业务请求为第一业务请求。

需要说明的是,上述对第一业务请求数量的控制方式为示意性的,本申请不对第一业务请求数量的控制方式进行限制。

从原始系统对应的接口中实时接收的业务请求中获取第一业务请求,可以使得对目标系统测试所依赖的第一业务请求是最新的线上业务请求,从而在目标系统测试期间,即使原始系统中存在业务更新,也能对目标系统进行相应的测试,从而使得覆盖测试场景更加全面;同时,由于线上业务请求类型的多样性,可以保证对目标系统测试时能够覆盖到应用程序的各种业务请求,从而使得对目标系统的测试更加完整。

在一种可能的实现方式中,业务请求对应有不同的类型,比如,业务请求包括下单请求、支付请求、退款请求等等。

步骤320,按照第一顺序将第一业务请求分别输入原始系统和目标系统进行处理。

在本申请实施例中,第一顺序是指,将第一业务请求先输入原始系统,由原始系统对第一业务请求进行处理,之后,再将该第一业务请求输入到目标系统中,由目标系统对该第一业务请求再进行一次处理;或者,将第一业务请求先输入目标系统,由目标系统对第一业务请求进行处理,之后,再将第一业务请求输入到原始系统中,由原始系统对该第一业务请求再进行一次处理。

在一种可能的实现方式中,为保证业务请求响应的即时性,先将第一业务请求输入到原始系统,再将第一业务请求输入到目标系统。

步骤330,获取第一原始处理结果以及第一测试处理结果;该原始处理结果是原始系统对第一业务请求进行响应得到的处理结果;该第一测试处理结果是目标系统对第一业务请求进行响应得到的处理结果。

第一业务请求是对原始系统对应的接口中实时接收的业务请求中,用于对目标系统的可迁移性进行测试的业务请求的总称,若原始系统对应的接口中实时接收的业务请求的个数为m,第一业务请求的个数为n,则n≤m。每一个第一业务请求都对应有一个原始处理结果和一个第一测试处理结果,在对目标系统测试时,需要保证每一个第一业务请求对应的第一原始处理结果和第一测试处理结果一致,才能确认目标系统的可迁移性,以保后证在业务请求迁移后,依赖于原始系统的应用程序能够通过目标系统获得正确的反馈结果。

在一种可能的实现方式中,响应于存在任意一个第一业务请求对应的第一原始处理结果与第一测试处理结果不相同,打印对应字段及对应的值,同时执行报警操作。

由于本次系统迁移性测试是基于线上实时的业务请求进行的,在完成对系统迁移性测试的同时,还需保证对线上实时业务请求的响应,为避免由于目标系统的不稳定造成的对业务请求处理结果的不稳定,在一种可能的实现方式中,在本实施例中,以原始系统中处理所得的第一原始处理结果作为对应于第一业务请求的反馈结果,向对应的应用程序进行结果反馈,将目标系统中处理所得的第一测试处理结果作为数据进行存储对比,而不向对应的应用程序进行反馈。比如,在当第一业务请求为下单请求时,原始系统响应于该下单请求进行相关处理后,创建对应的订单数据,并向对应的应用程序进行订单数据反馈;之后,将该下单请求输入到目标系统中,目标系统对该下单请求进行相关处理后,同样创建了一个订单数据,但对于同一个下单请求,只向对应的应用程序进行一次对应的处理结果反馈;若对于同一个下单请求进行多次结果反馈,比如,对于同一个下单请求向用户反馈了两次订单数据,则会对用户体验造成影响,同时会造成系统数据错误,因此,对于目标系统所得的订单数据,只用于数据存储比较,而不执行相关的反馈步骤。也就是说,对于同一个第一业务请求,只对相应的应用程序进行一次反馈。

步骤340,基于第一原始处理结果以及第一测试处理结果,确定目标系统的可迁移性。

在一种可能的实现方式中,在对第一业务请求进行回放时,即将第一业务请求重新输入目标系统中进行处理时,由于网络传输质量等原因,目标系统中会出现基于第一业务请求的处理操作已经执行成功,比如生成对应的处理数据或者生成对应的调用参数,但对应该处理操作的处理数据的数据库写入操作,或者,对应于该处理操作进行的基于调用参数对外部接口的调用操作执行失败,这种情况也会导致目标系统对第一业务请求的处理结果与原始系统对该第一业务请求的处理结果不同,但并非目标系统存在问题。

为避免上述情况对系统测试的影响,在一种可能的实现方式中,响应于在原始系统中的第一业务请求执行成功,而目标系统中的该第一业务请求执行失败,在目标系统中对该第一业务请求进行重试。以第一业务请求为下单请求为例,目标系统已经基于下单请求创建了相应的订单数据,但未将订单数据创建对应的数据写入对应的数据库中,第一测试处理结果表现为创建订单失败,但原始处理结果表现为创建订单成功,在这种情况下,目标系统对该下单请求的处理结果与原始系统对该下单请求的处理结果不同,需要对该下单请求进行回放重试,也就是将该下单请求重新输入到目标系统中,重新处理。

在一种可能的实现方式中,对目标系统的测试持续进行的,即在预设时间段内,持续执行如步骤310至步骤340的步骤,直至预设时间结束,在此期间内,响应于实时获取的第一业务请求对应的第一原始处理结果与第一测试处理结果始终保持一致,则确定目标系统可迁移。

综上所述,本申请实施例提供的系统迁移性测试方法,通过将在原始系统对应的接口中实时接收的线上业务请求中的全部或部分获取为第一业务请求,将第一业务请求按照一定的输入顺序,分别输入到原始系统和目标系统中进行处理,基于第一业务请求在原始系统和目标系统中分别对应的处理结果,确定目标系统的可迁移性。从而使得在系统迁移性的测试过程中,能够基于线上真实业务请求进行系统的可迁移性测试,扩大了测试数据的覆盖范围,提高了对目标系统测试的准确度。

在一种可能的实现方式中,在系统迁移性的测试中,对第一业务请求的处理时,先将第一业务请求输入到原始系统,再将第一业务请求输入到目标系统。图4示出了本申请一示例性实施例示出的系统迁移性测试方法的流程图,该方法可以由迁移性测试系统执行,该迁移性测试系统可以是图2的迁移性测试系统,如图4所示,该方法可以包括以下步骤:

步骤410,实时接收业务请求,该业务请求中包含第一业务请求,该第一业务请求是原始系统对应的接口中实时接收的业务请求中的至少一个。

在一种可能的实现方式中,为保证系统迁移性测试过程中不对外部系统造成影响,保持迁移性测试系统对外提供的接口不变,即保持为原始系统对应的接口;对于原始系统的接口中接收到的业务请求,通过API代理进行双写控制和流量分发,以实现对目标系统的迁移性测试。

步骤420,将第一业务请求接入原始系统中进行处理。

在一种可能的实现方式中,在确认某一业务请求为第一业务请求之后,API代理先将该业务请求输入到原始系统中进行处理,并基于原始系统中该业务请求的处理进度,确定将该业务请求回放到目标系统的时间。

步骤430,响应于原始系统中的第一业务请求已处理完成,将第一业务请求回放到目标系统中。

在一种可能的实现方式中,响应于原始系统中的第一业务请求已处理完成,通过API代理将第一业务请求回放到目标系统中。

响应于原始系统中的第一业务请求处理失败,则停止将第一业务请求回放到目标系统中的步骤。由于原始系统是通过测试的业务系统,若其对第一业务请求响应失败,则证明第一业务请求不合法或者无效,那么,将其回放到目标系统中的没有意义的,因此,通过多线程的方式,将原始系统中已处理完成的第一业务请求异步回放到目标系统中,可以避免对不合法的业务请求的重复执行,节省迁移性测试系统的处理资源。

在一种可能的实现方式中,可以通过API代理同时将第一业务请求分发到原始系统和目标系统中,由原始系统和目标系统对同一第一业务请求进行同步处理,但向外部系统的反馈结果是原始系统基于第一业务请求的处理结果。

本申请以对第一业务请求进行异步回放为例,对本申请提供的方法进行说明。

步骤440,获取第一原始处理结果以及第一测试处理结果;该第一原始处理结果是原始系统对第一业务请求进行响应得到的处理结果;该第一测试处理结果是目标系统对第一业务请求进行响应得到的处理结果。

在一种可能的实现方式中,业务系统基于第一业务请求调用外部服务,和/或,基于第一业务请求对对应的数据库中的数据进行修改,该业务系统可以是原始系统,也可以是目标系统。

在一种可能的实现方式中,处理结果包括基于第一业务请求向对应的应用程序反馈的接口返回值,基于第一业务请求调用外部服务时所使用的输入参数,基于第一业务请求生成的数据库数据中的至少一种。

业务系统的接口返回值,会经过API代理向应用程序进行反馈,可以通过API代理获取业务系统的接口返回值,用以进行对比。

当业务系统基于第一业务请求调用外部服务时,业务系统会基于第一业务请求生成的调用外部服务接口时所使用的输入参数。当目标系统可迁移时,其对于第一业务请求处理产生的输入参数,与原始系统对于同一第一业务请求处理产生的输入参数保持一致。因此,为测试目标系统的可迁移性,可以比较业务系统基于第一业务请求生成的,在调用外部服务接口时所使用的输入参数的一致性。

在一种可能的实现方式中,为避免在系统可迁移性测试过程中,原始系统与目标系统基于同一业务请求对外部服务的重复调用,迁移性测试系统中设置服务代理,用以接收原始系统和目标系统基于同一业务请求分别产生的输入参数,并基于先接收到的基于该业务请求产生的输入参数访问外部服务,并缓存访问结果;响应于目标系统基于该业务请求产生的输入参数与原始系统基于该业务请求产生的输入参数相同,将缓存的对应的访问结果反馈给回放该业务请求的业务系统,从而避免了对外部服务的重复访问。

在基于第一业务请求的系统可迁移性测试阶段,原始系统先基于第一业务请求产生对应的输入参数,服务代理基于原始系统产生的输入参数,访问外部服务,缓存访问结果,当接收到目标服务产生的基于同一第一业务请求的输入参数时,若两者相同,则服务代理将缓存的对应的访问结果反馈给目标系统,避免对外部服务的重复访问。

基于上述说明,在一种可能的实现方式中,获取业务系统基于第一业务请求生成的调用外部服务接口时所使用的输入参数的过程实现为:

通过服务代理获取原始系统基于第一业务请求调用外部服务接口时所使用的输入参数,以及目标系统基于该第一业务请求调用外部服务接口时所使用的输入参数。

当业务系统基于第一业务请求对对应数据库中的数据进行修改时,从原始系统对应的原始数据库中获取与第一业务请求相关的存储数据,从目标系统对应的目标数据库中获取与第一业务请求相关的存储数据。

步骤450,响应于第一原始处理结果与第一测试处理结果相同,确定目标系统可迁移。

在一种可能的实现方式中,在系统迁移性的测试中进行回放的第一业务请求的数量是逐步增加的,直至第一业务请求的数量与原始系统对应的接口中实时接收的业务请求的数量相同。基于第一业务请求确定系统可迁移性的过程实现为:

执行至少一次第一系统可迁移性确定过程,直至第一业务请求的数量与原始系统对应的接口中实时接收到的业务请求的数量相同;该第一系统可迁移性确定过程包括:

步骤451,按照第一顺序将第一业务请求分别输入原始系统和目标系统进行处理。

步骤452,获取第一原始处理结果以及第一测试处理结果。

步骤453,响应于第一原始处理结果与第一测试处理结果相同,基于当前第一业务请求的数量,对第一业务请求的数量进行增加。

也就是说,对目标系统进行阶段性测试。

在对目标系统进行测试的过程中,逐步增加第一业务请求的数量,直至第一业务请求的数量与原始系统对应的中实时接收的业务请求的数量相同。比如,在测试初期将原始系统实时接收的业务请求中的1%作为第一业务请求,回放到目标系统中,在确认这一部分第一业务请求在目标系统中的处理结果均与对应在原始系统中的处理结果一致时,逐步增加第一业务请求占原始系统对应的接口实时接收的业务请求的比例,比如2%、5%、10%、50%,直至100%。

若目标系统存在问题,则可通过逐渐增加的第一业务请求的数量的测试,将问题暴露出来,而无需对所有的业务请求都进行回放,从而减轻了迁移性测试系统的测试压力。

步骤454,响应于第一业务请求的数量与原始系统对应的接口中实时接收的业务请求的数量相同,基于第一原始处理结果以及第一测试处理结果,确定目标系统的可迁移性。

当第一业务请求的数量与原始系统中实时接收的业务请求的数量相同时,且每一个第一业务请求在目标系统中的处理结果都对应与其在原始系统中的处理结果相同时,确定该目标系统可迁移。

步骤460,响应于第一原始处理结果与第一测试处理结果相异,确定目标系统不可迁移。

基于上述说明可知,第一原始处理结果与第一测试处理结果包含基于第一业务请求向对应的应用程序反馈的接口返回值,基于第一业务请求调用外部服务时所使用的输入参数,以及对应数据库中与该第一业务请求相关的存储数据中的至少一种子处理结果。当处理结果中包含上述至少两种子处理结果时,当第一原始处理结果与第一测试处理结果中各个子处理结果都对应相同时,确认第一原始处理结果与第一测试处理结果相同;当第一原始处理结果与第一测试处理结果中存在一个子处理结果不同时,确认第一原始处理结果与第一测试处理结果相异。

在一种可能的实现方式中,为避免由于网络质量的原因导致的处理结果的不同,而导致对系统可迁移性的误判断,响应于第一原始处理结果与第一测试处理结果相异,在目标系统中对第一业务请求进行回放重试;

在预设重试次数阈值内,响应于第一原始处理结果与第一测试处理结果相异,确定目标系统不可迁移。

在一种可能的实现方式中,设置重试次数阈值,响应于回放重试次数达到重试次数阈值,目标系统对应处理结果与原始系统对应处理结果之间仍存在差异,确定第一原始处理结果以及第一测试处理结果相异。

在一种可能的实现方式中,当第一业务请求对应的处理结果是对对应的数据库中的数据进行修改,响应于目标系统在回放第一业务请求时,其对应的操作已完成,即其对对应的数据库中的数据修改操作已完成,但由于网络传输质量等原因,未将对应的数据修改成功的处理结果返回给目标系统,而导致目标系统的处理结果与原始系统的处理结果相异。为避免上述情况,需要对该第一请求进行回放重试,为避免回放重试时对数据库的多次修改,迁移性测试系统中设置方法代理,用以缓存被回放的第一业务请求的输入数据和返回结果,当再次对该第一业务请求进行处理时,将缓存的返回结果返回给目标系统,做到回放幂等,从而避免对对应数据库进行重复修改。

以第一业务请求为下单请求为例,在目标系统中,第一次回放该下单请求时,已完成响应于该下单请求对库存的扣除,但在进行库存扣除成功的写操作时,未写入成功,导致目标系统的处理结果与原始系统的处理结果不同;在回放重试时,仍需要目标系统对该下单请求进行响应,但对于同一下单请求,对对应的库存只扣除一次,因此,将方法代理中记录的库存已扣除的结果返回给目标系统,以避免针对同一笔下单请求对库存的重复扣除。

综上所述,本申请实施例提供的系统迁移性测试方法,通过将在原始系统对应的接口中实时接收的线上业务请求中的获取为第一业务请求,在原始系统对第一业务请求处理完成之后,将该第一业务请求在目标系统中进行回放,基于第一业务请求在原始系统和目标系统中分别对应的处理结果确定目标系统的可迁移性。从而使得在系统迁移性的测试过程中,能够基于线上真实业务请求进行系统的可迁移性测试,扩大了测试数据的覆盖范围,提高了对目标系统测试的准确度。

为进一步提高对目标系统测试的准确度,在图3或图4所示实施例的基础上,增加第二阶段的测试,即由目标系统先进行第二业务请求处理后,将第二业务请求回放到原始系统的测试过程。图5示出了本申请一示例性实施例示出的系统迁移性测试方法的流程图,该方法可以由迁移性测试系统执行,该迁移性测试系统可以是图2的迁移性测试系统,如图5所示,该方法可以包括以下步骤:

步骤510,实时接收业务请求,该业务请求中包含第一业务请求,该第一业务请求是原始系统对应的接口中实时接收的业务请求中的至少一个。

步骤520,按照第一顺序将第一业务请求分别输入原始系统和目标系统进行处理。

步骤530,获取第一原始处理结果以及第一测试处理结果;该第一原始处理结果是原始系统对第一业务请求进行响应得到的处理结果;该第一测试处理结果是目标系统对第一业务请求进行响应得到的处理结果。

步骤510至步骤530的步骤可以参考图3或图4所示实施例的对应内容,此处不再赘述。

步骤540,响应于第一原始处理结果与第一测试处理结果相同,按照第二顺序将第二业务请求分别输入原始系统和目标系统进行处理;该第二业务请求是原始系统对应的接口中实时接收的业务请求中的至少一个,该第二顺序与第一顺序不同。

在一种可能的实现方式中,响应于第一业务请求的数量与原始系统中实时接收的业务请求的数量相同,且第一原始处理结果与第一测试处理结果一致,按照第二顺序将第二业务请求分别输入原始系统和目标系统进行处理。

也就是说,目标系统回放原始系统中实时处理的所有业务请求,且能够实现双方的处理结果一致时,按照第二顺序将第二业务请求分别输入原始系统和目标系统进行处理。

在一种可能的实现方式中,响应于在预设时间段内,第一原始处理结果与第一测试处理结果一致,按照第二顺序将第二业务请求分别输入原始系统和目标系统进行处理。也就是说,当按照第一顺序进行处理时,双方的对比结果一致,且保持一段时间之后,开启系统测试的第二阶段。

在一种可能的实现方式中,按照第二顺序将第二业务请求分别输入原始系统和目标系统进行处理,包括:

将第二业务请求接入目标系统中进行处理;

响应于目标系统中的第二业务请求已处理完成,将第二业务请求回放到所述原始系统中。

在一种可能的实现方式中,迁移性测试系统通过API代理,将第二业务请求导入目标系统,也就是说,对于通过原始接口接收到的业务请求,API代理将其中的第二业务请求分配到目标系统中先执行,响应于目标系统中的第二业务请求已处理完成,将第二业务请求回放到原始系统中。而对于业务请求中的非第二业务请求,则仍分配到原始系统中,由原始系统进行处理。

图6示出了本申请一示例性实施例示出的系统可迁移性测试过程中,业务请求执行顺序切换的示意图。图6中的A部分示出了系统可迁移性测试的第一阶段中,原始系统610为主执行系统,目标系统620为次执行系统的示意图,即API代理先将第一业务请求发送给原始系统进行处理,当原始系统处理完成后,将对应的第一业务请求回放到目标系统中;图6中的B部分示出了系统可迁移性测试的第二阶段中,目标系统620为主执行系统,原始系统610为次执行系统的示意图,即API代理先将第二业务请求发送给目标系统进行处理,当目标系统处理完成后,将对应的第二业务请求回放到原始系统中。

在一种可能的实现方式中,在目标系统对第二业务请求先执行的过程中,在原始系统中处理的非第二业务请求,仍会在目标系统中再处理一次,在进行业务请求处理反馈时,将先处理该业务请求的业务系统的处理结果进行反馈,或者,将原始系统对该业务请求的处理结果进行反馈。

其中,主执行系统是先对业务请求进行处理的业务系统,次执行系统是后对业务请求进行处理的业务系统。

步骤550,获取第二测试处理结果以及第二原始处理结果;该第二原始处理结果是原始系统对第二业务请求进行响应得到的处理结果;该第二测试处理结果是目标系统对第二业务请求进行响应得到的处理结果。

其中,获取第二目标处理结果以及第二原始处理结果的步骤可以参考图3或图4所示实施例中获取第一原始处理结果以及第一目标处理结果的说明,此处不再赘述。

在一种可能的实现方式中,在系统测试的第二阶段,可以将目标系统对第二业务请求的处理结果作为对外反馈的处理结果,或者,也可以将原始处理回放该第二业务请求的处理结果作为对外反馈的处理结果,本申请对此不做限制。

步骤560,基于第二测试处理结果以及第二原始处理结果,确定目标系统的可迁移性。

在一种可能的实现方式中,响应于第二测试处理结果于第二原始处理结果相同,确定目标系统可迁移。

在一种可能的实现方式中,在系统迁移性的测试中,进行回放的第二业务请求的数量是逐步增加的,直至第二业务请求的数量与原始系统对应的接口中实时接收的业务请求的数量相同。基于第二业务请求确定系统可迁移性的过程实现为:

执行至少一次第二系统可迁移性确定过程,直至所述第二业务请求的数量与原始系统对应的接口中实时接收的业务请求的数量相同;该第二系统可迁移性确定过程包括:

步骤561,按照第二顺序将第二业务请求分别输入原始系统和目标系统进行处理。其中,第二顺序与第一顺序不同。

步骤562,获取第二测试处理结果以及第二原始处理结果。

步骤563,响应于第二原始处理结果与第二测试处理结果相同,基于当前第二业务请求的数量,对第二业务请求的数量进行增加。

步骤564,响应于第二业务请求的数量与原始系统对应的接口中实时接收的业务请求的数量相同,基于第二测试处理结果以及第二原始处理结果,确定目标系统的可迁移性。

在一种可能的实现方式中,响应于第二测试处理结果于第二原始处理结果相异,确定目标系统不可迁移。

在一种可能的实现方式中,为避免由于网络质量的问题造成的第二测试处理结果于第二原始处理结果相异的情况,响应于第二原始处理结果与第二测试处理结果相异,在原始系统中对第二业务请求进行回放重试;

在预设重试次数阈值内,响应于第二原始处理结果与第二测试处理结果相异,确定目标系统不可迁移。

上述原始系统对第二测试请求进行回放重试的过程可以参考图4所示实施例中,目标系统对第一测试请求进行回放重试的过程,此处不再赘述。

在第二测试请求回放重试的过程中,若第二业务请求对应的处理结果是对对应的数据库中的数据进行修改,响应于原始系统在回放第二业务请求时,其对应的操作已完成,即其对对应的数据库中的数据修改已完成,但由于网络传输质量等原因,未将对应的数据修改成功的结果返回给原始系统,而导致原始系统的处理结果与目标系统的处理结果相异,需要对该第二请求进行回放重试,此时,方法代理会将缓存的与第二业务请求相关的返回结果返回给原始系统,做到回放幂等,避免对数据库的多次修改。

在一种可能的实现方式中,系统迁移性测试系统通过数据对比工具对原始处理结果与目标处理结果进行对比。

在一种可能的实现方式中,原始系统与目标系统中针对同一目标业务请求生成了不同的订单编号,为关联两者之间的订单,在回放该目标业务请求的系统生成的订单中设置回放请求标记,用以建立原始系统中的订单编号与目标系统中的订单编号之间的映射关系,即通过原始系统的订单编号可以查询到目标系统的订单编号,通过目标系统的订单编号可以查询到原始系统的订单编号。

在一种可能的实现方式中,在进行原始处理结果与目标处理对比时,可以配置排除不需要对比的字段,比如,在原始系统与目标系统中针对同一个目标业务请求生成的不同的订单编号,若两者进行比较会造成对比结果指示不一致的情况,但两个的订单编号存在相应的映射关系,对应同一目标业务请求,若将此作为对比字段,会对系统可迁移性测试造成影响,因此,可以将订单编号获取为不需要对比的字段。

在一种可能的实现方式中,由于原始系统与目标系统中对数据的存储格式不同,会导致针对同一内容的数据的对比结果指示不一致的情况,比如,对同一内容的数据,在目标系统中的存储格式为json string,而在原始系统中的存储格式为json;再比如,对于金额数据存储,对于1元的流水,由于数据存储格式的不同,在目标系统对应的数据库中存储为1.00,而在原始系统对应的数据库中存储为1.0,两者都用于存储1元的流水,但由于存储格式的不同会导致对比结果指示两者不一致;基于上述情况,可以通过数据对比工具,将数据格式进行统一后,再进行对比,以避免由于数据存储格式不一致的问题导致的对对比结果的误判断。

综上所述,本申请实施例提供的系统迁移性测试方法,通过将在原始系统对应的接口中实时接收的线上业务请求中的全部或部分获取为第一业务请求,将该第一业务请求在目标系统中进行回放,对比目标业务请求在原始系统和目标系统中分别对应的处理结果,在上述过程中逐步增加第一业务请求占原始系统对应的接口中实时接收的线上业务请求的比例,对目标系统进行不同程度的测试,且在确定目标系统回放第一业务请求无误后,将业务请求逐步转移到目标系统中的过程中,在原始系统中对目标系统处理过的业务请求进行回放记录,进一步进行测试,基于对比结果确定目标系统的可迁移性。从而使得在系统迁移性的测试过程中,能够基于线上真实业务请求进行系统的可迁移性测试,扩大了测试数据的覆盖范围,提高了对目标系统测试的准确度。

同时,在第二测试阶段,当目标系统运行出现问题时,由于原始系统中保存有全部的业务请求数据,可以及时将业务请求切换到原始系统中进行处理,因此,提高了系统测试过程中,业务系统对外业务的安全性。

请参考图7,其示出了本申请一示例性实施例示出的迁移性测试系统的示意图,如图7所示,该迁移性测试系统700由API代理701、方法代理702、服务代理703以及数据对比工具704构成。

该API代理701,用于按照第一顺序将第一业务请求分别输入原始系统和目标系统进行处理;该第一业务请求是原始系统对应的接口中实时接收的业务请求中的至少一个。

该API代理,还用于响应于第一原始处理结果与第一测试处理结果相同,按照第二顺序将第二业务请求分别输入原始系统和目标系统进行处理;该第二业务请求是原始系统对应的接口中实时接收的业务请求中的至少一个,该第二顺序与第一顺序不同。

该方法代理702,用于当业务请求对应的处理结果是对对应的数据库中的数据进行修改时,响应于第一次回放业务请求时存在对应于该业务请求的操作结果,记录该业务请求对应的操作结果;响应于回放重试第一业务请求,赋予回放重试该业务请求的业务系统相同的操作结果,以使得回放重试该业务请求的系统能够基于操作结果获得对应的处理结果,避免基于同一业务请求对数据库进行重复修改。

该服务代理703,用于,当业务请求对应的处理结果是生成调用外部服务接口时所使用的输入参数时,根据该输入参数,调用外部服务接口,访问与第一业务请求相关的外部服务;

同时,记录外部服务的反馈结果,响应于接收到回放业务请求的业务系统发送的相同的输入参数,将该反馈结果返回给回放业务请求的业务系统。

在系统测试过程中,原始系统和目标系统基于同一类业务请求所对应的外部服务是同一个外部服务,比如,对于原始系统在对第一业务请求进行处理后需要调用收银台服务,目标系统在对该第一业务请求进行处理后也需要调用收银台服务,但对于同一业务请求,外部服务只应响应一次,若对同一业务请求响应两次,则会对外部系统造成影响,因此,为避免系统测试对外部服务的影响,迁移性测试系统通过服务代理,记录外部服务的反馈结果,在接收到回放业务请求的系统发送的相同的输入参数时,直接将对应的反馈结果返回给回放业务请求的系统,而不会再次执行对外部服务的调用操作,从而不影响外部服务的正常运行。

该数据对比工具704,用于基于第一原始处理结果以及第一测试处理结果确定目标系统的可迁移性,第一原始处理结果是原始系统对第一业务请求进行响应得到的处理结果;第一测试处理结果是目标系统对第一业务请求进行响应得到的处理结果;基于第一原始处理结果以及第一测试处理结果,确定目标系统的可迁移性。

该数据对比工具704,还用于基于第二测试处理结果以及第二原始处理结果,确定目标系统的可迁移性,第二原始处理结果是原始系统对第二业务请求进行相应得到的处理结果;第二测试处理结果是目标系统对第二业务请求进行响应得到的处理结果;基于第二测试处理结果以及第二原始处理结果,确定目标系统的可迁移性。

在一种可能的实现方式中,迁移性测试系统在引入API代理、服务代理之前,需要对API代理以及服务代理进行灰度测试。图8示出了本申请一示例性实施例示出的测试API代理以及服务代理的示意图,如图8所示,图8中的A部分示出了原始系统的工作示意图,以应用程序为例,如图8中的A部分所示,应用程序通过调用原始API将业务请求发送给原始系统,原始系统对其对应的数据库中的存储数据进行修改,和/或,基于业务请求调用外部服务。图8中的B部分示出了对API代理进行测试的示意图,如图8中的B部分所示,将原始API接收到的部分业务请求灰度到API代理810中,监测API代理810能否将这部分业务请求发送给原始系统,若能够实现,则将通过原始API接口接收到的所有业务请求通过API代理810发送给原始系统,即如图8中的C部分所示。图8中的C部分示出了对服务代理进行测试的示意图,如图8中的C部分所示,将原始系统基于业务请求调用外部服务的部分调用步骤灰度到服务代理820中,表现为原始系统基于业务请求通过服务代理820调用外部服务,测试服务代理820能够实现这部分调用步骤,若能够实现,则将原始系统基于业务请求调用外部服务的过程,替换为原始系统基于业务请求通过服务代理820调用外部服务,以为对目标系统的测试做准备。

综上所述,本申请实施例提供的迁移性测试系统,通过将在原始系统中实时接收的线上业务请求中的全部或部分获取为第一业务请求,将该第一业务请求在目标系统中进行回放,对比第一业务请求在原始系统和目标系统中分别对应的处理结果,基于对比结果确定目标系统的可迁移性。从而使得在系统迁移性的测试过程中,能够基于线上真实业务请求进行系统的可迁移性测试,扩大了测试数据的覆盖范围,提高了对目标系统测试的准确度。

在目标系统通过系统迁移性测试后,使用目标系统替换原始系统,将原始系统以及相关代理服务下线,完成系统迁移。对应于图8中A部分所示的原始系统的工作示意图,图9示出了本申请一示例性实施例示出的目标系统的工作示意图,以应用程序为例,如图9所示,应用程序通过调用目标系统对应的目标API将业务请求发送给目标系统910,目标系统对其对应的数据库中的存储数据进行修改,和/或,基于业务请求调用外部服务,从而完成系统的迁移。

请参考图10,其示出了本申请一个示例性实施例提供的系统迁移性的测试装置的结构框图,该装置应用于迁移性测试系统中,该迁移性测试系统可以是图2的迁移性测试系统,如图10所示,该装置包括:

业务请求接收模块1010,用于实时接收业务请求,该业务请求中包含第一业务请求,该第一业务请求是原始系统对应的接口中实时接收的业务请求中的至少一个;

第一业务请求处理模块1020,用于按照第一顺序将第一业务请求分别输入原始系统和目标系统进行处理;

第一处理结果获取模块1030,用于获取第一原始处理结果以及第一测试处理结果;该第一原始处理结果是原始系统对第一业务请求进行响应得到的处理结果;第一测试处理结果是目标系统对第一业务请求进行响应得到的处理结果;

第一可迁移性确定模块1040,用于基于第一原始处理结果以及第一测试处理结果,确定目标系统的可迁移性。

在一种可能的实现方式中,该第一业务请求处理模块1020,包括:

第一业务请求处理子模块,用于将第一业务请求接入原始系统中进行处理;

第二业务请求处理子模块,用于响应于原始系统中的第一业务请求已处理完成,将第一业务请求回放到目标系统中。

在一种可能的实现方式中,该第二业务请求处理子模块,用于响应于原始系统中的第一业务请求已处理完成,通过应用程序接口API代理将第一业务请求回放到目标系统中。

在一种可能的实现方式中,该第一可迁移性确定模块1040,包括:

第一可迁移确定子模块,用于响应于第一原始处理结果与第一测试处理结果相同,确定目标系统可迁移;

第二可迁移确定子模块,用于响应于第一原始处理结果与第一测试处理结果相异,确定目标系统不可迁移。

在一种可能的实现方式中,该装置还包括:

第二业务请求处理模块,用于响应于第一原始处理结果与第一测试处理结果相同,按照第二顺序将第二业务请求分别输入原始系统和目标系统进行处理;第二业务请求是原始系统对应的接口中实时接收的业务请求中的至少一个,该第二顺序与第一顺序不同;

第二处理结果获取模块,用于获取第二测试处理结果以及第二原始处理结果;该第二原始处理结果是原始系统对第二业务请求进行响应得到的处理结果;第二测试处理结果是目标系统对第二业务请求进行响应得到的处理结果;

第二可迁移性确定模块,用于基于第二测试处理结果以及第二原始处理结果,确定目标系统的可迁移性。

在一种可能的实现方式中,该第二业务请求处理模块,包括:

第三业务请求处理子模块,用于将第二业务请求接入目标系统中进行处理;

第四业务请求处理子模块,用于响应于目标系统中的第二业务请求已处理完成,将第二业务请求回放到原始系统中。

在一种可能的实现方式中,该第一可迁移性确定模块1040,还包括:

第一回放重试子模块,用于响应于第一原始处理结果与第一测试处理结果相异,在目标系统中对第一业务请求进行回放重试;

该第二可迁移性确定子模块,用于在预设重试次数阈值内,响应于第一原始处理结果与第一测试处理结果相异,确定目标系统不可迁移。

在一种可能的实现方式中,该第二可迁移性确定模块,还包括:

第二回放重试子模块,用于响应于第二原始处理结果与第二测试处理结果相异,在原始系统中对第二业务请求进行回放重试;

该第四可迁移性子模块,用于在预设重试次数阈值内,响应于第二原始处理结果与第二测试处理结果相异,确定目标系统不可迁移。

在一种可能的实现方式中,该装置还包括:

第一循环执行模块,用于执行至少一次第一系统可迁移性确定过程,直至第一业务请求的数量与原始系统对应的接口中实时接收的业务请求的数量相同;该第一系统可迁移性确定过程包括:

按照第一顺序将第一业务请求分别输入原始系统和目标系统进行处理;

获取第一原始处理结果以及第一测试处理结果;

响应于第一原始处理结果与第一测试处理结果相同,基于当前第一业务请求的数量,对第一业务请求的数量进行增加;

该第一可迁移性确定模块1040,用于响应于第一业务请求的数量与原始系统对应的接口中实时接收的业务请求的数量相同,基于第一原始处理结果以及第一测试处理结果,确定目标系统的可迁移性。

在一种可能的实现方式中,该装置还包括:

第二循环执行模块,用于执行至少一次第二系统可迁移性确定过程,直至第二业务请求的数量与原始系统对应的接口中实时接收的业务请求的数量相同;该第二系统可迁移性确定过程包括:

按照第二顺序将第二业务请求分别输入原始系统和目标系统进行处理;

获取第二测试处理结果以及第二原始处理结果;

响应于第二原始处理结果与第二测试处理结果相同,基于当前第二业务请求的数量,对第二业务请求的数量进行增加;

该第二可迁移性确定模块,用于响应于第二业务请求的数量与原始系统对应的接口中实时接收的业务请求的数量相同,基于第二测试处理结果以及第二原始处理结果,确定目标系统的可迁移性。

综上所述,本申请实施例提供的系统迁移性的测试装置,应用于迁移性测试系统中,通过将在原始系统中实时接收的线上业务请求中的全部或部分获取为第一业务请求,将该第一业务请求在目标系统中进行回放,对比第一业务请求在原始系统和目标系统中分别对应的处理结果,基于对比结果确定目标系统的可迁移性。从而使得在系统迁移性的测试过程中,能够基于线上真实业务请求进行系统的可迁移性测试,扩大了测试数据的覆盖范围,提高了对目标系统测试的准确度。

图11是根据一示例性实施例示出的计算机设备1100的结构框图。该计算机设备可以实现为本申请上述方案中的迁移性测试系统中的API代理、方法代理、服务代理以及数据对比工具。

所述计算机设备1100包括中央处理单元(Central Processing Unit,CPU)1101、包括随机存取存储器(Random Access Memory,RAM)1102和只读存储器(Read-OnlyMemory,ROM)1103的系统存储器1104,以及连接系统存储器1104和中央处理单元1101的系统总线1105。所述计算机设备1100还包括帮助计算机内的各个器件之间传输信息的基本输入/输出系统(Input/Output系统,I/O系统)1106,和用于存储操作系统1113、应用程序1114和其他程序模块1115的大容量存储设备1107。

所述基本输入/输出系统1106包括有用于显示信息的显示器1108和用于用户输入信息的诸如鼠标、键盘之类的输入设备1109。其中所述显示器1108和输入设备1109都通过连接到系统总线1105的输入输出控制器1110连接到中央处理单元1101。所述基本输入/输出系统1106还可以包括输入输出控制器1110以用于接收和处理来自键盘、鼠标、或电子触控笔等多个其他设备的输入。类似地,输入输出控制器1110还提供输出到显示屏、打印机或其他类型的输出设备。

所述大容量存储设备1107通过连接到系统总线1105的大容量存储控制器(未示出)连接到中央处理单元1101。所述大容量存储设备1107及其相关联的计算机可读介质为计算机设备1100提供非易失性存储。也就是说,所述大容量存储设备1107可以包括诸如硬盘或者只读光盘(Compact Disc Read-Only Memory,CD-ROM)驱动器之类的计算机可读介质(未示出)。

不失一般性,所述计算机可读介质可以包括计算机存储介质和通信介质。计算机存储介质包括以用于存储诸如计算机可读指令、数据结构、程序模块或其他数据等信息的任何方法或技术实现的易失性和非易失性、可移动和不可移动介质。计算机存储介质包括RAM、ROM、可擦除可编程只读寄存器(Erasable Programmable Read Only Memory,EPROM)、电子抹除式可复写只读存储器(Electrically-Erasable Programmable Read-OnlyMemory,EEPROM)、闪存或其他固态存储其技术,CD-ROM、数字多功能光盘(DigitalVersatile Disc,DVD)或其他光学存储、磁带盒、磁带、磁盘存储或其他磁性存储设备。当然,本领域技术人员可知所述计算机存储介质不局限于上述几种。上述的系统存储器1104和大容量存储设备1107可以统称为存储器。

根据本申请的各种实施例,所述计算机设备1100还可以通过诸如因特网等网络连接到网络上的远程计算机运行。也即计算机设备1100可以通过连接在所述系统总线1105上的网络接口单元1111连接到网络1112,或者说,也可以使用网络接口单元1111来连接到其他类型的网络或远程计算机系统(未示出)。

所述存储器还包括一个或者一个以上的程序,所述一个或者一个以上程序存储于存储器中,中央处理器1101通过执行该一个或一个以上程序来实现图3图4或图5所示的方法的全部或者部分步骤。

本领域技术人员可以理解,在上述一个或多个示例中,本申请实施例所描述的功能可以用硬件、软件、固件或它们的任意组合来实现。当使用软件实现时,可以将这些功能存储在计算机可读介质中或者作为计算机可读介质上的一个或多个指令或代码进行传输。计算机可读介质包括计算机存储介质和通信介质,其中通信介质包括便于从一个地方向另一个地方传送计算机程序的任何介质。存储介质可以是通用或专用计算机能够存取的任何可用介质。

本申请实施例还提供了一种计算机可读存储介质,用于存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、所述至少一段程序、所述代码集或指令集由处理器加载并执行以实现上述系统迁移性测试方法。例如,该计算机可读存储介质可以是ROM、RAM、CD-ROM、磁带、软盘和光数据存储设备等。

本申请实施例还提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行上述各个实施例中所示的系统迁移性测试方法全部或部分步骤。

本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本申请的其它实施方案。本申请旨在涵盖本申请的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本申请的一般性原理并包括本申请未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本申请的真正范围和精神由下面的权利要求指出。

应当理解的是,本申请并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本申请的范围仅由所附的权利要求来限制。

相关技术
  • 系统迁移性测试方法、迁移性测试系统、装置及存储介质
  • 一种应用系统迁移性的测试方法及装置
技术分类

06120112457435