CN112416798B - 数据处理方法、装置、设备和存储介质 - Google Patents
数据处理方法、装置、设备和存储介质 Download PDFInfo
- Publication number
- CN112416798B CN112416798B CN202011403309.7A CN202011403309A CN112416798B CN 112416798 B CN112416798 B CN 112416798B CN 202011403309 A CN202011403309 A CN 202011403309A CN 112416798 B CN112416798 B CN 112416798B
- Authority
- CN
- China
- Prior art keywords
- request
- processing
- service
- thread
- sub
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 238000003672 processing method Methods 0.000 title claims abstract description 10
- 238000012545 processing Methods 0.000 claims abstract description 221
- 238000012360 testing method Methods 0.000 claims abstract description 118
- 238000000034 method Methods 0.000 claims abstract description 108
- 230000008569 process Effects 0.000 claims abstract description 52
- 238000011161 development Methods 0.000 claims description 22
- 238000004590 computer program Methods 0.000 claims description 8
- 238000004806 packaging method and process Methods 0.000 claims description 5
- 230000002159 abnormal effect Effects 0.000 abstract description 3
- 239000003795 chemical substances by application Substances 0.000 description 17
- 238000010586 diagram Methods 0.000 description 12
- 238000005516 engineering process Methods 0.000 description 5
- 230000006870 function Effects 0.000 description 4
- 238000012986 modification Methods 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 230000006978 adaptation Effects 0.000 description 2
- 238000004891 communication Methods 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 238000002347 injection Methods 0.000 description 2
- 239000007924 injection Substances 0.000 description 2
- 230000004044 response Effects 0.000 description 2
- GNFTZDOKVXKIBK-UHFFFAOYSA-N 3-(2-methoxyethoxy)benzohydrazide Chemical compound COCCOC1=CC=CC(C(=O)NN)=C1 GNFTZDOKVXKIBK-UHFFFAOYSA-N 0.000 description 1
- 239000008186 active pharmaceutical agent Substances 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 239000000243 solution Substances 0.000 description 1
- 230000001960 triggered effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3668—Software testing
- G06F11/3672—Test management
- G06F11/3688—Test management for test execution, e.g. scheduling of test suites
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3668—Software testing
- G06F11/3672—Test management
- G06F11/3684—Test management for test design, e.g. generating new test cases
Abstract
本申请实施例提供一种数据处理方法、装置、设备和存储介质。该方法应用于第一业务系统,第一业务系统位于测试环境,该方法包括:接收第二业务系统发送的业务请求;通过第一子线程对所述业务请求中包括的至少一个处理请求进行处理;获取所述业务请求对应的业务标识;根据所述业务标识,记录所述第一子线程对所述至少一个处理请求进行处理的过程,得到测试数据,所述测试数据包括所述至少一个处理请求和各个所述处理请求对应的处理结果,所述处理请求和所述处理结果与所述业务标识具有对应关系。本申请实施例获取测试数据的效率较高,实现较为简单,而且由于测试环境中包含各种可能的正常和异常场景,因此获取的测试数据较为丰富。
Description
技术领域
本申请实施例涉及金融科技(Fintech)技术领域,尤其涉及一种数据处理方法、装置、设备和存储介质。
背景技术
随着计算机技术的发展,越来越多的技术应用在金融领域,传统金融业正在逐步向金融科技(Fintech)转变,测试技术也不例外,但由于金融行业的安全性、实时性要求,也对技术提出的更高的要求。
相关技术中,通过人工编写代码为开发环境生成测试数据,或直接手动生成测试数据,生成测试数据的过程较为复杂,效率较低。
发明内容
本申请实施例提供一种数据处理方法、装置、设备和存储介质,以提高为开发环境生成测试数据的效率。
第一方面,本申请实施例提供一种数据处理方法,应用于第一业务系统,所述第一业务系统位于测试环境,所述方法包括:
接收第二业务系统发送的业务请求;
通过第一子线程对所述业务请求中包括的至少一个处理请求进行处理;
获取所述业务请求对应的业务标识;
根据所述业务标识,记录所述第一子线程对所述至少一个处理请求进行处理的过程,得到测试数据,所述测试数据包括所述至少一个处理请求和各个所述处理请求对应的处理结果,所述处理请求和所述处理结果与所述业务标识具有对应关系。
第二方面,本申请实施例提供一种数据处理装置,应用于第一业务系统,所述第一业务系统位于测试环境,所述装置包括:
接收模块,用于接收第二业务系统发送的业务请求;
处理模块,用于通过第一子线程对所述业务请求中包括的至少一个处理请求进行处理;
获取模块,用于获取所述业务请求对应的业务标识;
所述处理模块,还用于根据所述业务标识,记录所述第一子线程对所述至少一个处理请求进行处理的过程,得到测试数据,所述测试数据包括所述至少一个处理请求和各个所述处理请求对应的处理结果,所述处理请求和所述处理结果与所述业务标识具有对应关系。
第三方面,本申请实施例提供一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现第一方面中任一项所述的方法。
第四方面,本申请实施例提供一种电子设备,包括:
处理器;以及
存储器,用于存储所述处理器的可执行指令;
其中,所述处理器配置为经由执行所述可执行指令来执行第一方面中任一项所述的方法。
本申请实施例提供的数据处理方法、装置、设备和存储介质,通过第一子线程对业务请求中包括的至少一个处理请求进行处理;进一步根据业务请求对应的业务标识,记录第一子线程对至少一个处理请求进行处理的过程,得到测试数据,测试数据包括所述至少一个处理请求和各个所述处理请求对应的处理结果,上述方案中,通过业务标识实现了对第一子线程的跟踪,即能够记录该第一子线程对至少一个处理请求进行处理的过程,实现了获取测试数据,该测试数据可以用于对位于开发环境的第一业务系统进行测试,获取测试数据的方式较为简单,效率较高,而且由于测试环境中包含各种可能的正常和异常场景,因此获取的测试数据较为丰富。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本公开的实施例,并与说明书一起用于解释本公开的原理。
图1为本申请实施例提供的系统架构示意图;
图2为本申请实施例提供的原理示意图;
图3是本申请提供的数据处理方法一实施例的流程示意图;
图4是本申请一实施例提供的录制代码注入流程示意图;
图5是本申请一实施例提供的录制流程示意图;
图6是本申请一实施例提供的跨线程录制示意图;
图7是本申请一实施例提供的录制代码注入流程示意图;
图8是本申请一实施例提供的录制流程示意图;
图9是本申请提供的数据处理装置实施例的结构示意图;
图10是本申请提供的电子设备实施例的结构示意图。
通过上述附图,已示出本公开明确的实施例,后文中将有更详细的描述。这些附图和文字描述并不是为了通过任何方式限制本公开构思的范围,而是通过参考特定实施例为本领域技术人员说明本公开的概念。
具体实施方式
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本公开相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本公开的一些方面相一致的装置和方法的例子。
本申请的说明书和权利要求书及所述附图中的术语“包括”和“具有”以及它们任何变形,意图在于覆盖不排他的包含。例如包含了一系列步骤或单元的过程、方法、系统、产品或设备没有限定于已列出的步骤或单元,而是可选地还包括没有列出的步骤或单元,或可选地还包括对于这些过程、方法、产品或设备固有的其它步骤或单元。
首先,对本申请实施例涉及的部分词汇和应用场景进行介绍。
图1为本申请实施例提供的系统架构示意图。如图1所示,本申请实施例的系统架构中可以包括但不限于:第一电子设备11、第二电子设备12和服务器13。
其中,第一电子设备11、第二电子设备12分别和服务器13之间通过网络连接。
其中,第一电子设备11用于从位于测试环境的业务系统获取测试数据,即记录业务系统对业务请求进行处理的过程,第二电子设备12用于对从测试环境得到的测试数据进行回放,从而实现对开发环境的业务系统进行测试。
服务器用于负责控制对业务请求的录制、回放、权限管理、存储上报的请求与应答、网络服务等。
在其他实施例中,第一电子设备和第二电子设备也可以是同一个电子设备,本申请实施例对此并不限定。
本申请实施例提供的方法可由一个电子设备如处理器执行相应的软件代码实现,也可由一个电子设备在执行相应的软件代码的同时,通过和控制器进行数据交互来实现。
相关技术中,通过人工编写代码为开发环境生成测试数据,或直接手动生成测试数据,生成测试数据的过程较为复杂,效率较低。
本申请实施例的方法用于从测试环境获取测试数据,利用获取到的测试数据对开发环境中的业务系统进行测试的场景,解决开发环境缺少测试数据、造数困难的问题。
如图2所示,本申请实施例的方法采用代理程序Agent向业务系统注入代码,可以避免修改业务系统本身的代码,注入的代码用于从测试环境获取测试数据,以及在开发环境中回放该测试数据,将上述功能无缝的嵌入业务系统中;让业务系统无需做任何修改就能够获得记录对业务请求进行处理的过程,获取测试数据,以及回放测试数据的能力。Agent把代码注入到业务系统的入口和出口点(例如WEB接口/数据库(database,DB)/API接口等),来实现记录对业务请求进行处理的过程,获取测试数据,以及回放测试数据的功能。以上从测试环境获取测试数据的过程简称为录制(recorder),在开发环境中回放该测试数据简称为回放(replay)。
本申请实施例的方法,通过业务标识对接收到的业务请求进行标识,实现了对第一子线程的跟踪,即能够记录该第一子线程对至少一个处理请求进行处理的过程,如访问数据库的数据库处理请求和/或对外部接口的调用请求等,实现了获取测试数据,该测试数据可以用于对位于开发环境的第一业务系统进行测试,获取测试数据的方式较为简单,效率较高。
下面以具体的实施例对本申请的技术方案进行详细说明。下面这几个具体的实施例可以相互结合,对于相同或相似的概念或过程可能在某些实施例不再赘述。
图3是本申请提供的数据处理方法一实施例的流程示意图。如图3所示,本实施例提供的方法,应用于第一业务系统,所述第一业务系统位于测试环境,所述方法包括:
步骤101、接收第二业务系统发送的业务请求。
具体的,在步骤101之前业务系统加载代理程序Agent,Agent向业务系统中注入用于录制(recorder)的代码;用户下发录制指令,例如通过服务器,或直接通过执行位于测试环境的业务系统的电子设备下发录制指令,用于指示获取测试数据。
第一业务系统接收业务请求,该业务请求可以是用户触发的或第二业务系统发送的。
步骤102、通过第一子线程对业务请求中包括的至少一个处理请求进行处理。
具体的,第一子线程可以是一个或多个,第一子线程与接收到业务请求的线程不同,接收到业务请求的线程可以作为该第一子线程的父线程。第一子线程对业务请求进行处理,即在第一业务系统中执行对业务请求的处理,即执行业务处理的过程。
步骤103、获取业务请求对应的业务标识;
具体的,不同的业务请求对应不同的业务标识,业务标识用于对第一子线程进行标识,从而实现对第一子线程的跟踪,即记录第一子线程对业务请求中包括的处理请求进行处理的过程。
业务标识可以是在接收到业务请求后,为该业务请求分配的业务标识,唯一标识该业务请求。
步骤104、根据业务标识,记录第一子线程对至少一个处理请求进行处理的过程,得到测试数据,测试数据包括至少一个处理请求和各个处理请求对应的处理结果,处理请求和处理结果与业务标识具有对应关系。
具体的,通过业务标识,对第一子线程进行跟踪,记录第一子线程对业务请求中包括的各个处理请求进行处理的过程,得到测试数据,测试数据包括至少一个处理请求和各个处理请求对应的处理结果,业务标识用于对一个业务请求包括的处理请求以及处理请求对应的处理结果进行标识。
其中,第一子线程可以是一个或多个,第一子线程可以处理一个或多个处理请求,例如每个第一子线程处理一个处理请求。
本申请实施例中,利用业务标识对第一子线程进行标识,从而实现对第一子线程的跟踪,即记录第一子线程对业务请求进行处理的过程,即通过注入在业务系统中的录制代码,对业务系统的执行过程进行录制,记录每个处理请求与对应的处理结果,可以将处理结果存储在本地或上报到服务器。
本实施例的方法,通过第一子线程对业务请求中包括的至少一个处理请求进行处理;进一步根据业务请求对应的业务标识,记录第一子线程对至少一个处理请求进行处理的过程,得到测试数据,测试数据包括所述至少一个处理请求和各个所述处理请求对应的处理结果,上述方案中,通过业务标识实现了对第一子线程的跟踪,即能够记录该第一子线程对至少一个处理请求进行处理的过程,实现了获取测试数据,该测试数据可以用于对位于开发环境的第一业务系统进行测试,获取测试数据的方式较为简单,效率较高,而且由于测试环境中包含各种可能的正常和异常场景,因此获取的测试数据较为丰富。
在一实施例中,执行录制的过程是由注入在第一业务系统中的代码实现的,如图4所示,代码注入过程如下:
a)启动业务系统;
b)虚拟机(Java Virtual Machine,JVM)加载代理Agent;
c)Agent向业务代码中注入录制(recorder)代码;
d)Agent提供新的WrapRunnable接口,用于跨线程跟踪;其中,Runnable接口包含run方法(run()函数),run方法包括业务系统的逻辑代码;通过Runnable接口实现多线程的使用,WrapRunnable接口为对Runnable接口以及业务标识进行封装得到的;
e)Agent在线程池执行器ThreadPoolExecutor中,增加跨线程跟踪的具体实现方案;其中,ThreadPoolExecutor是一个多线程调度器,负责把WrapRunnable接口的run方法分配给线程去执行;
f)Agent准备就绪,连接到服务器。
上述实施方式中,通过Agent将代码注入业务系统中,不侵入业务系统的代码,实现了对业务系统透明的录制过程,实现简单。
在上述实施例的基础上,步骤103可以通过如下方式实现:
根据所述业务标识,记录所述第一子线程访问数据库的数据库处理请求、以及所述数据库处理请求对应的数据库处理结果;和/或,
根据所述业务标识,记录所述第一子线程对外部接口的调用请求、以及所述调用请求对应的调用处理结果。
具体的,通过第一子线程访问数据库,执行对业务请求的处理,记录第一子线程访问数据库的数据库处理请求、以及数据库处理请求对应的数据库处理结果。利用业务标识对第一子线程访问数据库的数据库处理请求、以及数据库处理请求对应的数据库处理结果进行标识。
通过第一子线程调用外部接口,执行对业务请求的处理,记录第一子线程对外部接口的调用请求、以及调用请求对应的调用处理结果。利用业务标识对第一子线程对外部接口的调用请求、以及调用请求对应的调用处理结果进行标识。
其中,测试数据包括如下至少一种:
所述数据库处理请求和所述数据库处理结果;
所述调用请求和所述调用处理结果。
上述实施方式中,通过业务标识实现了对第一子线程的跟踪,即能够记录该第一子线程对至少一个处理请求进行处理的过程,如访问数据库的数据库处理请求和/或对外部接口的调用请求,实现了获取测试数据,该测试数据可以用于对位于开发环境的第一业务系统进行测试,获取测试数据的方式较为简单,效率较高。
在一实施例中,为了实现跨线程跟踪,需要通过业务标识对第一子线程对业务请求的处理过程进行标记,该方法还包括:
生成所述业务请求对应的业务标识;
将所述业务标识设置到线程上下文中。
其中,步骤103可以通过如下方式实现:
通过所述第一子线程在所述线程上下文中获取所述业务标识。
具体的,在获取到业务请求后,生成该业务请求对应的业务标识,用于实现跨线程的跟踪,即记录第一子线程对业务请求的处理过程。
将业务标识设置到线程上下文中,创建第一子线程后,从线程的上下文中获取该业务请求对应的业务标识,进而记录第一子线程对业务请求进行处理的过程,得到测试数据。
上述实施方式中,将所述业务标识设置到线程上下文中,创建第一子线程后,从线程的上下文中获取该业务请求对应的业务标识,用于实现跨线程的跟踪,即记录第一子线程对业务请求的处理过程,能够获取到第一子线程对整个业务请求的处理过程的测试数据。
在一实施例中,如图5所示,录制过程具体包括如下步骤:
a)业务系统接收到业务请求;
b)检查是否处于录制状态(即判断是否需要录制,例如确定是否已接收到录制指令),如果处于录制状态则执行步骤c,否则执行步骤e;
c)生成当前业务请求对应的业务标识,并把业务标识存放到线程的上下文中(例如写入线程的局部变量ThreadLocal);
d)缓存接收的业务请求;
e)执行正常的业务逻辑,具体通过以下步骤实现:
i.创建子线程处理具体的处理请求;
ii.在线程上下文中获取业务请求对应的业务标识,即当前子线程对应的业务标识;
iii.访问数据库DB处理请求和/或调用外部接口请求;
iv.向父线程上报请求对应的处理结果,如DB请求与对应的处理结果,调用外部接口请求与对应的处理结果;
f)检查是否处于录制状态中,如果处于录制状态中,执行步骤g,否则执行步骤h;
g)上报录制的业务请求与对应的处理结果,即对录制的处理请求与相应的应答进行上报;
h)返回处理结果给业务请求的发送方,即发送业务请求的第二业务系统。
在一实施例中,在生成业务请求对应的业务标识,并将业务标识设置到线程上下文中之后,为了实现跨线程的跟踪,本实施例的方法,还包括:
创建第一接口,所述第一接口包括目标代码,所述目标代码用于实现所述第一业务系统;
通过线程池执行器ThreadPoolExecutor将所述业务标识和所述第一接口进行封装,生成第二接口。
具体的,第一接口可以为Runnable接口,Runnable接口用于实现跨线程跟踪;其中,Runnable接口包含run()方法,run方法包括业务系统的代码。
将Runnable接口的实例提交到线程池执行器ThreadPoolExecutor中,ThreadPoolExecutor为一个多线程调度器,负责把Runnable接口的run方法分配给线程去执行。
通过线程池执行器ThreadPoolExecutor将所述业务标识和所述Runnable接口进行封装,生成WrapRunnable接口,由于WrapRunnable接口携带了业务标识,因此能够对子线程的执行过程进行跟踪。
在一实施例中,步骤102可以通过如下方式实现:
通过所述ThreadPoolExecutor获取所述第二接口中的业务标识,将所述业务标识设置在线程上下文中;
通过所述ThreadPoolExecutor创建所述第一子线程;
通过所述第一子线程,根据所述业务请求中包括的至少一个处理请求执行所述目标代码。
具体的,在执行第一业务系统的业务逻辑时,将WrapRunnable接口封装的业务标识设置在线程上下文中,通过创建的第一子线程对业务请求中包括的至少一个处理请求进行处理,即执行WrapRunnable接口的目标代码以实现对至少一个处理请求的处理过程。
由于将WrapRunnable接口封装的业务标识设置在线程上下文中,因此可以根据该线程上下文中的业务标识,记录所述第一子线程对所述至少一个处理请求进行处理的过程,得到测试数据。
上述实施方式中,通过把业务标识设置到当前线程的上下文中,能够实现跨线程的跟踪,即记录线程池内的子线程对业务请求的具体处理过程,即能够获取到子线程对整个业务请求的处理过程的测试数据,实现简单,效率较高。
在一实施例中,当业务系统接收到一个外部的业务请求时,大多情况下会把接收到的业务请求提交给另外独立的线程池处理,这就带来了一个跨线程之间关联请求上下文的问题,即如何跨线程记录子线程对具体的处理请求的处理过程,针对这个问题,代理Agent通过提供封装的WrapRunnable和在线程执行器ThreadPoolExecutor中增加跨线程跟踪的具体实现方案来解决。WrapRunnable用于包装业务系统提交的Runnable,即将业务请求对应的业务标识seq封装到Runnable中;修改后的ThreadPoolExecutor,提供把业务系统提交的Runnable转换为WrapRunnable的功能,而且在ThreadPoolExecutor执行时,把业务请求对应的唯一业务标识seq设置到线程的上下文中。
如图6所示,跨线程跟踪的具体流程如下:
1、接收外部的业务请求;
2、生成业务请求对应的业务标识seq;
3、把业务标识seq存放到线程上下文中;方便当前线程池内,后续子线程运行过程中使用;
4、创建Runnable接口,用于执行具体的业务逻辑;
5、提交Runnable接口的实例到线程池,以执行Runnable接口的run方法,即执行业务逻辑;
6、线程池执行器ThreadPoolExecutor收到提交的Runnable接口的实例,操作如下:
a)获取当前线程上下文的业务标识seq;
b)创建一个WrapRunnable实例WrapRunnable(Runnable,seq),包含业务系统提交的Runnable接口和业务标识seq;
c)返回。
7、执行业务逻辑,通过ThreadPoolExecuter调度线程执行以下方案:
获取当前WrapRunnable的业务标识属性,并把业务标识属性的值seq设置到当前线程的上下文中;
执行WrapRunnable的Run方法,即执行业务系统真实的业务逻辑。
上述实施方式中,通过把业务标识属性的值seq设置到当前线程的上下文中,能够实现跨线程的跟踪,即记录线程池内的子线程对业务请求的具体处理过程,即能够获取到子线程对整个业务请求的处理过程的测试数据,实现简单,效率较高。
在一实施例中,进一步的,获取到测试数据之后,如图2所示,在所述第一业务系统位于开发环境时,本实施例的方法,还包括:
获取回放请求,所述回放请求中包括业务标识;
根据所述业务标识,获取所述测试数据;
通过第二子线程对所述测试数据中的目标处理请求进行处理,所述目标处理请求为所述至少一个处理请求中任意一个处理请求;
通过所述第二子线程在所述测试数据中获取所述目标处理请求对应的处理结果。
具体的,在获取回放请求之前业务系统加载代理程序Agent,Agent向业务系统中注入用于回放(replayer)的代码;用户下发回放指令,例如通过服务器,或直接通过执行位于开发环境的业务系统的电子设备下发回放指令,用于指示对测试数据进行回放,即基于测试数据对业务系统进行测试。
其中,回放指令可以针对某个业务请求对应的处理结果,把记录的业务请求对应的处理结果下发到位于开发环境的第一业务系统中。
位于开发环境的第一业务系统中replayer回放代码接收到回放指令对应的回放请求,开始触发执行回放逻辑。
其中,回放请求中包括业务标识,根据业务标识,获取对应的测试数据;
通过第二子线程对测试数据中的目标处理请求进行处理,测试数据中的业务请求包括一个或多个处理请求;处理请求例如访问数据库、调用外部接口等请求,目标处理请求为至少一个处理请求中的任意一个。通过第二子线程在测试数据中获取目标处理请求对应的处理结果。
上述实施方式中,根据业务标识,获取录制的测试数据;在开发环境中,通过第二子线程对测试数据中的目标处理请求进行处理,实现了利用测试数据对业务系统进行测试,进一步,通过第二子线程在测试数据中获取目标处理请求对应的处理结果,实现对测试数据进行回放,使用过程较为简单。
在一实施例中,执行回放的过程是由注入在第一业务系统中的代码实现的,如图7所示,代码注入过程如下:
a)启动业务系统;
b)JVM加载代理Agent;
c)Agent向业务代码中注入回放(replayer)代码;
d)Agent提供新的WrapRunnable接口,用于跨线程跟踪;
e)Agent在线程池执行器ThreadPoolExecuter中,增加跨线程跟踪的具体实现方案;
f)Agent准备就绪,连接到服务器。
上述实施方式中,通过Agent将代码注入业务系统中,不侵入业务系统的代码,实现了对业务系统透明的回放过程,实现简单。
在一实施例中,步骤“通过所述第二子线程在所述测试数据中获取所述目标处理请求对应的处理结果”可以通过如下方式实现:
获取处理请求对应的请求标识;
根据所述业务标识和所述请求标识,在所述测试数据中获取所述目标处理请求对应的处理结果。
具体的,业务请求中包括的至少一个处理请求均具有对应的请求标识,用于对处理请求进行标识,在获取测试数据时,利用业务请求对应的业务标识以及该目标处理请求的请求标识,对该目标处理请求对应的处理结果进行标识。
在一实施例中,如图8所示,回放过程具体包括如下步骤:
a)代理Agent接收到回放请求;
b)获取录制时生成的业务标识,设置到线程的上下文;
c)回放业务请求的报文;
d)执行业务逻辑,具体可以通过如下步骤实现:
i.创建第二子线程处理具体的处理请求;
ii.访问数据库DB和/或访问外部接口;
iii.在第二子线程中获取业务请求对应的业务标识,如果存在该业务标识,则执行iv步骤,否则执行v步骤;
iv.根据业务标识+请求标识获取处理请求对应的处理结果;
v.返回处理结果。
本申请实施例的方法,通过录制测试环境中的测试数据,并在开发环境中进行回放,大大降低开发环境测试时造数的难度,同时丰富了开发环境测试的造数场景,减少了开发人员测试的工作量,同时有效提高了开发的业务系统的质量。
图9为本申请提供的数据处理装置一实施例的结构图,如图9所示,本实施例的数据处理装置,应用于第一业务系统,所述第一业务系统位于测试环境,所述数据处理装置包括:
接收模块110,用于接收第二业务系统发送的业务请求;
处理模块111,用于通过第一子线程对所述业务请求中包括的至少一个处理请求进行处理;
获取模块112,用于获取所述业务请求对应的业务标识;
所述处理模块111,还用于根据所述业务标识,记录所述第一子线程对所述至少一个处理请求进行处理的过程,得到测试数据,所述测试数据包括所述至少一个处理请求和各个所述处理请求对应的处理结果,所述处理请求和所述处理结果与所述业务标识具有对应关系。
本实施例的装置,可以用于执行上述方法实施例的技术方案,其实现原理和技术效果类似,此处不再赘述。
图10为本申请提供的电子设备实施例的结构图,如图10所示,该电子设备包括:
处理器210,以及,用于存储处理器210的可执行指令的存储器211。
可选的,还可以包括:通信接口212,用于实现与其他设备的通信。
上述部件可以通过一条或多条总线进行通信。
其中,处理器210配置为经由执行所述可执行指令来执行前述方法实施例中对应的方法,其具体实施过程可以参见前述方法实施例,此处不再赘述。
本申请实施例中还提供一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现前述方法实施例中对应的方法,其具体实施过程可以参见前述方法实施例,其实现原理和技术效果类似,此处不再赘述。
本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本公开的其它实施方案。本申请旨在涵盖本公开的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本公开的一般性原理并包括本公开未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本公开的真正范围和精神由下面的权利要求书指出。
应当理解的是,本公开并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本公开的范围仅由所附的权利要求书来限制。
Claims (12)
1.一种数据处理方法,其特征在于,应用于第一业务系统中的服务器,所述方法包括:
通过代理程序将录制代码和回放代码各自注入到所述第一业务系统的入口点和出口点,所述入口点和出口点包括网络接口,数据库接口和应用程序接口;
在所述第一业务系统位于测试环境时,接收第二业务系统发送的业务请求;以及,通过第一子线程对所述业务请求中包括的至少一个处理请求进行处理;以及,获取所述业务请求对应的业务标识;以及,根据所述业务标识和所述录制代码,通过所述入口点和所述出口点记录所述第一子线程对所述至少一个处理请求进行处理的过程以得到测试数据,所述测试数据包括所述至少一个处理请求和各个所述处理请求对应的处理结果,所述处理请求包括访问数据库请求和/或调用外部接口请求;
在所述第一业务系统位于开发环境时,向所述第一业务系统发送回放请求,所述回放请求中包括所述业务标识;以及,根据所述业务标识和所述回放代码,通过所述入口点和所述出口点回放所述测试数据;以及,通过第二子线程对所述测试数据中的目标处理请求进行处理,获取所述目标处理请求对应的目标处理结果以实现利用所述测试数据对所述第一业务系统进行测试,所述目标处理请求为所述至少一个处理请求中任意一个处理请求。
2.根据权利要求1所述的方法,其特征在于,根据所述业务标识,记录所述第一子线程对所述业务请求进行处理的过程,得到测试数据,包括:
根据所述业务标识,记录所述第一子线程访问数据库的数据库处理请求、以及所述数据库处理请求对应的数据库处理结果;和/或,
根据所述业务标识,记录所述第一子线程对外部接口的调用请求、以及所述调用请求对应的调用处理结果。
3.根据权利要求2所述的方法,其特征在于,所述测试数据包括如下至少一种:
所述数据库处理请求和所述数据库处理结果;
所述调用请求和所述调用处理结果。
4.根据权利要求1-3任一项所述的方法,其特征在于,接收第二业务系统发送的业务请求之后,还包括:
生成所述业务请求对应的业务标识;
将所述业务标识设置到线程上下文中。
5.根据权利要求4所述的方法,其特征在于,所述获取所述业务请求对应的业务标识,包括:
通过所述第一子线程在所述线程上下文中获取所述业务标识。
6.根据权利要求1所述的方法,其特征在于,通过所述第二子线程在所述测试数据中获取所述处理请求对应的处理结果,包括:
获取所述目标处理请求对应的请求标识;
根据所述业务标识和所述请求标识,在所述测试数据中获取所述目标处理请求对应的处理结果。
7.根据权利要求1-3任一项所述的方法,其特征在于,还包括:
创建第一接口,所述第一接口包括目标代码,所述目标代码用于实现所述第一业务系统;
通过线程池执行器ThreadPoolExecutor将所述业务标识和所述第一接口进行封装,生成第二接口。
8.根据权利要求7所述的方法,其特征在于,所述通过第一子线程对所述业务请求中包括的至少一个处理请求进行处理,包括:
通过所述ThreadPoolExecutor获取所述第二接口中的业务标识,将所述业务标识设置在线程上下文中;
通过所述ThreadPoolExecutor创建所述第一子线程;
通过所述第一子线程,根据所述业务请求中包括的至少一个处理请求执行所述目标代码。
9.一种数据处理装置,其特征在于,应用于第一业务系统中的服务器,所述装置包括:
处理模块,用于通过代理程序将录制代码和回放代码各自注入到所述第一业务系统的入口点和出口点,所述入口点和出口点包括网络接口,数据库接口和应用程序接口;
接收模块,用于在所述第一业务系统位于测试环境时,接收第二业务系统发送的业务请求;
获取模块,用于获取所述业务请求对应的业务标识;
所述处理模块,还用于通过第一子线程对所述业务请求中包括的至少一个处理请求进行处理,以及,根据所述业务标识和所述录制代码,通过所述入口点和所述出口点记录所述第一子线程对所述至少一个处理请求进行处理的过程以得到测试数据,所述测试数据包括所述至少一个处理请求和各个所述处理请求对应的处理结果,所述处理请求包括访问数据库和/或调用外部接口请求,以及用于在所述第一业务系统位于开发环境时,向所述第一业务系统发送回放请求,所述回放请求中包括所述业务标识;以及,根据所述业务标识和所述回放代码,通过所述入口点和所述出口点回放所述测试数据;以及,通过第二子线程对所述测试数据中的目标处理请求进行处理,获取所述目标处理请求对应的目标处理结果以实现利用所述测试数据对所述第一业务系统进行测试,所述目标处理请求为所述至少一个处理请求中任意一个处理请求。
10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1-8任一项所述的方法。
11.一种电子设备,其特征在于,包括:处理器;以及存储器,用于存储所述处理器的可执行指令;
其中,所述处理器配置为经由执行所述可执行指令来执行权利要求1-8任一项所述的方法。
12.一种计算机程序产品,包括计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1-8任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011403309.7A CN112416798B (zh) | 2020-12-04 | 2020-12-04 | 数据处理方法、装置、设备和存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011403309.7A CN112416798B (zh) | 2020-12-04 | 2020-12-04 | 数据处理方法、装置、设备和存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112416798A CN112416798A (zh) | 2021-02-26 |
CN112416798B true CN112416798B (zh) | 2024-04-09 |
Family
ID=74830103
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011403309.7A Active CN112416798B (zh) | 2020-12-04 | 2020-12-04 | 数据处理方法、装置、设备和存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112416798B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113176913B (zh) * | 2021-05-25 | 2023-03-24 | 深圳前海微众银行股份有限公司 | Java代理的处理方法、装置、终端设备以及存储介质 |
Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101772764A (zh) * | 2007-07-31 | 2010-07-07 | 微软公司 | 多线程业务编程库 |
CN105930945A (zh) * | 2015-12-30 | 2016-09-07 | 中国银联股份有限公司 | 一种业务处理方法及装置 |
CN106484610A (zh) * | 2015-09-02 | 2017-03-08 | 阿里巴巴集团控股有限公司 | 一种Beta测试方法和装置 |
CN109445880A (zh) * | 2018-10-23 | 2019-03-08 | 数贸科技(北京)有限公司 | 跨线程调用链上下文的传递方法、装置及电子设备 |
CN109636514A (zh) * | 2018-11-29 | 2019-04-16 | 腾讯科技(深圳)有限公司 | 业务数据处理方法、装置、计算设备及存储介质 |
CN109871320A (zh) * | 2019-01-21 | 2019-06-11 | 上海德启信息科技有限公司 | 一种数据处理方法、装置、应用服务器及存储介质 |
CN110457382A (zh) * | 2019-08-12 | 2019-11-15 | 中国联合网络通信集团有限公司 | 业务处理方法及设备 |
CN111506496A (zh) * | 2020-03-11 | 2020-08-07 | 北京三快在线科技有限公司 | 一种测试数据获取方法、装置、电子设备及存储介质 |
CN111625452A (zh) * | 2020-05-22 | 2020-09-04 | 上海哔哩哔哩科技有限公司 | 流量回放方法和系统 |
CN112015663A (zh) * | 2020-09-15 | 2020-12-01 | 平安银行股份有限公司 | 测试数据录制方法、装置、设备及介质 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9268596B2 (en) * | 2012-02-02 | 2016-02-23 | Intel Corparation | Instruction and logic to test transactional execution status |
-
2020
- 2020-12-04 CN CN202011403309.7A patent/CN112416798B/zh active Active
Patent Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101772764A (zh) * | 2007-07-31 | 2010-07-07 | 微软公司 | 多线程业务编程库 |
CN106484610A (zh) * | 2015-09-02 | 2017-03-08 | 阿里巴巴集团控股有限公司 | 一种Beta测试方法和装置 |
CN105930945A (zh) * | 2015-12-30 | 2016-09-07 | 中国银联股份有限公司 | 一种业务处理方法及装置 |
CN109445880A (zh) * | 2018-10-23 | 2019-03-08 | 数贸科技(北京)有限公司 | 跨线程调用链上下文的传递方法、装置及电子设备 |
CN109636514A (zh) * | 2018-11-29 | 2019-04-16 | 腾讯科技(深圳)有限公司 | 业务数据处理方法、装置、计算设备及存储介质 |
CN109871320A (zh) * | 2019-01-21 | 2019-06-11 | 上海德启信息科技有限公司 | 一种数据处理方法、装置、应用服务器及存储介质 |
CN110457382A (zh) * | 2019-08-12 | 2019-11-15 | 中国联合网络通信集团有限公司 | 业务处理方法及设备 |
CN111506496A (zh) * | 2020-03-11 | 2020-08-07 | 北京三快在线科技有限公司 | 一种测试数据获取方法、装置、电子设备及存储介质 |
CN111625452A (zh) * | 2020-05-22 | 2020-09-04 | 上海哔哩哔哩科技有限公司 | 流量回放方法和系统 |
CN112015663A (zh) * | 2020-09-15 | 2020-12-01 | 平安银行股份有限公司 | 测试数据录制方法、装置、设备及介质 |
Non-Patent Citations (2)
Title |
---|
A Survey on Energy Management for Mobile and IoT Devices;Sudeep Pasricha等;IEEE Design & Test;20200208;7-24 * |
基于Netty框架的性能测试系统的设计与实现;李培殿;《中国优秀硕士学位论文全文数据库 信息科技辑》;20190815;I138-187 * |
Also Published As
Publication number | Publication date |
---|---|
CN112416798A (zh) | 2021-02-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7962612B2 (en) | Method for connection leak detection and prevention | |
US6708324B1 (en) | Extensible automated testing software | |
US5933639A (en) | System and method for debugging distributed programs | |
US7334162B1 (en) | Dynamic distribution of test execution | |
US8230419B2 (en) | Method, system and program product for capturing central processing unit (CPU) utilization for a process on a virtual machine | |
US8418143B2 (en) | Software reliability test method using selective fault activation, test area restriction method, workload generation method and computing apparatus for testing software reliability using the same | |
CN107281756A (zh) | 一种组队游戏的方法和装置 | |
CN106649084A (zh) | 函数调用信息的获取方法及装置、测试设备 | |
US10963267B2 (en) | Bootstrapping profile-guided compilation and verification | |
CN107436832A (zh) | 一种动态埋点的方法、装置及电子设备 | |
US9823991B2 (en) | Concurrent workload simulation for application performance testing | |
CN110941528B (zh) | 一种基于故障的日志埋点设置方法、装置及系统 | |
CN106155883A (zh) | 一种虚拟机可靠性测试方法及装置 | |
CN105373734A (zh) | 应用数据的保护方法及装置 | |
CN112416798B (zh) | 数据处理方法、装置、设备和存储介质 | |
CN114328217A (zh) | 应用的测试方法、装置、设备、介质及计算机程序产品 | |
CN114253864A (zh) | 一种业务测试方法、装置、电子设备及存储介质 | |
US8117574B2 (en) | Implementing a serialization construct within an environment of parallel data flow graphs | |
CN113760339A (zh) | 漏洞修复方法和装置 | |
CN109151600B (zh) | 一种特效缺失的补偿方法、装置、服务器及存储介质 | |
CN105718796A (zh) | 一种安卓用户隐私数据访问的系统调用级监控方法 | |
CN112612697A (zh) | 一种基于字节码技术的软件缺陷测试定位方法及系统 | |
CN107277030B (zh) | 一种利用多线程来处理鉴权的方法及装置 | |
CN111045891B (zh) | 基于java多线程的监控方法、装置、设备以及存储介质 | |
CN115617668A (zh) | 一种兼容性测试方法、装置及设备 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |