CN114553929A - 录制调用动态Mock的录制回放增强方法和装置 - Google Patents
录制调用动态Mock的录制回放增强方法和装置 Download PDFInfo
- Publication number
- CN114553929A CN114553929A CN202210020295.3A CN202210020295A CN114553929A CN 114553929 A CN114553929 A CN 114553929A CN 202210020295 A CN202210020295 A CN 202210020295A CN 114553929 A CN114553929 A CN 114553929A
- Authority
- CN
- China
- Prior art keywords
- mock
- rule
- recording
- open source
- result
- 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.)
- Granted
Links
- 238000000034 method Methods 0.000 title claims abstract description 145
- 238000012544 monitoring process Methods 0.000 claims abstract description 35
- 238000003780 insertion Methods 0.000 claims abstract description 16
- 230000037431 insertion Effects 0.000 claims abstract description 16
- 230000002159 abnormal effect Effects 0.000 claims abstract description 12
- 230000002708 enhancing effect Effects 0.000 claims abstract description 11
- 238000012545 processing Methods 0.000 claims description 24
- 230000015654 memory Effects 0.000 claims description 14
- 238000004590 computer program Methods 0.000 claims description 6
- 230000002068 genetic effect Effects 0.000 claims description 5
- 238000012360 testing method Methods 0.000 abstract description 36
- 238000010276 construction Methods 0.000 abstract description 5
- 238000004088 simulation Methods 0.000 abstract description 4
- 230000008569 process Effects 0.000 description 13
- 230000006870 function Effects 0.000 description 9
- 238000010586 diagram Methods 0.000 description 8
- 230000005540 biological transmission Effects 0.000 description 6
- 230000000694 effects Effects 0.000 description 5
- 238000012546 transfer Methods 0.000 description 5
- 230000001960 triggered effect Effects 0.000 description 5
- 238000004891 communication Methods 0.000 description 3
- 230000008878 coupling Effects 0.000 description 3
- 238000010168 coupling process Methods 0.000 description 3
- 238000005859 coupling reaction Methods 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 2
- 238000012795 verification Methods 0.000 description 2
- 239000003795 chemical substances by application Substances 0.000 description 1
- 238000011990 functional testing Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000013522 software testing Methods 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
Images
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
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/34—Network arrangements or protocols for supporting network services or applications involving the movement of software or configuration parameters
Abstract
本发明提供了一种录制调用动态Mock的录制回放增强方法和装置,包括:获取目标服务的预设的应用层Mock插桩和/或预设的开源组件层Mock插桩;接入调用请求,遍历应用层代码,若调用请求的Mock规则命中且匹配应用层Mock插桩中的Mock规则,并返回第一结果并结束调用请求;若调用请求的Mock规则未命中或未匹配应用层Mock插桩,则遍历开源组件层代码,若调用请求的Mock规则命中开源组件层Mock插桩中的Mock规则,则触发开源组件层Mock插桩的监听事件,返回第二结果并根据开源组件层Mock插桩中的录制规则进行录制保存。该方法使得录制回放支持Mock需求,兼顾了Mock模拟复杂、异常等测试场景的快捷性和录制回放构造回归用例的快捷性,提升了测试效率,保护了整体测试环境的稳定。
Description
技术领域
本发明涉及软件测试的技术领域,尤其是涉及一种录制调用动态Mock的录制回放增强方法和装置。
背景技术
测试流程中常需要构造复杂测试环境的场景,如:冗长复杂的规则配置,验证返回异常和超时、长时间地等待缓存更新及定时任务触发等场景,针对此类型的场景可使用模拟测试(Mock)返回接口期望结果以提升测试效率。而录制回放则可通过在开源组件源码层级录制请求的参数、子调用等信息,在回放时进行功能验证,不用手动编写回归用例,大大提升了功能回归的效率。
但是上述Mock和录制回放同时存在时,却因录制回放作用于RPC(RemoteProcedure Call,远程过程调用)、数据库等开源组件底层,Mock所在的应用业务代码层级直接返回期望值,使得录制请求被拦截从而期望结果无法被录制,导致此类耗时长的复杂场景需要手动回归;或需要搭建额外的Mock服务器,对请求进行标记,使得所有标记的请求都路由到该服务器上,但会导致Mock服务器成本高的问题。
综上,现有的Mock和录制回放同时存在时,无法在低成本实现Mock的同时,保存录制后的Mock结果。
发明内容
本发明的目的在于提供一种录制调用动态Mock的录制回放增强方法和装置,以缓解现有的Mock和录制回放同时存在时,无法在低成本实现Mock的同时,保存录制后的Mock结果。
第一方面,本发明实施例提供了一种录制调用动态Mock的录制回放增强方法,包括:
获取目标服务的预设的应用层Mock插桩和/或预设的开源组件层Mock插桩;
接入调用请求,遍历应用层代码,若所述调用请求的Mock规则命中且匹配所述应用层Mock插桩中的Mock规则,并返回第一结果并结束所述调用请求;
若所述调用请求的Mock规则未命中或未匹配所述应用层Mock插桩,则遍历开源组件层代码,若所述调用请求的Mock规则命中所述开源组件层Mock插桩中的Mock规则,则触发所述开源组件层Mock插桩的监听事件,返回第二结果并根据所述开源组件层Mock插桩中的录制规则进行录制保存。
进一步的,在获取目标服务的预设的应用层Mock插桩和/或预设的开源组件层Mock插桩之前,所述方法还包括:
获取目标服务信息,其中,所述目标服务信息包括:Mock规则和录制规则;
根据所述目标服务信息的录制规则的开启情况,确定所述开源组件层的录制模块的启动状态;
根据所述目标服务信息的Mock规则的生效状态和所述目标服务信息中的Mock规则对应的录制规则的开启状态,在所述应用层插入Mock插桩、在所述开源组件层插入Mock插桩或不启动对所述调用请求的Mock规则的监听,其中,在所述应用层插入Mock插桩表示启动应用层Mock模块对所述调用请求的Mock规则中的Mock方法进行监听,在所述开源组件层插入Mock插桩表示启动所述开源组件层的框架Mock模块对所述调用请求的Mock规则中的Mock方法进行监听。
进一步的,触发所述开源组件层Mock插桩的监听事件,返回第二结果并根据所述开源组件层Mock插桩中的录制规则进行录制保存,包括:
利用所述开源组件层的录制模块按照所述开源组件层Mock插桩中的录制规则记录所述调用请求的请求信息;
判断所述开源组件层的框架Mock模块是否开启;
若开启,则判断所述调用请求的Mock规则是否匹配目标服务信息中的Mock规则;
若匹配成功,返回期望结果并录制保存所述期望结果于第一缓存,输出所述期望结果后结束所述调用请求;
若所述开源组件层的框架Mock模块未开启或者匹配失败,则进入真实调用,返回真实结果并录制保存所述真实结果于第二缓存。
进一步的,在返回真实结果并录制保存所述真实结果于第二缓存之后,所述方法还包括:
调用所述第二缓存并获取其内部请求信息;
记录所述请求信息后存入所述第一缓存并结束所述调用请求。
进一步的,判断所述调用请求的Mock规则是否匹配所述目标服务信息的Mock规则,包括:
判断所述调用请求的Mock规则对应的Mock方法是否生效;
若生效,则获取所述调用请求的Mock方法的隐式传参UID;
若获取到所述调用请求的Mock方法的隐式传参UID,则利用所述隐式传参UID标记所述调用请求,并判断标记后的调用请求的Mock规则是否匹配所述目标服务信息的Mock规则;
若匹配成功,则返回匹配的Mock规则;
若匹配失败,则开始遍历所述开源组件层代码或进入真实调用。
进一步的,判断所述调用请求的Mock规则是否匹配所述目标服务信息的Mock规则,还包括:
若未获取到所述调用请求的Mock方法的隐式传参UID;
判断所述调用请求的Mock规则的请求参数是否满足所述目标服务信息的Mock规则的请求参数;
若满足,则返回对应的Mock规则;
若不满足,则开始遍历所述开源组件层代码或进入真实调用。
进一步的,所述第一结果的类型包括以下任一种:特定值类型、特定异常类型、延时类型,返回第一结果,包括:
若所述第一结果为所述特定值类型,则对预设特定值进行反序列化,并将反序列化的结果作为所述第一结果返回;
若所述第一结果为所述特定异常类型,则生成特定异常实例并将所述特定异常实例作为所述第一结果返回;
若所述第一结果为所述延时类型,则生成超时异常实例并将所述超时异常实例作为所述第一结果返回。
进一步的,所述方法还包括:
若未命中所述开源组件层Mock插桩,则进入真实调用;
返回真实结果后结束所述调用请求。
第二方面,本发明实施例提供了一种录制调用动态Mock的录制回放增强装置,包括:
获取单元,用于获取目标服务的预设的应用层Mock插桩和/或预设的开源组件层Mock插桩;
第一处理单元,用于接入调用请求,遍历应用层代码,若所述调用请求的Mock规则命中且匹配所述应用层Mock插桩中的Mock规则,并返回第一结果并结束所述调用请求;
第二处理单元,用于若所述调用请求的Mock规则未命中或未匹配所述应用层Mock插桩,则遍历开源组件层代码,若所述调用请求的Mock规则命中所述开源组件层Mock插桩中的Mock规则,则触发所述开源组件层Mock插桩的监听事件,返回第二结果并根据所述开源组件层Mock插桩中的录制规则进行录制保存。
第三方面,本发明实施例还提供了一种电子设备,包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述第一方面任一项所述的方法的步骤。
在本发明实施例中,提供了一种录制调用动态Mock的录制回放增强方法,包括:获取目标服务的预设的应用层Mock插桩和/或预设的开源组件层Mock插桩;接入调用请求,遍历应用层代码,若调用请求的Mock规则命中且匹配应用层Mock插桩中的Mock规则,并返回第一结果并结束调用请求;若调用请求的Mock规则未命中或未匹配应用层Mock插桩,则遍历开源组件层代码,若调用请求的Mock规则命中开源组件层Mock插桩中的Mock规则,则触发开源组件层Mock插桩的监听事件,返回第二结果并根据开源组件层Mock插桩中的录制规则进行录制保存。通过上述描述可知,本发明的录制调用动态Mock的录制回放增强方法,在开源组件层插入框架Mock,使得开源组件层的录制回放支持Mock需求,兼顾了Mock模拟复杂、异常等测试场景的快捷性和录制回放构造回归用例的快捷性,提升了测试效率,保护了整体测试环境的稳定。同时,应用层Mock与开源组件层的框架Mock形成的双层Mock,可根据不同的需求场景自动切换实现方式,灵活度高且节约服务器成本,缓解了现有的Mock和录制回放同时存在时,无法在低成本实现Mock的同时,保存录制后的Mock结果。
附图说明
为了更清楚地说明本发明具体实施方式或现有技术中的技术方案,下面将对具体实施方式或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施方式,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的一种录制调用动态Mock的录制回放增强方法的流程图;
图2为本发明实施例提供的一种目标系统的框架结构示意图;
图3为本发明实施例提供的一种接入并处理调用请求的方法流程图;
图4为本发明实施例提供的一种Mock插桩的方法流程图;
图5为本发明实施例提供的一种初始化模块的流程图;
图6为本发明实施例提供的一种返回第二结果并录制保存的方法流程图;
图7为本发明实施例提供的一种框架Mock模块的流程图;
图8为本发明实施例提供的一种匹配调用请求的Mock规则的方法流程图;
图9为本发明实施例提供的一种匹配子模块的流程图;
图10为本发明实施例提供的一种处理第一结果的方法流程图;
图11为本发明实施例提供的一种录制调用动态Mock的录制回放增强装置的示意图;
图12为本发明实施例提供的一种电子设备的示意图。
具体实施方式
下面将结合实施例对本发明的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
目前,因录制回放作用于RPC、数据库等开源组件底层,当Mock与录制回放同时存在时,Mock所在的应用业务代码层级直接返回期望值,使得录制请求被拦截从而期望结果无法被录制,导致此类耗时长的复杂场景需要手动回归;或需要搭建额外的Mock服务器,对请求进行标记,使得所有标记的请求都路由到该服务器上,但会导致Mock服务器成本高的问题。
基于此,本实施例提供了一种录制调用动态Mock的录制回放增强方法,该方法在开源组件层插入框架Mock,使得开源组件层的录制回放支持Mock需求,兼顾了Mock模拟复杂、异常等测试场景的快捷性和录制回放构造回归用例的快捷性,提升了效率,保护了整体测试环境的稳定。同时,应用层Mock与开源组件层的框架Mock形成的双层Mock,可根据不同的需求场景自动切换实现方式,灵活度高且节约服务器成本。
实施例一:
根据本发明实施例,提供了一种录制调用动态Mock的录制回放增强方法的实施例,需要说明的是,在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
在阐述本发明实施例之前,首先对本发明中涉及到的缩略语和关键技术语定义进行解释,其中,目标系统:本方法通过java agent方式挂载启动,被挂载方为目标系统;字节码增强框架:开源框架,提供字节码增强功能;录制:通过动态字节码增强技术,对目标服务的方法进行切面,以获取请求在服务内部完整的调用链,包括主调用、子调用的方法、入参、返回结果等;回放:通过动态字节码增强技术,根据录制的结果在同一目标服务内复制请求,在各子调用上进行Mock,以验证服务内部逻辑;主调用:目标系统提供服务的接口方法;子调用:目标系统提供服务的接口方法被调用后,系统内部逻辑中向其他系统或数据库等发起的调用;Mock:插桩目标方法,触发监听事件后返回期望结果(其中,期望结果为期望返回的Mock结果,包含返回特定值、特定异常、延时三种类型),代替真实请求,需要注意的是本发明中Mock方法均为目标系统的子调用;应用层:实现业务的代码,Mock插桩埋点方法通常为开源组件的调用入口;开源组件层:开源组件原生代码,录制插桩埋点写死为源码中最合适的核心代码。
图1是根据本发明实施例的一种录制调用动态Mock的录制回放增强方法的流程图,如图1所示,该方法包括如下步骤:
步骤S102,获取目标服务的预设的应用层Mock插桩和/或预设的开源组件层Mock插桩;
具体的,目标系统提供的目标服务启动并完成服务信息配置后,对目标服务预设在应用层内的Mock插桩和/或开源组件层内的Mock插桩进行获取,以便于完成后续接入调用请求后的流程。
其中,目标系统的框架结构示意图如图2所示,包括:初始化模块、Mock规则模块、应用层Mock模块、录制模块和框架Mock模块。
初始化模块:目标系统的目标服务启动后,向后台应用请求目标服务的服务信息,传递给Mock规则模块,调用状态管理子模块启动监听并根据录制规则启动录制模块,其中,上述服务信息包括:生效中的Mock规则和录制规则。
Mock规则模块:接收到目标系统初始化模块传参后,将Mock规则按匹配方式(其中,匹配方式分为隐式传参和参数匹配)、调用类型(其中,调用类型为应用层方法将调用的子调用类型,且调用类型与录制规则的录制类型Dubbo、MySQL、Mybatis等相对应)等条件整理后保存在缓存中。
应用层Mock模块:作用于目标系统应用业务代码,常为开源组件的调用入口,使用字节码增强框架插桩用户设定的方法;对应方法发生调用时,触发监听事件,传入请求特征调用匹配子模块获取匹配结果,若匹配则返回期望结果,中断该调用;不匹配则继续原有逻辑,调用进入开源组件。
录制模块:作用于开源组件源码,使用字节码增强框架插桩开源组件中固定的核心方法;对应方法发生调用时,请求和返回结果分别触发监听事件,记录请求参数、返回结果等信息,将实例信息序列化后传递给后台应用保存。
框架Mock模块:初始化时,被状态管理子模块调用并设置Mock开启状态;录制模块的插桩触发监听事件后,若Mock状态为开启,则传入请求特征调用匹配子模块获取匹配结果,若匹配,则将期望结果写入录制模块中以完成Mock功能,并中断该调用;不匹配或Mock状态为关闭则继续原有逻辑,真实调用并记录。
其中,上述Mock规则模块又包括:状态管理子模块和匹配子模块。
状态管理子模块:从Mock规则模块的缓存中拉取Mock规则和录制规则,计算得到未开启录制的调用类型所对应的Mock规则,抽取对应的Mock方法调用应用层Mock模块启动监听;计算得到开启录制的调用类型所对应的Mock规则,调用框架Mock模块开启Mock标识。
匹配子模块:接收到应用层Mock模块、框架Mock模块的匹配请求后,根据匹配方式,在缓存的Mock规则中进行匹配,并返回匹配结果和命中的规则。
步骤S104,接入调用请求,遍历应用层代码,若调用请求的Mock规则命中且匹配应用层Mock插桩中的Mock规则,并返回第一结果并结束调用请求;
具体的,参考图3,目标服务主调用接入调用请求后,首先遍历应用层代码且经过应用层Mock插桩,若调用请求的Mock规则内调用的Mock方法命中了应用层Mock插桩的方法,则触发应用层Mock插桩的监听事件,即进入匹配子模块进行Mock规则的匹配;当匹配子模块显示匹配成功时,则返回Mock测试的期望结果(即第一结果),并结束当前的调用请求。
步骤S106,若调用请求的Mock规则未命中或未匹配应用层Mock插桩,则遍历开源组件层代码,若调用请求的Mock规则命中开源组件层Mock插桩中的Mock规则,则触发开源组件层Mock插桩的监听事件,返回第二结果并根据开源组件层Mock插桩中的录制规则进行录制保存。
具体的,参考图3,当上述步骤S104中的调用请求在遍历应用层代码且经过应用层代码插桩后,其Mock规则内调用的Mock方法未命中应用层Mock插桩的方法,或者命中了应用层Mock插桩的方法但进入匹配子模块后显示匹配失败,则继续原有逻辑,即进入开源组件层,遍历开源组件层代码且经过开源组件层Mock插桩。
若上述调用请求的Mock规则内的Mock方法命中了开源组件层Mock插桩的方法,则触发开源组件层Mock插桩的监听事件并返回监听事件的第二结果,同时根据开源组件层中的录制规则对第二结果进行录制保存。
在本发明实施例中,提供了一种录制调用动态Mock的录制回放增强方法,包括:获取目标服务的预设的应用层Mock插桩和/或预设的开源组件层Mock插桩;接入调用请求,遍历应用层代码,若调用请求的Mock规则命中且匹配应用层Mock插桩中的Mock规则,并返回第一结果并结束调用请求;若调用请求的Mock规则未命中或未匹配应用层Mock插桩,则遍历开源组件层代码,若调用请求的Mock规则命中开源组件层Mock插桩中的Mock规则,则触发开源组件层Mock插桩的监听事件,返回第二结果并根据开源组件层Mock插桩中的录制规则进行录制保存。通过上述描述可知,本发明的录制调用动态Mock的录制回放增强方法,在开源组件层插入框架Mock,使得开源组件层的录制回放支持Mock需求,兼顾了Mock模拟复杂、异常等测试场景的快捷性和录制回放构造回归用例的快捷性,提升了测试效率,保护了整体测试环境的稳定。同时,应用层Mock与开源组件层的框架Mock形成的双层Mock,可根据不同的需求场景自动切换实现方式,灵活度高且节约服务器成本,缓解了现有的Mock和录制回放同时存在时,无法在低成本实现Mock的同时,保存录制后的Mock结果。
上述内容对本发明的录制调用动态Mock的录制回放增强方法进行了简要介绍,下面对其中涉及到的具体内容进行详细描述。
在本发明的一个可选实施例中,参考图4,在步骤S102获取目标服务的预设的应用层Mock插桩和/或预设的开源组件层Mock插桩之前,还包括如下步骤:
步骤S201:获取目标服务信息,其中,目标服务信息包括:Mock规则和录制规则;
具体的,目标服务启动后,初始化模块会对目标服务的服务信息进行配置,具体的初始化模块流程参考图5。
首先初始化模块调用后台应用获取目标服务的Mock规则和录制规则,并将上述规则传递到Mock规则模块,进而在Mock规则模块内按匹配方式、调用类型等条件分类后存储于缓存内。
步骤S202:根据目标服务信息的录制规则的开启情况,确定开源组件层的录制模块的启动状态;
具体的,参考图5,初始化模块判断获取到的录制规则是否存在开启的录制规则,若存在,则调用开源组件层的录制模块启动录制;若不存在,则不启动录制模块的录制。
步骤S203:根据目标服务信息的Mock规则的生效状态和目标服务信息中的Mock规则对应的录制规则的开启状态,在应用层插入Mock插桩、在开源组件层插入Mock插桩或不启动对调用请求的Mock规则的监听,其中,在应用层插入Mock插桩表示启动应用层Mock模块对调用请求的Mock规则中的Mock方法进行监听,在开源组件层插入Mock插桩表示启动开源组件层的框架Mock模块对调用请求的Mock规则中的Mock方法进行监听。
具体的,参考图5,初始化模块判断获取到的录制规则是否存在开启的录制规则的同时,会调用Mock状态管理子模块触发Mock启动流程,并利用Mock状态管理子模块对步骤S201中Mock规则模块缓存内的Mock规则的生效状态进行判断。
如果Mock状态管理子模块查询到Mock规则模块缓存内不存在生效的Mock规则,则不再进行后续步骤,即不启动对调用请求中Mock规则的监听;
若存在生效的Mock规则,则进一步拉取Mock规则模块缓存内的录制规则,查询录制回放各框架的开启状态;对于未开启录制的录制规则,抽取对应的Mock规则中的Mock方法并调用应用层Mock模块,启动对Mock方法的监听,即在应用层插入Mock插桩;对于开启录制的录制规则,则抽取Mock规则中的Mock方法并调用框架Mock模块,设置框架Mock模块的状态为开启后启动对Mock方法的监听,即在开源组件层插入Mock插桩。
为了对本发明实施例更好的理解,下面以一个具体的举例1对本发明的方法进行介绍:
(1)首先设定规则配置如下:
a.用户新建Dubbo的Mock规则D,Mock方法D.m,匹配条件D.c,期望返回结果D.r,并生效Mock规则;
b.用户新建Mybatis的Mock规则M,Mock方法M.m,匹配条件M.c,期望返回结果M.r,并生效Mock规则;
c.用户开启了Dubbo消费和服务的录制;
d.用户未开启Mybatis的录制。
(2)目标服务启动后,进入初始化流程,初始化模块拉取到Mock规则D、M,录制规则Dubbo消费和服务,并将Mock规则和录制规则写入Mock规则模块。
(3)初始化模块判断有开启的Dubbo消费和服务录制规则,调用录制模块分别启动对Dubbo消费和服务的监听:
a.Dubbo消费录制模块开启,监听所有Dubbo消费请求;
b.Dubbo服务录制模块开启,监听所有Dubbo服务请求。
(4)初始化模块调用状态管理子模块,后者拉取缓存中的规则数据,判断生效了Dubbo、Mybatis的Mock规则,开源组件开启Dubbo消费和服务的录制:
a.状态管理子模块调用应用层Mock模块开启规则M的M.m方法的监听;
b.状态管理子模块调用录制模块,设置Dubbo消费录制框架Mock模块状态设为启动,监听的所有Dubbo消费请求将会调用框架Mock模块。
在本发明的一个可选实施例中,参考图6,在步骤S104中触发开源组件层Mock插桩的监听事件,返回第二结果并根据开源组件层Mock插桩中的录制规则进行录制保存,还包括如下步骤:
步骤S301:利用开源组件层的录制模块按照开源组件层Mock插桩中的录制规则记录调用请求的请求信息;
具体的,参考图7,录制模块作用于开源组件层,当调用请求的Mock规则内的Mock方法命中开源组件层Mock插桩的方法后,其请求开始和返回结果时会分别触发监听事件。在第一次触发监听事件时,调用开源组件层的录制模块对调用请求的信息进行记录。
步骤S302:判断开源组件层的框架Mock模块是否开启;
具体的,录制模块完成上述调用请求信息的记录后,会进一步判断框架Mock模块的开启状态,并根据框架Mock模块的开启状态执行对应的后续步骤。
步骤S303:若开启,则判断调用请求的Mock规则是否匹配目标服务信息中的Mock规则;
具体的,若录制模块判断出框架Mock模块处于开启状态,则调用框架Mock模块对上述调用请求内的Mock规则进行处理。进而框架Mock模块调用Mock规则模块内的匹配子模块判断上述调用请求内的Mock规则是否匹配Mock规则模块缓存内的目标服务的Mock规则。
步骤S304:若匹配成功,返回期望结果并录制保存期望结果于第一缓存,输出期望结果后结束调用请求;
具体的,若步骤S303中匹配子模块显示匹配成功,则返回Mock测试的期望结果并输出期望结果后结束调用请求,其中期望结果利用录制模块录制后保存于第一缓存内。
步骤S305:若开源组件层的框架Mock模块未开启或者匹配失败,则进入真实调用,返回真实结果并录制保存真实结果于第二缓存。
具体的,若步骤S303中录制模块判断出框架Mock模块未处于开启状态,或者框架Mock模块处于开启状态但匹配子模块对上述调用请求内的Mock规则进行匹配时显示匹配失败,则无法进入Mock测试,而是继续原有逻辑进入真实调用并暂时将该调用过程存储于第二缓存。
下面基于举例1继续以一个具体的举例2对本发明的方法进行介绍:
(1)外部系统发起对目标系统提供的Dubbo服务接口B的调用A,且目标系统内部调用逻辑如下:
a.Dubbo服务接口B收到调用A;
b.向下调用Dubbo接口方法消费系统C提供的C.m,获取返回值b2;
c.向下调用Dubbo接口方法消费系统D提供的D.m,获取返回值b3;
d.向下调用Mybatis实现方法M.m,获取返回值b4;
e.Dubbo服务接口B返回结果b0。
(2)Dubbo服务录制模块,触发a调用前事件,记录请求信息后判断未开启Mock模块,于是存入第二缓存。
(3)Dubbo消费录制模块,触发b调用前事件,记录请求信息后判断开启mock模块,调用Mock规则模块判断为不匹配,存入第二缓存。
(4)Dubbo服务录制模块,触发b调用后事件,从缓存获取请求数据,记录返回结果b2,加入第一缓存清单(List)。
(5)Dubbo消费录制模块,触发c调用前事件,记录请求信息后判断开启Mock模块,调用Mock规则模块判断为匹配,处理Mock规则的期望结果,并将期望结果记录为返回值后加入第一缓存List,抛出结果终止本子调用,不再进入调用后事件。
(6)应用层Mock模块,触发d调用前事件,调用Mock规则模块判断为匹配,抛出返回期望结果终止该子调用,不再进入调用后事件。
(7)Dubbo服务录制模块,触发a调用后事件,调用第二缓存获取请求数据,记录返回结果,并获取第一缓存List。
此时第一缓存List包含b方法的真实返回信息,以及c方法的Mock期望返回信息;实现了将需要在消费系统C中长时间配置的场景,通过Mock返回期望值的方式录制成用例。
在本发明的一个可选实施例中,在步骤S106中触发开源组件层Mock插桩的监听事件,返回第二结果并根据开源组件层Mock插桩中的录制规则进行录制保存,还包括:调用第二缓存并获取其内部请求信息;记录请求信息后存入第一缓存并结束调用请求。
具体的,上述步骤S303中的真实调用完成后,其返回结果时会触发第二次监听事件,此时将获取第二缓存内存储的请求信息,并记录真实调用返回的真实结果,进而将该真实结果转存到第一缓存并结束调用请求。
其中,当上述调用请求的两次监听事件均完成后,可以获取第一缓存的信息,从而得到保存完整的调用链。
在本发明的一个可选实施例中,参考图8,判断调用请求的Mock规则是否匹配目标服务信息的Mock规则,包括如下步骤:
步骤S401:判断调用请求的Mock规则对应的Mock方法是否生效;
具体的,参考图9,当调用匹配子模块对调用请求的Mock规则进行匹配时,首先判断当前调用请求的调用类型是否存在生效Mock规则,若不存在,则无法进入Mock测试,而是继续原有逻辑进入真实调用;若存在,则进入Mock测试的后续步骤。
步骤S402:若生效,则获取调用请求的Mock方法的隐式传参UID(UniqueIdentifier,唯一标识符);
具体的,若上述调用请求的调用类型存在生效Mock规则,则进一步判断该调用类型的Mock规则内部的Mock方法是否生效,若未生效,同样无法进行Mock测试,而是继续原有逻辑进入真实调用;若生效,则继续Mock测试的后续步骤。
步骤S403:若获取到调用请求的Mock方法的隐式传参UID,则利用隐式传参UID标记调用请求,并判断标记后的调用请求的Mock规则是否匹配目标服务信息的Mock规则;
具体的,当判断出上述Mock方法生效后,获取该Mock方法的隐式传参UID并利用隐式传参UID标记调用请求,进而判断标记后的调用请求的Mock规则是否匹配Mock规则模块缓存内的目标服务信息的Mock规则。
步骤S404:若匹配成功,则返回匹配的Mock规则;
具体的,若标记后的调用请求的Mock规则与Mock规则模块缓存内的目标服务信息的Mock规则相匹配,则返回匹配的Mock规则。
步骤S405:若匹配失败,则开始遍历开源组件层代码或进入真实调用。
具体的,若标记后的调用请求的Mock规则与Mock规则模块缓存内的目标服务信息的Mock规则匹配失败,则继续原有逻辑,遍历开源组件层代码或进入真实调用。
下面基于举例1的规则配置继续以一个具体的举例3对本发明的方法进行介绍:
(1)Dubbo子调用A有隐式传参UID U1,发起匹配时,获取隐式传参U1,隐式传参规则集合中无对应规则,返回未命中。
(2)Mybatis子调用B无隐式传参UID,发起匹配时,获取隐式传参为空,Mybatis普通规则集合轮询判断请求,即规则M,参数是否满足条件M.c,满足则返回规则M,不满足则返回未命中。
(3)Dubbo子调用C无隐式传参UID,发起匹配时,获取隐式传参为空,Dubbo普通规则集轮询判断请求,即规则D,参数是否满足条件D.c,满足则返回规则D,不满足则返回未命中。
在本发明的一个可选实施例中,判断调用请求的Mock规则是否匹配目标服务信息的Mock规则,还包括:
若未获取到调用请求的Mock方法的隐式传参UID;
判断调用请求的Mock规则的请求参数是否满足目标服务信息的Mock规则的请求参数;
若满足,则返回对应的Mock规则;
若不满足,则开始遍历开源组件层代码或进入真实调用。
具体的,若上述步骤S402中获取调用请求的Mock方法的隐式传参UID时,未能获取到隐式传参UID,则利用匹配子模块判断调用请求的Mock规则的请求参数是否满足目标服务信息的Mock规则的请求参数,若满足,则返回对应的Mock规则并进入后续流程;若不满足,则继续原有逻辑,遍历开源组件层代码或进入真实调用。
在本发明的一个可选实施例中,第一结果的类型包括以下任一种:特定值类型、特定异常类型、延时类型,返回第一结果,包括:
若第一结果为特定值类型,则对预设特定值进行反序列化,并将反序列化的结果作为第一结果返回;
若第一结果为特定异常类型,则生成特定异常实例并将特定异常实例作为第一结果返回;
若第一结果为延时类型,则生成超时异常实例并将超时异常实例作为第一结果返回。
具体的,参考图10,返回第一结果后根据第一结果的类型进入对应的结果处理流程,其中,第一结果的类型包括以下任以种:特定值类型、特定异常类型、延时类型。
若返回的Mock规则对应输出的第一结果为特定值,则将该特定值反序列化成实例,并该实例作为期望的Mock结果输出;若返回的Mock规则对应输出的第一结果的类型为特定异常,则生成特定异常实例并将该实例作为期望的Mock结果输出;若返回的Mock规则对应输出的第一结果的类型为延时,则生成超时异常实例,并将该实例作为期望的Mock结果输出。
在本发明的一个可选实施例中,若未命中开源组件层Mock插桩,则进入真实调用;返回真实结果后结束调用请求。
具体的,参考图3,若步骤S106中调用请求内的Mock规则未命中开源组件层Mock插桩,则无法进入Mock测试,而是继续原有逻辑进入真实调用,并在完成调用后,输出真实调用的真实结果从而结束调用请求。
最后在前述举例的基础上以具体的举例4和5对本发明的方法的上述过程进行介绍:
举例4:
(1)首先新增规则配置如下:
a.用户新建Dubbo的Mock规则S,Mock方法S.m,匹配条件S.c,期望返回结果S.r为抛出Runtime异常,并开启规则;
b.用户未开启录制回放。
(2)初始化后,仅开启应用层针对方法S.m的监听。
(3)用户发起对目标系统提供的Dubbo服务接口B的调用A,且目标系统内部调用逻辑如下:
a.Dubbo服务接口B收到调用A;
b.向下调用Dubbo接口方法消费系统C提供的C.m,获取返回值b1;
c.Dubbo服务接口B返回结果b0。
(4)应用层Mock模块,触发(3)b调用前事件,调用Mock规则模块判断为匹配,抛出返回期望异常结果终止该子调用,不再进入调用后事件。
此举例常见于功能测试前中期,目标系统整体状态不稳定时的手工测试点覆盖等场景。
举例5:
(1)首先新增规则的配置如下:
a.用户新建Dubbo的Mock规则T,Mock方法T.m,匹配条件为UID U1,期望返回结果T.r为抛出Runtime异常,并开启规则;
b.用户开启Dubbo服务、消费录制回放。
(2)初始化后,Dubbo服务录制模块、Dubbo消费录制模块生效,Dubbo消费录制Mock开启。
(3)用户发起对目标系统提供的Dubbo服务接口B的调用A,并带上隐式传参UIDU1,且目标系统内部调用逻辑如下:
a.Dubbo服务接口B收到调用A;
b.向下调用Dubbo接口方法消费系统C提供的C.m,获取返回值b1;
c.Dubbo服务接口B返回结果b0。
(4)Dubbo服务录制模块,触发(3)a调用前事件,记录请求信息后判断未开启Mock模块,于是存入第二缓存。
(5)框架层Mock模块,触发(3)b调用前事件,记录请求信息后判断开启Mock模块,调用Mock规则模块判断为UID匹配,处理Mock规则的期望结果,并将期望结果记录为返回异常后加入第一缓存缓存List,抛出结果终止本子调用,不再进入调用后事件。
(6)Dubbo服务录制模块,触发(3)a调用后事件,调用第一缓存获取请求数据,记录返回结果,并获取第二缓存List。
上述举例5可用于录制目标系统请求参数无特征等场景,利用隐式传参标记调用请求实现精准的Mock。
本发明的录制调用动态Mock的录制回放增强方法,应用层Mock模块主要针对测试任务前期的功能测试以及无需将过程录制保存的场景,整体逻辑简单,系统消耗低。录制模块和框架Mock模块主要针对测试任务中后期的回归测试以及需将过程录制保存的场景,整体逻辑较复杂,系统消耗高。用户可以根据不同的需求场景,自动切换两种Mock的实现方式,提高了测试的灵活度,节约了服务器成本。同时,该方法解决了录制回放测试平台的Mock需求,兼顾了Mock模拟复杂、异常等测试场景的快捷性和录制回放构造回归用例的快捷性,提升了测试效率,保护了整体测试环境的稳定。
实施例二:
本发明实施例还提供了一种录制调用动态Mock的录制回放增强装置,该录制调用动态Mock的录制回放增强装置主要用于执行本发明实施例一中所提供的录制调用动态Mock的录制回放增强方法,以下对本发明实施例提供的录制调用动态Mock的录制回放增强装置做具体介绍。
图11是根据本发明实施例的一种录制调用动态Mock的录制回放增强装置的示意图,如图11所示,该装置主要包括:获取单元10、第一处理单元20和第二处理单元30,其中:
获取单元10,用于获取目标服务的预设的应用层Mock插桩和/或预设的开源组件层Mock插桩;
第一处理单元20,用于接入调用请求,遍历应用层代码,若调用请求的Mock规则命中且匹配应用层Mock插桩中的Mock规则,并返回第一结果并结束调用请求;
第二处理单元30,用于若调用请求的Mock规则未命中或未匹配应用层Mock插桩,则遍历开源组件层代码,若调用请求的Mock规则命中开源组件层Mock插桩中的Mock规则,则触发开源组件层Mock插桩的监听事件,返回第二结果并根据开源组件层Mock插桩中的录制规则进行录制保存。
在本发明实施例中,提供了一种录制调用动态Mock的录制回放增强装置,包括:获取目标服务的预设的应用层Mock插桩和/或预设的开源组件层Mock插桩;接入调用请求,遍历应用层代码,若调用请求的Mock规则命中且匹配应用层Mock插桩中的Mock规则,并返回第一结果并结束调用请求;若调用请求的Mock规则未命中或未匹配应用层Mock插桩,则遍历开源组件层代码,若调用请求的Mock规则命中开源组件层Mock插桩中的Mock规则,则触发开源组件层Mock插桩的监听事件,返回第二结果并根据开源组件层Mock插桩中的录制规则进行录制保存。通过上述描述可知,本发明的录制调用动态Mock的录制回放增强方法,在开源组件层插入框架Mock,使得开源组件层的录制回放支持Mock需求,兼顾了Mock模拟复杂、异常等测试场景的快捷性和录制回放构造回归用例的快捷性,提升了效率,保护了整体测试环境的稳定。同时,应用层Mock与开源组件层的框架Mock形成的双层Mock,可根据不同的需求场景自动切换实现方式,灵活度高且节约服务器成本,缓解了现有的Mock和录制回放同时存在时,无法在低成本实现Mock的同时,保存录制后的Mock结果。
可选地,该装置还用于:获取目标服务信息,其中,目标服务信息包括:Mock规则和录制规则;根据目标服务信息的录制规则的开启情况,确定开源组件层的录制模块的启动状态;根据目标服务信息的Mock规则的生效状态和目标服务信息中的Mock规则对应的录制规则的开启状态,在应用层插入Mock插桩、在开源组件层插入Mock插桩或不启动对调用请求的Mock规则的监听,其中,在应用层插入Mock插桩表示启动应用层Mock模块对调用请求的Mock规则中的Mock方法进行监听,在开源组件层插入Mock插桩表示启动开源组件层的框架Mock模块对调用请求的Mock规则中的Mock方法进行监听。
可选地,第二处理单元还用于:利用开源组件层的录制模块按照开源组件层Mock插桩中的录制规则记录调用请求的请求信息;判断开源组件层的框架Mock模块是否开启;若开启,则判断调用请求的Mock规则是否匹配目标服务信息中的Mock规则;若匹配成功,返回期望结果并录制保存期望结果于第一缓存,输出期望结果后结束调用请求;若开源组件层的框架Mock模块未开启或者匹配失败,则进入真实调用,返回真实结果并录制保存真实结果于第二缓存。
可选地,第二处理单元还用于:调用第二缓存并获取其内部请求信息;记录请求信息后存入第一缓存并结束调用请求。
可选地,第二处理单元还用于:判断调用请求的Mock规则对应的Mock方法是否生效;若生效,则获取调用请求的Mock方法的隐式传参UID;若获取到调用请求的Mock方法的隐式传参UID,则利用隐式传参UID标记调用请求,并判断标记后的调用请求的Mock规则是否匹配目标服务信息的Mock规则;若匹配成功,则返回匹配的Mock规则;若匹配失败,则开始遍历开源组件层代码或进入真实调用。
可选地,第二处理单元还用于:若未获取到调用请求的Mock方法的隐式传参UID;判断调用请求的Mock规则的请求参数是否满足目标服务信息的Mock规则的请求参数;若满足,则返回对应的Mock规则;若不满足,则开始遍历开源组件层代码或进入真实调用。
可选地,该装置还用于:第一结果的类型包括以下任一种:特定值类型、特定异常类型、延时类型,返回第一结果,包括:若第一结果为特定值类型,则对预设特定值进行反序列化,并将反序列化的结果作为第一结果返回;若第一结果为特定异常类型,则生成特定异常实例并将特定异常实例作为第一结果返回;若第一结果为延时类型,则生成超时异常实例并将超时异常实例作为第一结果返回。
可选地,该装置还用于:若未命中开源组件层Mock插桩,则进入真实调用;返回真实结果后结束调用请求。
本发明实施例所提供的装置,其实现原理及产生的技术效果和前述方法实施例相同,为简要描述,装置实施例部分未提及之处,可参考前述方法实施例中相应内容。
如图12所示,本申请实施例提供的一种电子设备500,包括:处理器501、存储器502和总线,所述存储器502存储有所述处理器501可执行的机器可读指令,当电子设备运行时,所述处理器501与所述存储器502之间通过总线通信,所述处理器501执行所述机器可读指令,以执行如上述词向量的增量生成方法的步骤。
具体地,上述存储器502和处理器501能够为通用的存储器和处理器,这里不做具体限定,当处理器501运行存储器502存储的计算机程序时,能够执行上述词向量的增量生成方法。
处理器501可能是一种集成电路芯片,具有信号的处理能力。在实现过程中,上述方法的各步骤可以通过处理器501中的硬件的集成逻辑电路或者软件形式的指令完成。上述的处理器501可以是通用处理器,包括中央处理器(Central Processing Unit,简称CPU)、网络处理器(Network Processor,简称NP)等;还可以是数字信号处理器(DigitalSignal Processing,简称DSP)、专用集成电路(Application Specific IntegratedCircuit,简称ASIC)、现成可编程门阵列(Field-Programmable Gate Array,简称FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本申请实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合本申请实施例所公开的方法的步骤可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器502,处理器501读取存储器502中的信息,结合其硬件完成上述方法的步骤。
本申请实施例所提供的词向量的增量生成装置可以为设备上的特定硬件或者安装于设备上的软件或固件等。本申请实施例所提供的装置,其实现原理及产生的技术效果和前述方法实施例相同,为简要描述,装置实施例部分未提及之处,可参考前述方法实施例中相应内容。所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,前述描述的系统、装置和单元的具体工作过程,均可以参考上述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的实施例中,应该理解到,所揭露装置和方法,可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,又例如,多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些通信接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
再例如,附图中的流程图和框图显示了根据本申请的多个实施例的装置、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现方式中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请提供的实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台电子设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述车辆标记方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-Only Memory,简称ROM)、随机存取存储器(Random Access Memory,简称RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释,此外,术语“第一”、“第二”、“第三”等仅用于区分描述,而不能理解为指示或暗示相对重要性。
最后应说明的是:以上所述实施例,仅为本申请的具体实施方式,用以说明本申请的技术方案,而非对其限制,本申请的保护范围并不局限于此,尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,其依然可以对前述实施例所记载的技术方案进行修改或可轻易想到变化,或者对其中部分技术特征进行等同替换;而这些修改、变化或者替换,并不使相应技术方案的本质脱离本申请实施例技术方案的范围。都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以权利要求的保护范围为准。
Claims (10)
1.一种录制调用动态Mock的录制回放增强方法,其特征在于,包括:
获取目标服务的预设的应用层Mock插桩和/或预设的开源组件层Mock插桩;
接入调用请求,遍历应用层代码,若所述调用请求的Mock规则命中且匹配所述应用层Mock插桩中的Mock规则,则返回第一结果并结束所述调用请求;
若所述调用请求的Mock规则未命中或未匹配所述应用层Mock插桩,则遍历开源组件层代码,若所述调用请求的Mock规则命中所述开源组件层Mock插桩中的Mock规则,则触发所述开源组件层Mock插桩的监听事件,返回第二结果并根据所述开源组件层Mock插桩中的录制规则进行录制保存。
2.根据权利要求1所述的录制调用动态Mock的录制回放增强方法,其特征在于,在获取目标服务的预设的应用层Mock插桩和/或预设的开源组件层Mock插桩之前,所述方法还包括:
获取目标服务信息,其中,所述目标服务信息包括:Mock规则和录制规则;
根据所述目标服务信息的录制规则的开启情况,确定所述开源组件层的录制模块的启动状态;
根据所述目标服务信息的Mock规则的生效状态和所述目标服务信息中的Mock规则对应的录制规则的开启状态,在所述应用层插入Mock插桩、在所述开源组件层插入Mock插桩或不启动对所述调用请求的Mock规则的监听,其中,在所述应用层插入Mock插桩表示启动应用层Mock模块对所述调用请求的Mock规则中的Mock方法进行监听,在所述开源组件层插入Mock插桩表示启动所述开源组件层的框架Mock模块对所述调用请求的Mock规则中的Mock方法进行监听。
3.根据权利要求1所述的录制调用动态Mock的录制回放增强方法,其特征在于,触发所述开源组件层Mock插桩的监听事件,返回第二结果并根据所述开源组件层Mock插桩中的录制规则进行录制保存,包括:
利用所述开源组件层的录制模块按照所述开源组件层Mock插桩中的录制规则记录所述调用请求的请求信息;
判断所述开源组件层的框架Mock模块是否开启;
若开启,则判断所述调用请求的Mock规则是否匹配目标服务信息中的Mock规则;
若匹配成功,返回期望结果并录制保存所述期望结果于第一缓存,输出所述期望结果后结束所述调用请求;
若所述开源组件层的框架Mock模块未开启或者匹配失败,则进入真实调用,返回真实结果并录制保存所述真实结果于第二缓存。
4.根据权利要求3所述的录制调用动态Mock的录制回放增强方法,其特征在于,在返回真实结果并录制保存所述真实结果于第二缓存之后,所述方法还包括:
调用所述第二缓存并获取其内部请求信息;
记录所述请求信息后存入所述第一缓存并结束所述调用请求。
5.根据权利要求4所述的录制调用动态Mock的录制回放增强方法,其特征在于,判断所述调用请求的Mock规则是否匹配所述目标服务信息的Mock规则,包括:
判断所述调用请求的Mock规则对应的Mock方法是否生效;
若生效,则获取所述调用请求的Mock方法的隐式传参UID;
若获取到所述调用请求的Mock方法的隐式传参UID,则利用所述隐式传参UID标记所述调用请求,并判断标记后的调用请求的Mock规则是否匹配所述目标服务信息的Mock规则;
若匹配成功,则返回匹配的Mock规则;
若匹配失败,则开始遍历所述开源组件层代码或进入真实调用。
6.根据权利要求5所述的录制调用动态Mock的录制回放增强方法,其特征在于,判断所述调用请求的Mock规则是否匹配所述目标服务信息的Mock规则,还包括:
若未获取到所述调用请求的Mock方法的隐式传参UID;
判断所述调用请求的Mock规则的请求参数是否满足所述目标服务信息的Mock规则的请求参数;
若满足,则返回对应的Mock规则;
若不满足,则开始遍历所述开源组件层代码或进入真实调用。
7.根据权利要求1所述的录制调用动态Mock的录制回放增强方法,其特征在于,所述第一结果的类型包括以下任一种:特定值类型、特定异常类型、延时类型,返回第一结果,包括:
若所述第一结果为所述特定值类型,则对预设特定值进行反序列化,并将反序列化的结果作为所述第一结果返回;
若所述第一结果为所述特定异常类型,则生成特定异常实例并将所述特定异常实例作为所述第一结果返回;
若所述第一结果为所述延时类型,则生成超时异常实例并将所述超时异常实例作为所述第一结果返回。
8.根据权利要求1所述的录制调用动态Mock的录制回放增强方法,其特征在于,所述方法还包括:
若未命中所述开源组件层Mock插桩,则进入真实调用;
返回真实结果后结束所述调用请求。
9.一种录制调用动态Mock的录制回放增强装置,其特征在于,包括:
获取单元,用于获取目标服务的预设的应用层Mock插桩和/或预设的开源组件层Mock插桩;
第一处理单元,用于接入调用请求,遍历应用层代码,若所述调用请求的Mock规则命中且匹配所述应用层Mock插桩中的Mock规则,并返回第一结果并结束所述调用请求;
第二处理单元,用于若所述调用请求的Mock规则未命中或未匹配所述应用层Mock插桩,则遍历开源组件层代码,若所述调用请求的Mock规则命中所述开源组件层Mock插桩中的Mock规则,则触发所述开源组件层Mock插桩的监听事件,返回第二结果并根据所述开源组件层Mock插桩中的录制规则进行录制保存。
10.一种电子设备,包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现上述权利要求1至8中任一项所述的方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210020295.3A CN114553929B (zh) | 2022-01-10 | 录制调用动态Mock的录制回放增强方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210020295.3A CN114553929B (zh) | 2022-01-10 | 录制调用动态Mock的录制回放增强方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN114553929A true CN114553929A (zh) | 2022-05-27 |
CN114553929B CN114553929B (zh) | 2024-04-12 |
Family
ID=
Citations (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20150135158A1 (en) * | 2013-11-14 | 2015-05-14 | Dimitar Tenev | Isolated testing of distributed development projects |
CN106603283A (zh) * | 2016-12-13 | 2017-04-26 | 广州唯品会信息科技有限公司 | 一种模拟服务的方法、装置及集中管理平台 |
CN106776313A (zh) * | 2016-12-13 | 2017-05-31 | 广州唯品会信息科技有限公司 | 一种模拟服务的方法、装置及集中管理平台 |
CN108733554A (zh) * | 2017-04-21 | 2018-11-02 | 北京京东尚科信息技术有限公司 | Mock方法和装置 |
CN109271325A (zh) * | 2018-10-26 | 2019-01-25 | 携程旅游网络技术(上海)有限公司 | 应用的测试方法、系统、电子设备和存储介质 |
CN109656806A (zh) * | 2018-10-29 | 2019-04-19 | 口碑(上海)信息技术有限公司 | 一种接口数据的回放测试方法及装置 |
CN110008113A (zh) * | 2019-02-20 | 2019-07-12 | 北京三快在线科技有限公司 | 一种测试方法、装置、电子设备 |
CN110262979A (zh) * | 2019-06-27 | 2019-09-20 | 苏宁消费金融有限公司 | 一种基于mock平台的模拟第三方数据源测试方法 |
CN111427766A (zh) * | 2020-02-20 | 2020-07-17 | 北京齐尔布莱特科技有限公司 | 一种请求处理方法、装置和代理服务器 |
KR20200086594A (ko) * | 2019-01-09 | 2020-07-17 | 윤지환 | 사기업/공기업 입사지원자들을 상대로 웹 상에서 모의면접 및 평가를 제공하는 서비스 |
CN113468061A (zh) * | 2021-07-15 | 2021-10-01 | 浙江百应科技有限公司 | 一种基于录制回放的自动化测试方法、装置及电子设备 |
CN113590497A (zh) * | 2021-09-27 | 2021-11-02 | 腾讯科技(深圳)有限公司 | 业务服务的测试方法、装置、电子设备及存储介质 |
CN113742228A (zh) * | 2021-09-02 | 2021-12-03 | 杭州网易云音乐科技有限公司 | 测试、数据回放及录制方法、系统、装置、设备及介质 |
Patent Citations (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20150135158A1 (en) * | 2013-11-14 | 2015-05-14 | Dimitar Tenev | Isolated testing of distributed development projects |
CN106603283A (zh) * | 2016-12-13 | 2017-04-26 | 广州唯品会信息科技有限公司 | 一种模拟服务的方法、装置及集中管理平台 |
CN106776313A (zh) * | 2016-12-13 | 2017-05-31 | 广州唯品会信息科技有限公司 | 一种模拟服务的方法、装置及集中管理平台 |
CN108733554A (zh) * | 2017-04-21 | 2018-11-02 | 北京京东尚科信息技术有限公司 | Mock方法和装置 |
CN109271325A (zh) * | 2018-10-26 | 2019-01-25 | 携程旅游网络技术(上海)有限公司 | 应用的测试方法、系统、电子设备和存储介质 |
CN109656806A (zh) * | 2018-10-29 | 2019-04-19 | 口碑(上海)信息技术有限公司 | 一种接口数据的回放测试方法及装置 |
KR20200086594A (ko) * | 2019-01-09 | 2020-07-17 | 윤지환 | 사기업/공기업 입사지원자들을 상대로 웹 상에서 모의면접 및 평가를 제공하는 서비스 |
CN110008113A (zh) * | 2019-02-20 | 2019-07-12 | 北京三快在线科技有限公司 | 一种测试方法、装置、电子设备 |
CN110262979A (zh) * | 2019-06-27 | 2019-09-20 | 苏宁消费金融有限公司 | 一种基于mock平台的模拟第三方数据源测试方法 |
CN111427766A (zh) * | 2020-02-20 | 2020-07-17 | 北京齐尔布莱特科技有限公司 | 一种请求处理方法、装置和代理服务器 |
CN113468061A (zh) * | 2021-07-15 | 2021-10-01 | 浙江百应科技有限公司 | 一种基于录制回放的自动化测试方法、装置及电子设备 |
CN113742228A (zh) * | 2021-09-02 | 2021-12-03 | 杭州网易云音乐科技有限公司 | 测试、数据回放及录制方法、系统、装置、设备及介质 |
CN113590497A (zh) * | 2021-09-27 | 2021-11-02 | 腾讯科技(深圳)有限公司 | 业务服务的测试方法、装置、电子设备及存储介质 |
Non-Patent Citations (2)
Title |
---|
M. FAZZIN等: ""A Framework for Automated Test Mocking of Mobile Apps"", 《020 35TH IEEE/ACM INTERNATIONAL CONFERENCE ON AUTOMATED SOFTWARE ENGINEERING (ASE)》 * |
陈丽萍;张勇;丁智敏;: "自动化单元测试框架EasyMock分析及其应用", 巢湖学院学报, no. 06 * |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10972282B2 (en) | Distributed logging of application events in a blockchain | |
CN110941528B (zh) | 一种基于故障的日志埋点设置方法、装置及系统 | |
WO2019178967A1 (zh) | 基于Jmeter的压力测试方法、装置、设备及存储介质 | |
CN110830234B (zh) | 一种用户流量分配方法及装置 | |
CN110046523B (zh) | 智能合约校验方法及装置和电子设备 | |
US9747449B2 (en) | Method and device for preventing application in an operating system from being uninstalled | |
CN110879781B (zh) | 程序调试方法、装置、电子设备及计算机可读存储介质 | |
US20150106827A1 (en) | Rpc acceleration based on previously memorized flows | |
CN112559635B (zh) | 以太坊联盟链节点的业务处理方法、装置、设备及介质 | |
CN110781149A (zh) | 管理直播间信息的方法、装置、设备及存储介质 | |
CN114978940B (zh) | 链路监控及告警方法、装置、计算机设备和存储介质 | |
KR20090005933A (ko) | 악성 프로그램을 검사하기 위하여 컴퓨터 프로그램의행동을 모델링하는 방법 및 장치 | |
CN117076330A (zh) | 一种访存验证方法、系统、电子设备及可读存储介质 | |
US9329972B2 (en) | Implementing client based throttled error logging in a computing device | |
CN114553929A (zh) | 录制调用动态Mock的录制回放增强方法和装置 | |
CN114553929B (zh) | 录制调用动态Mock的录制回放增强方法和装置 | |
CN112561690A (zh) | 信用卡分期业务接口的测试方法、系统、设备及存储介质 | |
CN114625407A (zh) | 一种ab实验的实现方法、系统、设备及存储介质 | |
US7162401B1 (en) | Monitoring of resources that are being modeled by simulation or emulation | |
CN110704041A (zh) | 软件开发方法及装置 | |
CN107122164B (zh) | 函数地址获取及应用其的方法、装置、设备及存储介质 | |
CN111314151A (zh) | 节点管理方法、装置、电子设备及计算机可读存储介质 | |
CN116431422B (zh) | 用于多仿真环境的访存验证系统、方法及相关设备 | |
CN112783759B (zh) | 白盒测试任务执行方法、装置、存储介质和计算机设备 | |
CN113965383B (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 |