CN110069395A - 一种模拟异步接口的方法、装置、存储介质及计算机设备 - Google Patents
一种模拟异步接口的方法、装置、存储介质及计算机设备 Download PDFInfo
- Publication number
- CN110069395A CN110069395A CN201910185084.3A CN201910185084A CN110069395A CN 110069395 A CN110069395 A CN 110069395A CN 201910185084 A CN201910185084 A CN 201910185084A CN 110069395 A CN110069395 A CN 110069395A
- Authority
- CN
- China
- Prior art keywords
- call request
- asynchronous
- readjustment
- request
- address
- 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
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
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Exchange Systems With Centralized Control (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明提供了一种模拟异步接口的方法、装置、存储介质及计算机设备,其中,该方法包括:拦截请求地址与异步接口地址相匹配的有效调用请求,异步接口地址为预设的异步模拟接口的地址;根据有效调用请求向有效调用请求的发送方返回同步响应;确定回调接口地址,并确定回调参数;在满足回调请求的条件时,将回调参数发送至回调接口地址,该回调接口地址用于向所述有效调用请求的发送方发送异步响应。该方法持异步接口的MOCK,适应于异步测试的场景,可以提升在含有异步测试的集成测试中的效率;还可以前置集成测试中的风险,早日发现解决,在正式联调中避免数据浪费、不必要的资源、人力耗费,可以降低成本。
Description
技术领域
本发明涉及接口模拟技术领域,特别涉及一种模拟异步接口的方法、装置、存储介质及计算机设备。
背景技术
在测试过程中,对于某些不容易构造或者不容易获取的对象,需要创建一个虚拟的对象以便测试,该虚拟的对象即为MOCK对象。具体可以使用一个接口来描述这个MOCK对象,测试时只是通过接口来引用对象。
目前的MOCK框架和工具只能简单地同步返回结果,一次请求对应一次同步响应;但有些接口是一次请求后会同步返回一个结果、然后隔一段时间再返回一个结果给约定好的地址,即存在异步响应。例如,对于某些第三方支付平台提供的支付接口,在支付请求提交后,由于接口内部对于风控、清算等处理,往往分为两段响应来返回结果;第一次是同步返回,即支付请求提交成功后,接口同步返回的一次请求;在清算处理完毕后,再异步返回处理结果。而真正在测试验证中,作为验收条件和程序的下一步触发逻辑的核心的是异步返回的第二个返回。现有的MOCK框架和工具均不支持模拟异步接口,导致mock测试中不能模拟异步响应过程。
发明内容
为解决上述存在的问题,本发明提供一种模拟异步接口的方法、装置、存储介质及计算机设备。
根据本发明的第一个方面,提供一种模拟异步接口的方法,包括:
当接收到调用请求时,获取所述调用请求的请求地址;
拦截请求地址与异步接口地址相匹配的有效调用请求,所述异步接口地址为预设的异步模拟接口的地址;
根据所述有效调用请求向所述有效调用请求的发送方返回同步响应;确定与所述有效调用请求相对应的、用于异步响应的回调接口地址,并确定异步响应时的回调参数;
在满足回调请求的条件时,将所述回调参数发送至所述回调接口地址,所述回调接口地址用于向所述有效调用请求的发送方发送异步响应。
根据本发明的第二个方面,提供一种模拟异步接口的装置,包括:
拦截模块,用于
当接收到调用请求时,获取所述调用请求的请求地址;拦截请求地址与异步接口地址相匹配的有效调用请求,所述异步接口地址为预设的异步模拟接口的地址;
确定模块,用于根据所述有效调用请求向所述有效调用请求的发送方返回同步响应;确定与所述有效调用请求相对应的、用于异步响应的回调接口地址,并确定异步响应时的回调参数;
异步响应模块,用于在满足回调请求的条件时,将所述回调参数发送至所述回调接口地址,所述回调接口地址用于向所述有效调用请求的发送方发送异步响应。
根据本申请的第三个方面,提供一种计算机可读存储介质,其上存储有计算机可读指令,该计算机可读指令被处理器执行时实现模拟异步接口的步骤。
根据本申请的第四个方面,提供一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机可读指令,所述处理器执行所述计算机可读指令时实现模拟异步接口的步骤。
本发明实施例提供的一种模拟异步接口的方法、装置、存储介质及计算机设备,在MOCK测试过程中,设置异步模拟接口,在接收到需要异步响应的有效调用请求后首先返回同步响应,之后将所确定的回调参数发送至回调接口地址,完成异步响应的过程。该方法持异步接口的MOCK,适应于异步测试的场景,可以提升在含有异步测试的集成测试中的效率;还可以前置集成测试中的风险,早日发现解决,在正式联调中避免数据浪费、不必要的资源、人力耗费,可以降低成本。通过异步模拟接口与发送方之间的关联性实现字段赋值,可以更加真实地模拟异步响应的过程,使得测试结果更加准确。利用一个倒计时器即可完成多个排序后的有效调用请求的异步响应过程,大大减少了对计时器数量的需求,从而大大降低了处理量。通过请求发送方补发特定数量的调用请求的方式,使得发送方可以得到完整数量的异步响应结果,进而实现对异步响应的完整测试。
本发明的其它特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本发明而了解。本发明的目的和其他优点可通过在所写的说明书、权利要求书、以及附图中所特别指出的结构来实现和获得。
下面通过附图和实施例,对本发明的技术方案做进一步的详细描述。
附图说明
附图用来提供对本发明的进一步理解,并且构成说明书的一部分,与本发明的实施例一起用于解释本发明,并不构成对本发明的限制。在附图中:
图1为本发明实施例提供的模拟异步接口的方法流程示意图;
图2为本发明实施例提供的模拟异步接口的方法中,确定回调参数的具体方法流程示意图;
图3为本发明实施例提供的模拟异步接口的方法中,将回调参数发送至回调接口地址的具体方法流程示意图;
图4为本发明实施例提供的模拟异步接口的装置的结构示意图;
图5为本发明实施例提供的拦截模块的结构示意图;
图6为本发明实施例提供的用于执行模拟异步接口的方法的计算机设备的结构示意图。
具体实施方式
以下结合附图对本发明的优选实施例进行说明,应当理解,此处所描述的优选实施例仅用于说明和解释本发明,并不用于限定本发明。
本发明实施例提供的一种模拟异步接口的方法,参见图1所示,包括:
步骤101:当接收到调用请求时,获取所述调用请求的请求地址;并拦截请求地址与异步接口地址相匹配的有效调用请求,异步接口地址为预设的异步模拟接口的地址。
在测试过程中,将需要调用接口的一方作为发送方,根据发送方发送的请求中的地址来确定发送方需要调用哪个接口。例如,现有的MOCK可以模拟同步接口,即在接收到发送方发送的用于调用该同步接口的请求时,该模拟的同步接口即可向发送方同步返回一个模拟数据,从而模拟同步接口的交互过程。本发明实施例中,预先设置用于模拟异步接口的模拟接口,即异步模拟接口;该异步模拟接口设有异步接口地址,供测试时调用;例如,该异步接口地址为:/mock/pay。
当接收到发送方所发送的调用请求时,获取该调用请求的请求地址,当所发送的调用请求中所包含的请求地址与该异步接口地址相同时,即可拦截该调用请求,并将该调用请求作为有效调用请求。其中,拦截过程具体可以通过MOCK服务实现。
步骤102:根据有效调用请求向有效调用请求的发送方返回同步响应;确定与有效调用请求相对应的、用于异步响应的回调接口地址,并确定异步响应时的回调参数。
本发明实施例中,在拦截到有效调用请求后,即可向发送方返回同步响应,该同步响应用于表示异步模拟接口接收到了发送方发送的调用请求。同时,在拦截到有效调用请求之后,即可以确定该有效调用请求对应的、用于异步响应的回调接口地址以及相应的回调参数。其中,回调接口地址可以预先设置,也可以在接收到有效调用请求后再确定;回调参数中与该有效调用请求相关的内容需要基于该有效调用请求来确定,不相关的内容可以提前设置或随机生成。例如,该有效回调请求为支付请求,则回调参数中的用于表示返回结果的内容可以为“支付成功”,也可以为“支付失败”。
步骤103:在满足回调请求的条件时,将回调参数发送至回调接口地址,该回调接口地址用于向有效调用请求的发送方发送异步响应。
本发明实施例中,预先设置回调请求的条件,若当前满足该回调请求的条件,则通过回调接口地址异步发起回调请求,即将回调参数发送至回调接口地址,进行异步响应过程。其中,可以预先设置回调时间间隔,同步响应与异步响应之间的时间间隔为该回调时间间隔;具体的,在当前时间与拦截到有效调用请求的时间之间的时间间隔不小于预设时间间隔时,确定满足回调请求的条件;之后将回调参数发送至回调接口地址,进而通过回调接口地址向有效调用请求的发送方发送异步响应,从而完成向发送方返回异步响应的过程。
需要说明的是,本发明实施例中的回调接口地址可以是发送方的地址,也可以是预先设置的地址,即根据授权的指定路径预先配置回调接口地址。具体的,对于该有效调用请求,若预先设有根据授权的指定路径配置生成的回调地址,则将该回调地址作为与该有效调用请求相对应的回调接口地址;若预先没有设置回调地址,则默认将发送方的地址作为回调接口地址。若回调接口地址即为发送方的地址,则将回调参数发送至回调接口地址时即完成了异步响应的过程;若回调接口地址为预先设置的地址,则在将回调参数发送至预设的回调接口地址后,由回调接口地址一侧向发送该有效调用请求的发送方返回异步响应结果,从而完成异步响应的过程。
具体的,该回调接口地址可以为根据授权的指定路径所配置的地址。例如,用户利用第三方平台支付向商家付款时,第三方平台提供用于支付的异步接口,用户提交支付请求后,第三方平台首先向用户同步返回“提交成功”的提醒,之后在完成支付处理后,则可以回调预设的URL(Uniform Resource Locator,统一资源定位符),若该URL为展示页面,则可向用户展示支付完成的页面,用户侧的感知即为付完款后一段时间跳转到支付成功的页面;若该URL为商家自定义的页面(如:http://127.0.0.1/payresult),则将与本次支付过程相关的回调参数传递至商家URL,商家URL根据第三方平台传递过来的参数修改网站订单的状态,更新完订单后即可向用户反馈更新后的订单状态,完整整个异步响应的过程。
同时,集成测试过程中,由于开发迭代以及BUG存在导致的服务不可用,阻塞测试,比如调用方A并不关心异步接口B的内部逻辑,只关注对于同步返回结果和异步返回结果进行解析处理,则该方法提供的异步MOCK技术可以前置调用方A的接口调用逻辑的BUG风险,若异步回调阻塞较长时间,那么无此技术支持的情况下,调用方A的问题也暴露较晚,因此该方法可以前置集成测试中的风险,早日发现解决,在正式联调中避免数据浪费、不必要的资源、人力耗费,可以降低成本。
本发明实施例提供的一种模拟异步接口的方法,在MOCK测试过程中,设置异步模拟接口,在接收到需要异步响应的有效调用请求后首先返回同步响应,之后将所确定的回调参数发送至回调接口地址,完成异步响应的过程。该方法持异步接口的MOCK,适应于异步测试的场景,可以提升在含有异步测试的集成测试中的效率;还可以前置集成测试中的风险,早日发现解决,在正式联调中避免数据浪费、不必要的资源、人力耗费,可以降低成本。
在上述实施例的基础上,有效调用请求中包含与异步响应相关的输入参数;参见图2所示,步骤102中“确定回调参数”具体包括:
步骤1021:确定与输入参数相匹配的关联字段,并根据输入参数对回调参数中关联字段进行赋值,所述关联字段为所述回调参数中的字段。
步骤1022:对回调参数中除关联字段之外的其他字段进行赋值,根据赋值后的所有字段生成回调参数。
本发明实施例中,回调参数中设有多个字段,每个字段用于记录相应的信息;其中,若某字段与有效调用请求相关,则该字段为关联字段,需要根据有效调用请求中的输入参数对回调参数中关联字段进行赋值;其余无关的字段可以预先设置数值,或随机生成,最终即可确定完整的回调参数。例如,回调参数中包含支付结果字段“successFlag”、订单号字段“ordernumber”、支付金额字段“payAmount”和余额字段“balance”,若有效调用请求中的输入参数为:{"ordernumber":"[A]","payAmount":"100.00"},则根据根据输入参数中的字段确定回调参数中的订单号以及支付金额,对于支付结果和余额则可随机生成,例如余额为120。则,回调参数可以为:{"successFlag":"支付成功!","ordernumber":"[A]","payAmount":"100.00","balance":"120.00"}。其中,如[A]形这个格式的字符将被视为占位符,即将会匹配关联的赋值字段,输入参数的ordernumber的值会作为回调参数ordernumber的值。
本发明实施例中,通过异步模拟接口与发送方之间的关联性实现字段赋值,可以更加真实地模拟异步响应的过程,使得测试结果更加准确。
在上述实施例的基础上,步骤101“拦截请求地址与异步接口地址相匹配的有效调用请求”包括:
步骤A1:确定待定调用请求的请求地址与异步接口地址是否相匹配,在二者相匹配时判断在预设时间段内是否已经接收到与待定调用请求相同的历史有效调用请求,该待定调用请求为接收到的一个调用请求。
本发明实施例中,发送方所发送的每一个调用请求均可以是一个待定调用请求,即需要确定该调用请求是否是需要调用异步接口的请求。若该待定调用请求的请求地址与异步接口地址相匹配,则说明发送方需要调用该异步模拟接口。同时,由于发送方可能多次发送相同的调用请求,例如因网络延迟而重复发送了多次调用请求,若对每一次调用请求均进行异步响应则可能造成处理错误,特别是对于与支付相关的异步响应。
步骤A2:当未接收到与待定调用请求相同的历史有效调用请求时,拦截待定调用请求,并将待定调用请求作为一个有效调用请求;当已接收到与待定调用请求相同的历史有效调用请求时,不拦截待定调用请求,并向发送待定调用请求的发送方返回重复请求的提醒。
本发明实施例中,在确定待定调用请求是用于调用异步模拟接口时,继续判断是否已经接收到相同的调用请求,即历史有效调用请求;其中,通过设置预设时间段来限定历史有效调用请求的范围,避免过滤掉真实有效的待定调用请求。当未接收到与待定调用请求相同的历史有效调用请求时,说明该异步模拟接口是首次接收到该待定调用请求,此时即可拦截待定调用请求,并将待定调用请求作为一个有效调用请求,进而执行后续的异步响应处理。相反的,若已接收到与待定调用请求相同的历史有效调用请求,则说明该待定调用请求是重复发送的,此时可以确定该待定调用请求是无效的,并可以向发送待定调用请求的发送方返回重复请求的提醒,以提醒发送方不需要重复发送。
在上述实施例的基础上,当基于预设时间间隔来确定何时进行异步响应时,由于异步响应有时间间隔,故在某个时刻可能存在多个还没有完成异步响应过程的调用请求;此时若为每个有效调用请求均设置一个单独的计时器,则有效调用请求越多,所需计时器的数量越多,处理量越大。本发明实施例中在拦截到多个不同的有效调用请求时,通过排序后的时间差实现一个计时器即可完成多个有效调用请求的异步响应。具体的,参见图3所示,步骤103“将回调参数发送至回调接口地址”包括:
步骤1031:分别确定每个未异步响应的有效调用请求所对应的回调时间点,回调时间点为拦截到有效调用请求的时间增加预设时间间隔后所确定的时间点。
本发明实施例中,若存在多个还没有异步响应的有效调用请求,则确定该有效调用请求的回调时间点。具体的,可以为每个有效调用请求设置一个用于回调的预设时间间隔,不同的有效调用请求可以设置相同的预设时间间隔,也可以设置不同的预设时间间隔,本实施例对此不做限定。在确定拦截到该有效调用请求的时间时,即可确定该有效调用请求你的回调时间点。例如,异步模拟接口在9:00:00(即九点整)拦截到该有效调用请求,且该有效调用请求的预设时间间隔为10秒,则该有效调用请求的回调时间点即为9:00:10。
步骤1032:按照回调时间点的先后顺序对所有未异步响应的有效调用请求进行实时排序,并依次实时确定相邻时间差,相邻时间差为相邻的两个有效调用请求的回调时间点之间的时间差。
本发明实施例中,在确定所有没有执行异步响应过程的有效调用请求的回调时间点后,即可根据回调时间点的时间先后顺序确定有效调用请求的排列顺序;同时,由于异步模拟接口可能随时拦截到新的有效调用请求,且该有效调用请求的回调时间点可能在旧的有效调用请求之间,即在拦截到新的有效调用请求后,当前的有效调用请求的排序可能会发生变化,故本发明实施例中采用实时排序的方式来确定所有有效调用请求的排列顺序,并实时确定相应的相邻时间差。
具体的,在对有效调用请求排序后,相邻的两个有效调用请求在执行异步调用的时间节点存在一个时间差,即回调时间点之间存在时间差,该时间差即作为相邻的两个有效调用请求之间的相邻时间差。例如,当前有三个有效调用请求A、B、C,其回调时间点分别为9:10:00、9:10:35、9:10:12,则对三个有效调用请求排序后的顺序为A→C→B,即调用请求A的回调时间点最早,其最先执行异步响应的过程,且A与C之间的相邻时间差为12秒,C与B之间的相邻时间差为23秒;而A与B不是两个相邻的请求,故二者之间不存在相邻时间差。
步骤1033:在将与第一有效调用请求对应的回调参数发送至相应的回调接口地址之后,将与第一有效调用请求和第二有效调用请求对应的相邻时间差作为倒计时器的初始值;第一有效调用请求为回调时间点距离当前时间最近的有效调用请求,第二有效调用请求为与第一有效调用请求相邻的有效调用请求。
本发明实施例中,根据有效调用请求的排序即可确定第一有效调用请求以及与其相邻的第二有效调用请求,其中,第一有效调用请求为回调时间点距离当前时间最近的有效调用请求,即当有效调用请求的排序是按照时间从先往后的顺序时,则该第一有效调用请求即为排序后的第一顺位有效调用请求,相应的第二顺位的调用请求即为第二有效调用请求。当执行“将与第一有效调用请求对应的回调参数发送至相应的回调接口地址”这一过程时,说明当前时间是第一有效调用请求的回调时间点,此时即可将第一有效调用请求和第二有效调用请求对应的相邻时间差作为倒计时器的初始值,然后倒计时器执行倒计时操作,进行可以执行后续步骤1034的流程。
步骤1034:在倒计时器置零时,将与第二有效调用请求对应的回调参数发送至相应的回调接口地址,同时将与第二有效调用请求和第三有效调用请求对应的相邻时间差作为倒计时器的初始值,重复倒计时器置零时发送回调参数的过程,直至对所有的有效调用请求执行了异步响应操作;第三有效调用请求为与第一有效调用请求相邻的另一个有效调用请求。
本发明实施例中,当倒计时器置零时,说明当前时间到了下一个有效调用请求的回调时间点,即到了第二有效调用请求的回调时间点,此时即可执行第二有效调用请求的异步响应过程,即将与第二有效调用请求对应的回调参数发送至相应的回调接口地址。之后再将下一个相邻时间差作为该倒计时器的初始值继续进行倒计时,并继续对下一个有效调用请求执行异步响应,直至异步响应过程全部结束,从而利用一个倒计时器即可完成多个排序后的有效调用请求的异步响应过程,大大减少了对计时器数量的需求,从而大大降低了处理量。
例如,现存在三个排序后的有效调用请求A、B、C,其回调时间点分别为9:10:00、9:10:12、9:10:35,则A与B之间的相邻时间差为12秒,B与C之间的相邻时间差为23秒,若当前时间为9:10:00,则此时将与请求A对应的回调参数发送至相应的回调接口地址,即请求A是第一有效调用请求,相应的请求B为第二有效调用请求,请求C为第三有效调用请求。在当前时间是9:10:00时,还将A与B之间的相邻时间差(12秒)作为倒计时器的初始值并开始倒计时;在当前时间到达9:10:12时,倒计时器置零,此时即可确定需要将与请求B对应的回调参数发送至相应的回调接口地址,同时将B与C之间的相邻时间差(23秒)设置为倒计时器的初始值、并开始倒计时;之后在当前时间到达9:10:35时,即将与请求C对应的回调参数发送至相应的回调接口地址……如此重复,即可对排序后的所有有效调用请求均执行异步响应操作,且异步响应的时机与预先确定回调时间点相同,可以保证异步响应时机的准确性。
可选的,若在将与第一有效调用请求和第二有效调用请求对应的相邻时间差作为倒计时器的初始值之后,新截获到一个回调时间点在该第二有效调用请求之前的新有效调用请求,则此时需要根据当前时间点与新有效调用请求的回调时间点之间的相邻时间差重新确定倒计时器的初始值,且此时该新的有效调用请求即为第二有效调用请求,原来的第二有效调用请求更改为是第三有效调用请求。可选的,还可以额外设置一个计时器,利用该计时器对倒计时器过程进行修正,避免因处理延迟的存在导致累计误差越来越大,从而影响时间的准确性。
在上述实施例的基础上,上述步骤102“确定回调参数”还可以包括:
步骤B1:确定返回编码字段的项数N,并向发送有效调用请求的发送方返回继续发送N-1个补发调用请求的请求,所述返回编码字段为所述回调参数中的一个字段,补发调用请求的请求地址与异步接口地址相匹配。
本发明实施例中,回调参数中的返回编码字段指的是向回调接口地址所返回的处理结果;例如,该返回编码字段的值具体可以是“支付成功”、“支付失败”等,也可以为与处理结果对应的code(编码),例如“1”、“2”等,其中“1”表示支付成功,“2”表示支付失败。发送有效调用请求的发送方在接收到不同的返回编码字段后,该发送方的后续处理可能会不同,此时需要对所有的返回编码字段均进行测试。故本发明实施例中,若回调参数中存在N项返回编码字段,即该返回编码字段可以取N种数值,则需要发送方发送N个调用请求才可以完成全部的异步响应测试,故还需要发送方发送N-1个调用请求,即补发调用请求,从而使得异步模拟接口共接收到N个调用请求,从而可以实现N次异步响应。其中,补发调用请求的请求地址与异步接口地址相匹配,且补发调用请求与该有效调用请求也不完全相同。
步骤B2:在接收到发送方继续发送的N-1个补发调用请求后,确定调用请求集合以及N个具有不同返回编码字段的回调参数,调用请求集合中包括1个有效调用请求和N-1个补发调用请求,且调用请求集合中的一个调用请求对应一个回调参数。
本发明实施例中,在确定N个调用请求后,即可为每个调用请求分配一个返回编码字段,且不同的调用请求的返回编码字段不同。之后在步骤103执行“将回调参数发送至回调接口地址”时,即可将N个具有不同返回编码字段的回调参数发送至相应的回调接口地址。使得该发送方可以得到N个异步响应结果,实现对异步响应的完整测试。
本发明实施例提供的一种模拟异步接口的方法,在MOCK测试过程中,设置异步模拟接口,在接收到需要异步响应的有效调用请求后首先返回同步响应,之后将所确定的回调参数发送至回调接口地址,完成异步响应的过程。该方法持异步接口的MOCK,适应于异步测试的场景,可以提升在含有异步测试的集成测试中的效率;还可以前置集成测试中的风险,早日发现解决,在正式联调中避免数据浪费、不必要的资源、人力耗费,可以降低成本。通过异步模拟接口与发送方之间的关联性实现字段赋值,可以更加真实地模拟异步响应的过程,使得测试结果更加准确。利用一个倒计时器即可完成多个排序后的有效调用请求的异步响应过程,大大减少了对计时器数量的需求,从而大大降低了处理量。通过请求发送方补发特定数量的调用请求的方式,使得发送方可以得到完整数量的异步响应结果,进而实现对异步响应的完整测试。
以上详细介绍了模拟异步接口的方法流程,该方法也可以通过相应的装置实现,下面详细介绍该装置的结构和功能。
本发明实施例提供了一种模拟异步接口的装置,参见图4所示,包括:
拦截模块41,用于当接收到调用请求时,获取所述调用请求的请求地址;拦截请求地址与异步接口地址相匹配的有效调用请求,所述异步接口地址为预设的异步模拟接口的地址;
确定模块42,用于根据所述有效调用请求向所述有效调用请求的发送方返回同步响应;确定与所述有效调用请求相对应的、用于异步响应的回调接口地址,并确定异步响应时的回调参数;
异步响应模块43,用于在满足回调请求的条件时,将所述回调参数发送至所述回调接口地址,所述回调接口地址用于向所述有效调用请求的发送方发送异步响应。
在上述实施例的基础上,所述确定模块42确定回调接口地址包括:
将发送所述有效调用请求的发送方的地址作为回调接口地址;或
根据授权的指定路径配置回调接口地址。
在上述实施例的基础上,所述有效调用请求中包含与异步响应相关的输入参数;所述确定模块42确定回调参数包括:
确定与所述输入参数相匹配的关联字段,并根据所述输入参数对所述回调参数中关联字段进行赋值,所述关联字段为所述回调参数中的字段;
对所述回调参数中除所述关联字段之外的其他字段进行赋值,根据赋值后的所有字段生成所述回调参数。
在上述实施例的基础上,参见图5所示,所述拦截模块41包括:
判断单元411,用于确定待定调用请求的请求地址与异步接口地址是否相匹配,在二者相匹配时判断在预设时间段内是否已经接收到与所述待定调用请求相同的历史有效调用请求,所述待定调用请求为接收到的一个调用请求;
拦截处理单元412,用于当未接收到与所述待定调用请求相同的历史有效调用请求时,拦截所述待定调用请求,并将所述待定调用请求作为一个有效调用请求;当已接收到与所述待定调用请求相同的历史有效调用请求时,不拦截所述待定调用请求,并向发送所述待定调用请求的发送方返回重复请求的提醒。
在上述实施例的基础上,所述异步响应模块43将所述回调参数发送至所述回调接口地址包括:
在当前时间与拦截到所述有效调用请求的时间之间的时间间隔不小于预设时间间隔时,确定满足回调请求的条件;将所述回调参数发送至所述回调接口地址。
在上述实施例的基础上,在拦截到多个不同的有效调用请求时,所述异步响应模块43将所述回调参数发送至所述回调接口地址包括:
分别确定每个未异步响应的所述有效调用请求所对应的回调时间点,所述回调时间点为拦截到所述有效调用请求的时间增加所述预设时间间隔后所确定的时间点;
按照所述回调时间点的先后顺序对所有未异步响应的所述有效调用请求进行实时排序,并依次实时确定相邻时间差,所述相邻时间差为相邻的两个有效调用请求的回调时间点之间的时间差;
在将与第一有效调用请求对应的回调参数发送至相应的回调接口地址之后,将与所述第一有效调用请求和第二有效调用请求对应的相邻时间差作为倒计时器的初始值;所述第一有效调用请求为回调时间点距离当前时间最近的有效调用请求,所述第二有效调用请求为与所述第一有效调用请求相邻的有效调用请求;
在所述倒计时器置零时,将与所述第二有效调用请求对应的回调参数发送至相应的回调接口地址,同时将与所述第二有效调用请求和第三有效调用请求对应的相邻时间差作为倒计时器的初始值,重复倒计时器置零时发送回调参数的过程,直至对所有的有效调用请求执行了异步响应操作;所述第三有效调用请求为与所述第一有效调用请求相邻的另一个有效调用请求。
在上述实施例的基础上,所述确定模块42确定回调参数包括:
确定返回编码字段的项数N,并向发送所述有效调用请求的发送方返回继续发送N-1个补发调用请求的请求;所述返回编码字段为所述回调参数中的一个字段,所述补发调用请求的请求地址与所述异步接口地址相匹配;在接收到所述发送方继续发送的N-1个补发调用请求后,确定调用请求集合以及N个具有不同所述返回编码字段的回调参数,所述调用请求集合中包括1个所述有效调用请求和N-1个补发调用请求,且所述调用请求集合中的一个调用请求对应一个回调参数;
所述异步响应模块43将所述回调参数发送至所述回调接口地址包括:
将N个具有不同所述返回编码字段的回调参数发送至相应的回调接口地址。
本发明实施例提供的一种模拟异步接口的装置,在MOCK测试过程中,设置异步模拟接口,在接收到需要异步响应的有效调用请求后首先返回同步响应,之后将所确定的回调参数发送至回调接口地址,完成异步响应的过程。该方法持异步接口的MOCK,适应于异步测试的场景,可以提升在含有异步测试的集成测试中的效率;还可以前置集成测试中的风险,早日发现解决,在正式联调中避免数据浪费、不必要的资源、人力耗费,可以降低成本。通过异步模拟接口与发送方之间的关联性实现字段赋值,可以更加真实地模拟异步响应的过程,使得测试结果更加准确。利用一个倒计时器即可完成多个排序后的有效调用请求的异步响应过程,大大减少了对计时器数量的需求,从而大大降低了处理量。通过请求发送方补发特定数量的调用请求的方式,使得发送方可以得到完整数量的异步响应结果,进而实现对异步响应的完整测试。
本申请实施例还提供了一种计算机存储介质,所述计算机存储介质存储有计算机可执行指令,其包含用于执行上述模拟异步接口的方法的程序,该计算机可执行指令可执行上述任意方法实施例中的方法。
其中,所述计算机存储介质可以是计算机能够存取的任何可用介质或数据存储设备,包括但不限于磁性存储器(例如软盘、硬盘、磁带、磁光盘(MO)等)、光学存储器(例如CD、DVD、BD、HVD等)、以及半导体存储器(例如ROM、EPROM、EEPROM、非易失性存储器(NANDFLASH)、固态硬盘(SSD))等。
图6示出了本发明的另一个实施例的一种计算机设备的结构框图。所述计算机设备1100可以是具备计算能力的主机服务器、个人计算机PC、或者可携带的便携式计算机或终端等。本发明具体实施例并不对计算机设备的具体实现做限定。
该计算机设备1100包括至少一个处理器(processor)1110、通信接口(Communications Interface)1120、存储器(memory array)1130和总线1140。其中,处理器1110、通信接口1120、以及存储器1130通过总线1140完成相互间的通信。
通信接口1120用于与网元通信,其中网元包括例如虚拟机管理中心、共享存储等。
处理器1110用于执行程序。处理器1110可能是一个中央处理器CPU,或者是专用集成电路ASIC(Application Specific Integrated Circuit),或者是被配置成实施本发明实施例的一个或多个集成电路。
存储器1130用于可执行的指令。存储器1130可能包含高速RAM存储器,也可能还包括非易失性存储器(non-volatile memory),例如至少一个磁盘存储器。存储器1130也可以是存储器阵列。存储器1130还可能被分块,并且所述块可按一定的规则组合成虚拟卷。存储器1130存储的指令可被处理器1110执行,以使处理器1110能够执行上述任意方法实施例中的方法。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。
Claims (10)
1.一种模拟异步接口的方法,其特征在于,包括:
当接收到调用请求时,获取所述调用请求的请求地址;
拦截请求地址与异步接口地址相匹配的有效调用请求,所述异步接口地址为预设的异步模拟接口的地址;
根据所述有效调用请求向所述有效调用请求的发送方返回同步响应;确定与所述有效调用请求相对应的、用于异步响应的回调接口地址,并确定异步响应时的回调参数;
在满足回调请求的条件时,将所述回调参数发送至所述回调接口地址,所述回调接口地址用于向所述有效调用请求的发送方发送异步响应。
2.根据权利要求1所述的方法,其特征在于,所述确定回调接口地址包括:
将发送所述有效调用请求的发送方的地址作为回调接口地址;或
根据授权的指定路径配置回调接口地址。
3.根据权利要求1所述的方法,其特征在于,
所述有效调用请求中包含与异步响应相关的输入参数;所述确定回调参数包括:
确定与所述输入参数相匹配的关联字段,并根据所述输入参数对所述回调参数中关联字段进行赋值,所述关联字段为所述回调参数中的字段;
对所述回调参数中除所述关联字段之外的其他字段进行赋值,根据赋值后的所有字段生成所述回调参数。
4.根据权利要求1所述的方法,其特征在于,所述拦截请求地址与异步接口地址相匹配的有效调用请求包括:
确定待定调用请求的请求地址与异步接口地址是否相匹配,在二者相匹配时判断在预设时间段内是否已经接收到与所述待定调用请求相同的历史有效调用请求,所述待定调用请求为接收到的一个调用请求;
当未接收到与所述待定调用请求相同的历史有效调用请求时,拦截所述待定调用请求,并将所述待定调用请求作为一个有效调用请求;当已接收到与所述待定调用请求相同的历史有效调用请求时,不拦截所述待定调用请求,并向发送所述待定调用请求的发送方返回重复请求的提醒。
5.根据权利要求1所述的方法,其特征在于,所述在满足回调请求的条件时,将所述回调参数发送至所述回调接口地址包括:
在当前时间与拦截到所述有效调用请求的时间之间的时间间隔不小于预设时间间隔时,确定满足回调请求的条件;将所述回调参数发送至所述回调接口地址。
6.根据权利要求5所述的方法,其特征在于,在拦截到多个不同的有效调用请求时,所述将所述回调参数发送至所述回调接口地址包括:
分别确定每个未异步响应的所述有效调用请求所对应的回调时间点,所述回调时间点为拦截到所述有效调用请求的时间增加所述预设时间间隔后所确定的时间点;
按照所述回调时间点的先后顺序对所有未异步响应的所述有效调用请求进行实时排序,并依次实时确定相邻时间差,所述相邻时间差为相邻的两个有效调用请求的回调时间点之间的时间差;
在将与第一有效调用请求对应的回调参数发送至相应的回调接口地址之后,将与所述第一有效调用请求和第二有效调用请求对应的相邻时间差作为倒计时器的初始值;所述第一有效调用请求为回调时间点距离当前时间最近的有效调用请求,所述第二有效调用请求为与所述第一有效调用请求相邻的有效调用请求;
在所述倒计时器置零时,将与所述第二有效调用请求对应的回调参数发送至相应的回调接口地址,同时将与所述第二有效调用请求和第三有效调用请求对应的相邻时间差作为倒计时器的初始值,重复倒计时器置零时发送回调参数的过程,直至对所有的有效调用请求执行了异步响应操作;所述第三有效调用请求为与所述第一有效调用请求相邻的另一个有效调用请求。
7.根据权利要求1所述的方法,其特征在于,所述确定回调参数包括:
确定返回编码字段的项数N,并向发送所述有效调用请求的发送方返回继续发送N-1个补发调用请求的请求;所述返回编码字段为所述回调参数中的一个字段,所述补发调用请求的请求地址与所述异步接口地址相匹配;在接收到所述发送方继续发送的N-1个补发调用请求后,确定调用请求集合以及N个具有不同所述返回编码字段的回调参数,所述调用请求集合中包括1个所述有效调用请求和N-1个补发调用请求,且所述调用请求集合中的一个调用请求对应一个回调参数;
所述将所述回调参数发送至所述回调接口地址包括:
将N个具有不同所述返回编码字段的回调参数发送至相应的回调接口地址。
8.一种模拟异步接口的装置,其特征在于,包括:
拦截模块,用于当接收到调用请求时,获取所述调用请求的请求地址;拦截请求地址与异步接口地址相匹配的有效调用请求,所述异步接口地址为预设的异步模拟接口的地址;
确定模块,用于根据所述有效调用请求向所述有效调用请求的发送方返回同步响应;确定与所述有效调用请求相对应的、用于异步响应的回调接口地址,并确定异步响应时的回调参数;
异步响应模块,用于在满足回调请求的条件时,将所述回调参数发送至所述回调接口地址,所述回调接口地址用于向所述有效调用请求的发送方发送异步响应。
9.一种计算机可读存储介质,其上存储有计算机可读指令,其特征在于,所述计算机可读指令被处理器执行时实现权利要求1至7中任一项所述的方法的步骤。
10.一种计算机设备,包括存储器和处理器,所述存储器存储有计算机可读指令,其特征在于,所述处理器执行所述计算机可读指令时实现权利要求1至7中任一项所述方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910185084.3A CN110069395B (zh) | 2019-03-12 | 2019-03-12 | 一种模拟异步接口的方法、装置、存储介质及计算机设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910185084.3A CN110069395B (zh) | 2019-03-12 | 2019-03-12 | 一种模拟异步接口的方法、装置、存储介质及计算机设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110069395A true CN110069395A (zh) | 2019-07-30 |
CN110069395B CN110069395B (zh) | 2023-07-25 |
Family
ID=67365226
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910185084.3A Active CN110069395B (zh) | 2019-03-12 | 2019-03-12 | 一种模拟异步接口的方法、装置、存储介质及计算机设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110069395B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113535351A (zh) * | 2021-06-24 | 2021-10-22 | 四川新网银行股份有限公司 | 一种可扩展的异步服务mock方法 |
Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20120260261A1 (en) * | 2011-04-07 | 2012-10-11 | Microsoft Corporation | Asynchronous callback driven messaging request completion notification |
US20130046878A1 (en) * | 2011-08-15 | 2013-02-21 | Lukas Fryc | Asynchronous request interception for testing a request life-cycle |
US8396201B1 (en) * | 2009-10-22 | 2013-03-12 | Juniper Networks, Inc. | Asynchronous calls using intermittent callback for delay sensitive applications |
CN104111836A (zh) * | 2014-07-14 | 2014-10-22 | 浪潮软件集团有限公司 | 一种网络采集处理异步加载数据的方法 |
CN107070735A (zh) * | 2016-12-30 | 2017-08-18 | 上海亿账通互联网科技有限公司 | 异步接口测试的方法、测试终端及系统 |
CN107133160A (zh) * | 2016-02-26 | 2017-09-05 | 北京京东尚科信息技术有限公司 | 测试系统 |
CN108183962A (zh) * | 2018-01-04 | 2018-06-19 | 上海瀚之友信息技术服务有限公司 | 一种模拟测试系统 |
CN108199921A (zh) * | 2017-12-29 | 2018-06-22 | 上海瑞家信息技术有限公司 | 一种模拟测试的方法、装置及存储介质 |
CN108848000A (zh) * | 2018-05-07 | 2018-11-20 | 深圳壹账通智能科技有限公司 | 网络请求测试方法、装置、计算机设备和存储介质 |
CN109213681A (zh) * | 2018-08-30 | 2019-01-15 | 北京三快在线科技有限公司 | 测试系统、方法、设备及可读存储介质 |
-
2019
- 2019-03-12 CN CN201910185084.3A patent/CN110069395B/zh active Active
Patent Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8396201B1 (en) * | 2009-10-22 | 2013-03-12 | Juniper Networks, Inc. | Asynchronous calls using intermittent callback for delay sensitive applications |
US20120260261A1 (en) * | 2011-04-07 | 2012-10-11 | Microsoft Corporation | Asynchronous callback driven messaging request completion notification |
US20130046878A1 (en) * | 2011-08-15 | 2013-02-21 | Lukas Fryc | Asynchronous request interception for testing a request life-cycle |
CN104111836A (zh) * | 2014-07-14 | 2014-10-22 | 浪潮软件集团有限公司 | 一种网络采集处理异步加载数据的方法 |
CN107133160A (zh) * | 2016-02-26 | 2017-09-05 | 北京京东尚科信息技术有限公司 | 测试系统 |
CN107070735A (zh) * | 2016-12-30 | 2017-08-18 | 上海亿账通互联网科技有限公司 | 异步接口测试的方法、测试终端及系统 |
CN108199921A (zh) * | 2017-12-29 | 2018-06-22 | 上海瑞家信息技术有限公司 | 一种模拟测试的方法、装置及存储介质 |
CN108183962A (zh) * | 2018-01-04 | 2018-06-19 | 上海瀚之友信息技术服务有限公司 | 一种模拟测试系统 |
CN108848000A (zh) * | 2018-05-07 | 2018-11-20 | 深圳壹账通智能科技有限公司 | 网络请求测试方法、装置、计算机设备和存储介质 |
CN109213681A (zh) * | 2018-08-30 | 2019-01-15 | 北京三快在线科技有限公司 | 测试系统、方法、设备及可读存储介质 |
Non-Patent Citations (2)
Title |
---|
张小明, 吴泉源, 贾焰: "基于分布对象的高性能异步回调模型", 国防科技大学学报, no. 03 * |
李玲勇;高春鸣;文华南;: "Web服务组合执行引擎中服务异步调用机制研究", 计算机应用研究, no. 02 * |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113535351A (zh) * | 2021-06-24 | 2021-10-22 | 四川新网银行股份有限公司 | 一种可扩展的异步服务mock方法 |
Also Published As
Publication number | Publication date |
---|---|
CN110069395B (zh) | 2023-07-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107402880B (zh) | 一种测试方法及电子设备 | |
CN109656538A (zh) | 应用程序的生成方法、装置、系统、设备和介质 | |
CN108647141A (zh) | 自动测试方法、装置、计算机可读介质及电子设备 | |
CN107133816A (zh) | 一种电子书阅读控制方法和装置 | |
CN109525636A (zh) | 基于Raft算法的区块链共识方法 | |
CN111858296B (zh) | 接口测试方法、装置、设备和存储介质 | |
CN106649638A (zh) | 一种大数据获取方法 | |
WO2020211360A1 (zh) | Mock测试方法、系统、电子设备及计算机非易失性可读存储介质 | |
CN110413528A (zh) | 测试环境智能配置方法及系统 | |
CN109240908A (zh) | 异常测试用例模板创建方法及装置 | |
CN109754234A (zh) | 一种聚合支付方法及装置 | |
CN107220169B (zh) | 一种模拟服务器返回定制化数据的方法和设备 | |
CN110659870A (zh) | 业务审核测试方法、装置、设备及存储介质 | |
CN109213681A (zh) | 测试系统、方法、设备及可读存储介质 | |
CN109299011A (zh) | 一种应用程序的测试方法及系统 | |
CN110069395A (zh) | 一种模拟异步接口的方法、装置、存储介质及计算机设备 | |
CN114548027A (zh) | 在验证系统中追踪信号的方法、电子设备及存储介质 | |
CN113778878A (zh) | 接口测试方法、装置、电子设备及存储介质 | |
CN110163554A (zh) | 工作流的运行方法、装置、服务器和存储介质 | |
CN112988588A (zh) | 客户端软件调试方法、装置、存储介质及电子设备 | |
CN110232195A (zh) | 一种模拟配送过程的方法及装置 | |
CN110022327B (zh) | 一种短信认证测试方法和装置 | |
CN111435330B (zh) | 业务处理流程模拟方法、装置及系统 | |
CN104462116A (zh) | 数据选择的方法及装置 | |
CN110347380A (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 |