[发明专利]一种服务模拟方法、系统、设备和存储介质在审
申请号: | 201911399610.2 | 申请日: | 2019-12-30 |
公开(公告)号: | CN111159039A | 公开(公告)日: | 2020-05-15 |
发明(设计)人: | 陈立芝;孟令琦 | 申请(专利权)人: | 中信百信银行股份有限公司 |
主分类号: | G06F11/36 | 分类号: | G06F11/36;G06F16/245 |
代理公司: | 北京市兰台律师事务所 11354 | 代理人: | 张峰 |
地址: | 100029 北京*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 服务 模拟 方法 系统 设备 存储 介质 | ||
本申请提供了一种服务模拟方法、系统、设备和存储介质,其中该方法包括:接收客户端的请求报文;当所述请求报文对应的目标服务出现异常无法及时反馈时;获取目标程序一并生成服务模拟代理器执行逻辑,所述目标程序一由服务模拟代理器将服务代理程序嵌入到所述目标服务的目标程序二中获得;执行所述服务模拟代理器执行逻辑,获取与所述请求报文匹配的响应报文,并向所述客户端反馈所述响应报文。
技术领域
本申请涉及计算机技术领域,具体而言,本申请涉及一种服务模拟方法、系统、设备和存储介质。
背景技术
在软件开发过程中,不可避免的要调用一些外部或者系统级别的接口,但在测试时,这些接口或环境可能并不存在。比如在对模块做单元测试时,发现该模块所依赖的其他模块或接口还没有建立好。应对这种情形,产生了服务模拟的需求。服务模拟是一种模拟和控制外部或者系统级别对象或接口的方法。在做测试时,尤其是单元测试或覆盖测试时,不必与真实环境交互即可完成对自己的模块业务逻辑的测试。
目前对于服务模拟的方法主要有以下几种:
硬编码,即将服务请求获取的响应报文直接写在请求端代码中,其问在于,代码耦合性强,代码侵入严重,且无法模拟真实服务请求过程。
服务模拟器,即搭建一台服务模拟器,人为地将请求方服务请求地址指向该模拟器,并在该模拟器上进行服务请求与响应报文的维护。该方案需手动修改请求方请求地址,并重启请求端服务才可生效,对代码存在侵入修改。
代码中引入第三方服务模拟框架,如java代码中引入Mockito工具包等,同样需重启服务才可生效。
代理软件拦截,即利用代理软件对网络请求进行拦截,然后返回模拟的响应报文。该方式操作步骤繁琐,不方便统一配置,模拟成本较高,且无法模拟真实服务请求过程。
以上现有技术,均存在如下问题:
采用代码侵入方式,会导致代码与最终实际运行的代码或环境不一致,因而上线前需再次修改代码,容易造成上线风险。
采用代码侵入方式时,服务请求设置后,需重启请求端服务,因此无法实现对运行中的服务进行模拟。
发明内容
本申请提供了一种服务模拟方法、系统、设备和存储介质,能够在对服务运行无干扰,对服务程序无侵入的前提下,对后台服务进行动态模拟,因而可被应用于测试阶段服务模拟、线上紧急问题应急处置等场景。本申请采用的技术方案如下:
第一方面,提供了一种服务模拟方法,其应用于第一服务器,包括:
接收客户端的请求报文;
当所述请求报文对应的目标服务出现异常无法及时反馈时;
获取目标程序一并生成服务模拟代理器执行逻辑,所述目标程序一由服务模拟代理器将服务代理程序嵌入到所述目标服务的目标程序二中获得;
执行所述服务模拟代理器执行逻辑,获取与所述请求报文匹配的响应报文,并向所述客户端反馈所述响应报文。
优选地,在上述服务模拟方法中,所述服务模拟代理器执行逻辑包括:
查询数据库中是否已配置所述目标服务的实现类和实现方法;
如果已配置所述目标服务的实现类和实现方法,查询所述数据库在所述目标服务下是否配置了与所述请求报文匹配的响应报文;
如果已配置所述响应报文,则直接返回所述响应报文。
优选地,在上述服务模拟方法中,在所述查询所述数据库在所述目标服务下是否配置了与所述请求报文匹配的响应报文的步骤之前,判断所述目标服务的模拟开关是否开启;
如果已开启,则进入下一步骤。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于中信百信银行股份有限公司,未经中信百信银行股份有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201911399610.2/2.html,转载请声明来源钻瓜专利网。