CN113535351A - 一种可扩展的异步服务mock方法 - Google Patents
一种可扩展的异步服务mock方法 Download PDFInfo
- Publication number
- CN113535351A CN113535351A CN202110703122.7A CN202110703122A CN113535351A CN 113535351 A CN113535351 A CN 113535351A CN 202110703122 A CN202110703122 A CN 202110703122A CN 113535351 A CN113535351 A CN 113535351A
- Authority
- CN
- China
- Prior art keywords
- service
- callback
- request
- baffle
- parameter
- 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.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 31
- 230000001360 synchronised effect Effects 0.000 claims abstract description 19
- 238000004458 analytical method Methods 0.000 claims abstract description 7
- 238000012360 testing method Methods 0.000 abstract description 5
- 238000005516 engineering process Methods 0.000 abstract description 2
- 239000003999 initiator Substances 0.000 description 3
- 238000012545 processing Methods 0.000 description 3
- 238000013024 troubleshooting Methods 0.000 description 3
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000004088 simulation Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/4881—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/546—Message passing systems or structures, e.g. queues
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/48—Indexing scheme relating to G06F9/48
- G06F2209/484—Precedence
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/54—Indexing scheme relating to G06F9/54
- G06F2209/548—Queue
Abstract
本发明公开了一种可扩展的异步服务mock方法,属于信息技术服务领域,通过请求报文判断是否需要路由到挡板服务;挡板服务同步响应业务系统,组装回调参数,并将把组装好的回调参数发给消息队列;回调服务从消息队列获取并解析回调消息,判断解析结果是否满足回调条件,如不满足进入等待状态,如果条件满足,向被回调服务发送回调请求,实现业务系统回调;记录调用结果并可视化展示回调链路。解决了现有技术中只支持基于Http/Https的接口回调,并且回调参数只能使用请求参数内容直接生成,回调过程也不可见,无法设置回调优先级,无法设置回调触发条件等问题,其目的在于,完成异步回调场景的mock,实现无人值守联调,降低了人力成本,提高多系统联调的测试效率。
Description
技术领域
本发明属于信息技术服务领域,具体涉及一种可扩展的异步服务mock方法。
背景技术
异步服务是跟同步服务相对应的,发送一个请求,等待返回,然后再发送下一个请求就是同步服务,发送一个请求,不等待返回,随时可以再发送下一个请求就是异步服务,在真实的测试场景中含有大量异步的场景是通过异步服务来实现的,比如经典的支付场景,发送了一个支付请求出去,并不是一定要等到真正支付成功才返回结果。
现有异步回调服务方案由于未解耦异步调用的发起方和处理方,所以只支持基于Http/Https的接口回调,并且还存在回调参数只能使用请求参数内容直接生成,回调过程也不可见,无法设置回调优先级,无法设置回调触发条件等问题。
发明内容
本发明公开了一种可扩展的异步服务mock方法,用以解决上述现有技术中的存在的问题。
本发明采用的技术方案如下:
一种可扩展的异步服务mock方法,具体包括以下步骤:
步骤1:通过请求报文判断是否需要路由到挡板服务,实现了由请求发起方动态控制走挡板服务还是真实服务;
步骤2:挡板服务同步响应业务系统,组装回调参数,并将把组装好的回调参数发给消息队列,实现了同步响应异步处理,实现了多种回调参数的组装;
步骤3:回调服务从消息队列获取并解析回调消息,判断解析结果是否满足回调条件,如不满足进入等待状态,如果条件满足,向被回调服务发送回调请求,实现业务系统回调,实现了回调服务的优先级设置、间隔时间的设置、回调触发条件的设置;
步骤4:记录调用结果并可视化展示回调链路,通过对日志的收集和分析,将回调过程进行可视化展示,极大提高了问题排查的效率。
所述步骤1具体包括:
步骤1.1:业务系统发起请求,请求内容为SOFA、dubbo、http、socket、mq、rpc等多种类型的异步回调服务;
步骤1.2:微服务控制台判断请求是否带有mock标识;
步骤1.3:将请求中无mock标识的业务请求路由到真实服务;
步骤1.4:将请求中有mock标识的业务请求路由到挡板服务。
所述步骤2具体包括:
步骤2.1:挡板服务根据请求特征从数据库中获取预设的响应模版;
步骤2.2:挡板服务解析响应模板,获取同步响应报文脚本,回调初始脚本,外部服务调用脚本;
步骤2.3:挡板服务根据获取到的同步响应脚本对业务系统发起同步响应;
步骤2.4:挡板服务判断响应模板中是否包含外部服务调用脚本,如果包含则通过外部服务调用脚本发起外部请求,获取外部参数,如入不包含则跳过该步骤;
步骤2.5:挡板服务根据回调初始脚本、挡板服务接收到的业务请求、外部参数完成回调参数的组装;
步骤2.6:挡板服务发送回调消息到消息队列。
所述步骤2.5具体包括:
2.51:挡板服务先判断业务请求中是否包含某Key的值,如有则将回调初始脚本中该Key的值替换成业务请求中的值;
2.52:挡板服务判断回调初始脚本中是否有需要从外部参数获取的值,如有则替换成外部服务获取到的值;
进一步的,所述回调参数的生成方式具体包括通过请求参数内容直接生成、通过执行JavaScript脚本对请求参数进行运算后生成、调用第三方业务系统来获取需要数据来生成。
所述步骤3具体包括:
步骤3.1:回调服务从消息队列获取回调消息,不同的回调服务分别监听不同的消息队列;
步骤3.2:回调服务解析消息队列,回调服务收到回调消息后会解析出用户发送回调的请求内容并将解析出的内容组装成一个完整的请求,该请求将会发送到目标的被回调服务;
步骤3.3:回调服务本身设置触发条件,根据设定的具体回调触发条件来判断是否需要立即执行回调任务,如不满足进入等待状态;
步骤3.4:如果条件满足,根据步骤3.2解析出的请求内容向被回调服务发送回调请求。
进一步的,所述请求内容包括请求头,请求方法,请求参数,请求目标地址,请求体。
进一步的,回调触发条件可以设定为:(1)定时的回调,比如下午17:00进行回调;(2)对于有多个接口回调的场景,可以指定接口回调的顺序,比如先A回调,等A回调完成以后,再B回调。(3)当业务数据库发生状态值变更以后再进行回调。
综上所述,由于采用了上述技术方案,本发明的有益效果是:
1.通过整体的异步回调方案,完成了异步回调场景的mock,实现了无人值守联调,极大的降低了人力成本,提高了多系统联调的测试效率。
2.通过在业务请求中添加mock标识,实现了真实的业务系统调用和挡板服务调用的随意切换。
3.通过预设的脚本配置,可以从第三方服务的获取外部服务信息,实现复杂场景下的异步回调场景。
4.通过“消息队列+回调服务”,支持多种类型的异步服务回调,比如Http/Https、socket、mq、rpc、SOFA、dubbo等。
5.设置回调服务的优先级和调用的间隔,模仿真实服务发生时服务的调用顺序,实现了更加真实业务场景模拟。
6.可以设置触发条件,在进行回调时对回调触发条件进行判断,比如可以判断数据库中关键数据发生改变或是下游业务系统关键状态发生改变以后再进行回调,更加真实模拟了生产环境服务的调用情况。
7.通过对日志的收集和分析,将回调过程进行可视化展示,实现了问题排查效率的极大提升。
8.通过加入消息队列和定义回调服务的消息内容,可以动态添加回调服务解析对应的消息内容来进行不同类型的回调请求发送,使其具有可扩展性。
附图说明
本发明将通过例子并参照附图的方式说明,其中:
图1为本发明实施例提供的异步服务mock方法的流程示意图;
图2为本发明实施例提供的异步服务mock方法的实现逻辑图;
图3为本发明实施例中步骤1的流程示意图;
图4为本发明实施例中步骤2的流程示意图;
图5为本发明实施例中步骤3的流程示意图。
名词解释
mock:所在测试或者研发过程中,对于某些不容易构造或者不容易获取的对象,创建一个虚拟的对象以便测试,而这个虚拟的对象就是mock对象,mock对象就是真实对象在调试期间的代替品。
具体实施方式
为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅是本申请一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本申请实施例的组件可以各种不同的配置来布置和设计。因此,以下对在附图中提供的本申请的实施例的详细描述并非旨在限制要求保护的本申请的范围,而是仅仅表示本申请的选定实施例。基于本申请的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本申请保护的范围。
在本申请实施例的描述中,需要说明的是,术语“第一”、“第二”、“第三”等仅用于区分描述,而不能理解为指示或暗示相对重要性。
下面结合图1~图5对本发明作详细说明。
步骤1:通过请求报文判断是否需要路由到挡板服务,实现了由请求发起方动态控制走挡板服务还是真实服务,其具体包括如下步骤:
步骤1.1:业务系统发起请求,请求内容为SOFA、dubbo、http、socket、mq、rpc多种类型的异步回调服务;
步骤1.2:微服务控制台判断请求是否带有mock标识;
步骤1.3:将请求中无mock标识的业务请求路由到真实服务;
步骤1.4:将请求中有mock标识的业务请求路由到挡板服务。
步骤2:挡板服务同步响应业务系统,组装回调参数,并将把组装好的回调参数发给消息队列,实现了同步响应异步处理,实现了多种回调参数的组装,其中回调参数的生成方式具体包括通过请求参数内容直接生成、通过执行JavaScript脚本对请求参数进行运算后生成、调用第三方业务系统来获取需要数据来生成;通过该步骤,实现了同步响应异步处理,实现了多种回调参数的组装,其具体包括如下步骤:
步骤2.1:挡板服务根据请求特征从数据库中获取预设的响应模版;
步骤2.2:挡板服务解析响应模板,获取同步响应报文脚本,回调初始脚本,外部服务调用脚本;
以下是同步响应报文脚本示例:
以下是模板中的初始回调脚本示例:
以下下是外部服务调用脚本示例:
步骤2.3:挡板服务根据获取到的同步响应脚本对业务系统发起同步响应;
步骤2.4:挡板服务判断响应模板中是否包含外部服务调用脚本,如果包含则通过外部服务调用脚本发起外部请求,获取外部参数,如入不包含则跳过该步骤;
步骤2.5:挡板服务根据回调初始脚本、挡板服务接收到的业务请求、外部参数完成回调参数的组装;具体为:
A:挡板服务先判断业务请求中是否包含某Key的值,如有则将回调初始脚本中该Key的值替换成业务请求中的值;
B:挡板服务判断回调初始脚本中是否有需要从外部参数获取的值,如有则替换成外部服务获取到的值;
步骤2.6:挡板服务发送回调消息到消息队列。
步骤3:回调服务从消息队列获取并解析回调消息,判断解析结果是否满足回调条件,如不满足进入等待状态,如果条件满足,向被回调服务发送回调请求,通过该步骤,实现了Http/Https、socket、mq、rpc等多种不同类型的回调,实现了回调过程的可视化。实现了回调服务的优先级设置、间隔时间的设置、回调触发条件的设置。具体步骤如下:
步骤3.1:回调服务从消息队列获取回调消息,不同的回调服务(SOFA、dubbo、http、socket)分别监听不同的消息队列;
步骤3.2:回调服务解析消息队列,以HTTP回调为例,回调服务收到回调消息后会解析出用户发送HTTP回调的请求头(headers),请求方法(method),请求参数(parameters),请求目标地址(url),请求体(body),并将解析出的内容组装成一个完整的HTTP请求,该请求将会发送到目标url的被回调服务;
步骤3.3:回调服务本身可以设计触发条件,根据设定的具体回调触发条件判断其是否需要执行回调任务;本实施例中回调触发条件可以根据实际场景来设定,设计的回调触发条件为定时触发来判断是否需要等待执行,所述回调触发条件可以设定为:(1)定时的回调,比如下午17:00进行回调;(2)对于有多个接口回调的场景,可以指定接口回调的顺序,比如先A回调,等A回调完成以后,再B回调。(3)当业务数据库发生状态值变更以后再进行回调。
具体步骤如下:
步骤3.31:判断请求是否需要等待执行,
步骤3.32:若判断结果为是则进行等待执行状态,继续判断是否超时,若是则结束,若否则返回步骤3.31继续判断是否需要等待执行;
步骤3.33:若判断结果为否则不需要等待执行,则继续判断是否满足回调条件,
步骤3.34:若不满足则判断其是否超时,若是则结束,若否则返回步骤3.31继续判断是否需要等待执行;
步骤3.35:若满足回调条件,根据步骤3.2解析出的请求内容向被回调服务发送回调请求,立即执行回调任务。
步骤4:记录调用结果并可视化展示回调链路,通过对日志的收集和分析,将回调过程进行可视化展示,极大提高了问题排查的效率。
以上所述实施例仅表达了本申请的具体实施方式,其描述较为具体和详细,但并不能因此而理解为对本申请保护范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请技术方案构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。
Claims (7)
1.一种可扩展的异步服务mock方法,其特征在于,具体包括以下步骤:
步骤1:通过请求报文判断是否需要路由到挡板服务;
步骤2:挡板服务同步响应业务系统,组装回调参数,并将把组装好的回调参数发给消息队列;
步骤3:回调服务从消息队列获取并解析回调消息,判断解析结果是否满足回调条件,如不满足进入等待状态,如果条件满足,向被回调服务发送回调请求,实现业务系统回调;
步骤4:记录调用结果并可视化展示回调链路。
2.根据权利要求1所述的一种可扩展的异步服务mock方法,其特征在于,所述步骤1具体包括:
步骤1.1:业务系统发起请求;
步骤1.2:微服务控制台判断请求是否带有mock标识;
步骤1.3:将请求中无mock标识的业务请求路由到真实服务;
步骤1.4:将请求中有mock标识的业务请求路由到挡板服务。
3.根据权利要求2所述的一种可扩展的异步服务mock方法,其特征在于,所述步骤2具体包括:
步骤2.1:挡板服务根据请求特征从数据库中获取预设的响应模版;
步骤2.2:挡板服务解析响应模板,获取同步响应报文脚本,回调初始脚本,外部服务调用脚本;
步骤2.3:挡板服务根据获取到的同步响应脚本对业务系统发起同步响应;
步骤2.4:挡板服务判断响应模板中是否包含外部服务调用脚本,如果包含则通过外部服务调用脚本发起外部请求,获取外部参数,如入不包含则跳过该步骤;
步骤2.5:挡板服务根据回调初始脚本、挡板服务接收到的业务请求、外部参数完成回调参数的组装;
步骤2.6:挡板服务发送回调消息到消息队列。
4.根据权利要求3所述的一种可扩展的异步服务mock方法,其特征在于,所述步骤2.5具体包括:
2.51:挡板服务先判断业务请求中是否包含某Key的值,如有则将回调初始脚本中该Key的值替换成业务请求中的值;
2.52:挡板服务判断回调初始脚本中是否有需要从外部参数获取的值,如有则替换成外部服务获取到的值。
5.根据权利要求3所述的一种可扩展的异步服务mock方法,其特征在于,所述回调参数的生成方式具体包括通过请求参数内容直接生成、通过执行JavaScript脚本对请求参数进行运算后生成、调用第三方业务系统来获取需要数据来生成。
6.根据权利要求3所述的一种可扩展的异步服务mock方法,其特征在于,所述步骤3具体包括:
步骤3.1:回调服务从消息队列获取回调消息,不同的回调服务分别监听不同的消息队列;
步骤3.2:回调服务解析消息队列,回调服务收到回调消息后会解析出用户发送回调的请求内容并将解析出的内容组装成一个完整的请求,该请求将会发送到目标的被回调服务;
步骤3.3:回调服务本身设置触发条件,根据设定的回调触发条件来判断是否需要立即执行回调任务,如不满足进入等待状态;
步骤3.4:如果条件满足,根据步骤3.2解析出的请求内容向被回调服务发送回调请求。
7.根据权利要求6所述的一种可扩展的异步服务mock方法,其特征在于,所述请求内容包括请求头,请求方法,请求参数,请求目标地址,请求体。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110703122.7A CN113535351A (zh) | 2021-06-24 | 2021-06-24 | 一种可扩展的异步服务mock方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110703122.7A CN113535351A (zh) | 2021-06-24 | 2021-06-24 | 一种可扩展的异步服务mock方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN113535351A true CN113535351A (zh) | 2021-10-22 |
Family
ID=78125786
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110703122.7A Pending CN113535351A (zh) | 2021-06-24 | 2021-06-24 | 一种可扩展的异步服务mock方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113535351A (zh) |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109656807A (zh) * | 2018-11-01 | 2019-04-19 | 平安科技(深圳)有限公司 | 基于信息安全的接口mock测试方法、装置、设备及存储介质 |
CN110069395A (zh) * | 2019-03-12 | 2019-07-30 | 平安科技(深圳)有限公司 | 一种模拟异步接口的方法、装置、存储介质及计算机设备 |
CN111274137A (zh) * | 2020-01-16 | 2020-06-12 | 北大方正集团有限公司 | 异步接口检测方法、异步接口检测系统和可读存储介质 |
CN112306864A (zh) * | 2020-10-19 | 2021-02-02 | 北京健康之家科技有限公司 | 基于微服务的Mock测试方法和系统、存储介质、计算设备 |
CN112799860A (zh) * | 2021-01-27 | 2021-05-14 | 浪潮云信息技术股份公司 | 基于消息队列和搜索引擎实现服务回调的方法 |
-
2021
- 2021-06-24 CN CN202110703122.7A patent/CN113535351A/zh active Pending
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109656807A (zh) * | 2018-11-01 | 2019-04-19 | 平安科技(深圳)有限公司 | 基于信息安全的接口mock测试方法、装置、设备及存储介质 |
CN110069395A (zh) * | 2019-03-12 | 2019-07-30 | 平安科技(深圳)有限公司 | 一种模拟异步接口的方法、装置、存储介质及计算机设备 |
CN111274137A (zh) * | 2020-01-16 | 2020-06-12 | 北大方正集团有限公司 | 异步接口检测方法、异步接口检测系统和可读存储介质 |
CN112306864A (zh) * | 2020-10-19 | 2021-02-02 | 北京健康之家科技有限公司 | 基于微服务的Mock测试方法和系统、存储介质、计算设备 |
CN112799860A (zh) * | 2021-01-27 | 2021-05-14 | 浪潮云信息技术股份公司 | 基于消息队列和搜索引擎实现服务回调的方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108650149B (zh) | 服务器的测试方法、装置、设备及计算机可读存储介质 | |
CN105335293B (zh) | 一种基于接口并行的自动化测试系统和方法 | |
CN110224896B (zh) | 一种网络性能数据采集方法、装置及存储介质 | |
CN111786939B (zh) | 物联网管理平台测试的方法、装置和系统 | |
CN103825783A (zh) | 一种测试方法及装置 | |
CN112988608B (zh) | 数据测试方法、装置、计算机设备及存储介质 | |
CN112202824B (zh) | 网络资源访问的处理方法、装置及服务器、终端 | |
CN105117344B (zh) | 一种基于pb的接口集成测试方法和系统 | |
CN111211934A (zh) | 集群远程通信测试方法以及系统 | |
CN111176662A (zh) | 可在分布式与单体环境自由组装部署的架构实现方法及部署方法 | |
CN113746842A (zh) | 基于Protobuf协议动态解析的消息发送方法 | |
CN113360413A (zh) | 一种代码测试方法及装置 | |
CN113676372A (zh) | 通信性能的测试方法、装置和存储介质 | |
CN113535351A (zh) | 一种可扩展的异步服务mock方法 | |
CN109587349B (zh) | 多媒体坐席线路测试方法及装置、电子设备、存储介质 | |
CN115269415A (zh) | 一种基于仿真场景用例的接口测试系统和方法 | |
CN113053374B (zh) | 一种大屏幕控制系统 | |
CN112532534B (zh) | 一种数据传输方法、装置以及计算机可读存储介质 | |
CN109639795B (zh) | 一种基于AcitveMQ消息队列的服务管理方法与装置 | |
CN110120895B (zh) | 测试移动终端通讯的方法、装置、介质及电子设备 | |
CN113346973A (zh) | 事件提示方法及装置、电子设备、计算机可读存储介质 | |
CN113067878A (zh) | 信息采集方法、装置、设备、介质及程序产品 | |
CN112181789B (zh) | 一种基于aws的设备端日志采集方法 | |
CN112367333B (zh) | 一种异步消息场景下的数据处理方法及系统 | |
CN111147445B (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 | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20211022 |