CN110874321A - 测试接口的远程调用方法、调用封装引擎及远程代理引擎 - Google Patents
测试接口的远程调用方法、调用封装引擎及远程代理引擎 Download PDFInfo
- Publication number
- CN110874321A CN110874321A CN201811025116.5A CN201811025116A CN110874321A CN 110874321 A CN110874321 A CN 110874321A CN 201811025116 A CN201811025116 A CN 201811025116A CN 110874321 A CN110874321 A CN 110874321A
- Authority
- CN
- China
- Prior art keywords
- remote
- test
- interface
- request
- engine
- 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
- 238000012360 testing method Methods 0.000 title claims abstract description 392
- 238000000034 method Methods 0.000 title claims abstract description 69
- 238000004806 packaging method and process Methods 0.000 title claims abstract description 19
- 238000013515 script Methods 0.000 claims abstract description 74
- 230000004807 localization Effects 0.000 claims abstract description 68
- 230000004044 response Effects 0.000 claims abstract description 42
- 238000005538 encapsulation Methods 0.000 claims description 67
- 238000004891 communication Methods 0.000 claims description 19
- 238000006243 chemical reaction Methods 0.000 claims description 3
- 230000006870 function Effects 0.000 description 7
- 238000010586 diagram Methods 0.000 description 4
- 238000013507 mapping Methods 0.000 description 4
- 102100021662 Baculoviral IAP repeat-containing protein 3 Human genes 0.000 description 3
- 101000896224 Homo sapiens Baculoviral IAP repeat-containing protein 3 Proteins 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 3
- 238000012790 confirmation Methods 0.000 description 2
- 238000011161 development Methods 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 230000001360 synchronised effect Effects 0.000 description 2
- 238000010998 test method Methods 0.000 description 2
- SPBWHPXCWJLQRU-FITJORAGSA-N 4-amino-8-[(2r,3r,4s,5r)-3,4-dihydroxy-5-(hydroxymethyl)oxolan-2-yl]-5-oxopyrido[2,3-d]pyrimidine-6-carboxamide Chemical compound C12=NC=NC(N)=C2C(=O)C(C(=O)N)=CN1[C@@H]1O[C@H](CO)[C@@H](O)[C@H]1O SPBWHPXCWJLQRU-FITJORAGSA-N 0.000 description 1
- 102100021677 Baculoviral IAP repeat-containing protein 2 Human genes 0.000 description 1
- 102100037024 E3 ubiquitin-protein ligase XIAP Human genes 0.000 description 1
- 101000896157 Homo sapiens Baculoviral IAP repeat-containing protein 2 Proteins 0.000 description 1
- 101000804865 Homo sapiens E3 ubiquitin-protein ligase XIAP Proteins 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 230000005055 memory storage Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000012545 processing Methods 0.000 description 1
- 230000000750 progressive effect Effects 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
- G06F11/3672—Test management
- G06F11/3684—Test management for test design, e.g. generating new test cases
Abstract
本申请实施方式公开了一种测试接口的远程调用方法、调用封装引擎及远程代理引擎,其中,所述方法包括:读取测试脚本,并识别所述测试脚本中包含的测试指令,所述测试指令中包括本地化接口的标识以及所述本地化接口绑定的测试业务;将所述测试指令转换为指向远端测试接口的调用请求,并向远程代理引擎发送所述调用请求,以使得所述远程代理引擎基于所述调用请求,调用测试样本的所述远端测试接口,并通过所述远端测试接口对所述测试样本执行所述测试业务;接收所述远程代理引擎针对所述调用请求反馈的响应信息。本申提供的技术方案,能够提高测试过程的便捷性。
Description
技术领域
本申请涉及互联网技术领域,特别涉及一种测试接口的远程调用方法、调用封装引擎及远程代理引擎。
背景技术
在应用(Application)的开发过程中,为了保证应用的稳定性,通常需要对应用的各项功能进行测试。当前,在完成某个SDK(Software Development Kit,软件开发工具包)的开发之后,通常会利用该SDK对应用的测试样本(Demo)进行测试,以验证SDK的功能。
目前,对SDK的测试过程通常是在本地进行的。测试人员可以将SDK与测试样本进行打包,从而得到集成了SDK的测试样式。该测试样本可以提供一个测试界面,测试人员通过在测试界面中下达指定的测试指令,从而实现对SDK的测试。
然而,现有技术中的这种测试方法,只能在本地对SDK进行测试,如果SDK处于远端,测试人员则无法对SDK进行测试。因此,这种测试方法不够便捷。
发明内容
本申请实施方式的目的是提供一种测试接口的远程调用方法、调用封装引擎及远程代理引擎,能够提高测试过程的便捷性。
为实现上述目的,本申请实施方式提供一种测试接口的远程调用方法,所述方法包括:读取测试脚本,并识别所述测试脚本中包含的测试指令,所述测试指令中包括本地化接口的标识以及所述本地化接口绑定的测试业务;将所述测试指令转换为指向远端测试接口的调用请求,并向远程代理引擎发送所述调用请求,以使得所述远程代理引擎基于所述调用请求,调用测试样本的所述远端测试接口,并通过所述远端测试接口对所述测试样本执行所述测试业务;接收所述远程代理引擎针对所述调用请求反馈的响应信息。
为实现上述目的,本申请实施方式还提供一种调用封装引擎,所述调用封装引擎包括:脚本读取单元,用于读取测试脚本,并识别所述测试脚本中包含的测试指令,所述测试指令中包括本地化接口的标识以及所述本地化接口绑定的测试业务;调用请求转换单元,用于将所述测试指令转换为指向远端测试接口的调用请求,并向远程代理引擎发送所述调用请求,以使得所述远程代理引擎基于所述调用请求,调用测试样本的所述远端测试接口,并通过所述远端测试接口对所述测试样本执行所述测试业务;响应信息接收单元,用于接收所述远程代理引擎针对所述调用请求反馈的响应信息。
为实现上述目的,本申请实施方式还提供一种测试接口的远程调用方法,所述方法包括:接收调用封装引擎发来的调用请求,并识别所述调用请求中包含的远端测试接口的标识以及所述远端测试接口绑定的测试业务;其中,所述远端测试接口与所述调用封装引擎的本地化接口互相映射;确定所述远端测试接口所属的目标测试样本,并通过调用所述远端测试接口,对所述目标测试样本执行所述测试业务;向所述调用封装引擎反馈针对所述调用请求的响应信息。
为实现上述目的,本申请实施方式还提供一种远程代理引擎,所述远程代理引擎包括:调用请求接收单元,用于接收调用封装引擎发来的调用请求,并识别所述调用请求中包含的远端测试接口的标识以及所述远端测试接口绑定的测试业务;其中,所述远端测试接口与所述调用封装引擎的本地化接口互相映射;测试业务执行单元,用于确定所述远端测试接口所属的目标测试样本,并通过调用所述远端测试接口,对所述目标测试样本执行所述测试业务;响应信息反馈单元,用于向所述调用封装引擎反馈针对所述调用请求的响应信息。
由上可见,本申请提供的技术方案,可以包括远程代理引擎和调用封装引擎。所述远程代理引擎可以与多个SDK相连,形成测试端。而调用封装引擎可以位于测试人员这一侧的远端。通过远程代理引擎与调用封装引擎之间的通信,可以实现SDK的远程测试。具体地,调用封装引擎可以读取测试人员编写的测试脚本,在该测试脚本中可以包括测试指令,所述测试指令中可以包括本地化接口的标识以及对应的测试业务。其中,该本地化接口可以与SDK中的远端测试接口互相映射,该映射过程可以由调用封装引擎实现。通常而言,远端在向测试端发起接口调用请求时,往往需要遵循一定的通信协议,而按照这些通信协议来编写测试脚本,会加重测试人员的负担。鉴于此,在本申请中,调用封装引擎可以提供本地化接口,测试人员在编写测试脚本时,可以直接使用本地化接口。从测试人员的角度而言,编写测试脚本的过程与本地测试SDK的过程一致。调用封装引擎接收到按照本地化接口编写的测试脚本后,可以识别其中的测试指令,然后可以将包含本地化接口的测试指令转换为符合通信协议的调用请求。通过将测试指令转换为调用请求,从而可以将测试脚本中包含的本地化接口转换为测试端的SDK中的远端测试接口,并且可以保留原本的测试业务。这样,调用封装引擎向远程代理引擎发送该调用请求后,远程代理引擎可以识别其中的远端测试接口,从而能够通过所述远端测试接口对SDK的测试样本执行所述测试业务。最终,远程代理引擎可以将响应信息反馈给调用封装引擎。由上可见,本申请提供的技术方案,通过远程代理引擎和调用封装引擎之间的协同运作,能够实现测试接口的远程调用过程。此外,对于测试人员而言,其在编写测试脚本时,使用的是本地化接口,无需按照指定的通信协议来编写请求的消息体,从而极大地简化了测试脚本的编写过程,进而提高了SDK的测试效率。
附图说明
为了更清楚地说明本申请实施方式或现有技术中的技术方案,下面将对实施方式或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请中记载的一些实施方式,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本申请实施方式中系统架构的示意图;
图2为本申请实施方式中测试接口的远程调用方法的步骤示意图;
图3为本申请实施方式中接口的映射关系示意图;
图4为本申请另一个实施方式中测试接口的远程调用方法的步骤示意图。
具体实施方式
为了使本技术领域的人员更好地理解本申请中的技术方案,下面将结合本申请实施方式中的附图,对本申请实施方式中的技术方案进行清楚、完整地描述,显然,所描述的实施方式仅仅是本申请一部分实施方式,而不是全部的实施方式。基于本申请中的实施方式,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施方式,都应当属于本申请保护的范围。
本申请提供一种测试接口的远程调用方法,所述方法可以应用于如图1所示的系统架构中。在该系统架构中,SDK所处的一侧可以作为测试端,而测试人员所处的一侧可以作为脚本端(或者远端)。在测试端可以具备待测试的多个SDK,这些SDK可以与远程代理引擎相连,远程代理引擎具备调用这些SDK的接口的能力。其中,处于测试端的SDK的接口可以作为远端测试接口。在脚本端,测试人员可以编写针对不同SDK的测试脚本,这些测试脚本可以录入调用封装引擎中。
请参阅图2,本申请一个实施方式中提供的测试接口的远程调用方法可以具备以下步骤,本实施方式提供的方法的执行主体可以是上述的调用封装引擎。
S11:读取测试脚本,并识别所述测试脚本中包含的测试指令,所述测试指令中包括本地化接口的标识以及所述本地化接口绑定的测试业务。
在本实施方式中,位于测试端的SDK可以作为测试样本,该测试样本可以对外暴露待测试的多个接口。位于脚本端的测试人员编写完SDK的测试脚本之后,可以将该测试脚本录入调用封装引擎中。当然,在实际应用中,该测试脚本原本也可以是直接在调用封装引擎中编写的。这样,调用封装引擎可以读取该测试脚本,并识别该测试脚本中包含的测试指令。
在本实施方式中,上述的远程代理引擎可以向调用封装引擎暴露远程调用的接口,该远程调用的接口例如可以是遵循PRC(Remote Procedure Call,远程过程调用)协议、HTTP或者其它指定通信协议的接口。这样,调用封装引擎通过访问远程代理引擎的接口,从而可以与远程代理引擎进行数据交互。如果测试人员想通过测试脚本直接访问远程代理引擎的接口,那么测试脚本中的测试指令就需要按照上述的指定通信协议的要求进行编写。然而,这样的编写方式会给测试人员带来较多的负担。为了简化测试脚本的编写过程,在本实施方式中可以通过调用封装引擎对访问远程代理引擎的接口的方式进行封装,并且调用封装引擎可以在脚本端提供本地化接口,该本地化接口经过调用封装引擎处理之后,可以映射至测试端的SDK中的远端测试接口。也就是说,测试人员在脚本端编写测试脚本时,可以无需考虑通信协议的要求,而是可以利用调用封装引擎提供的本地化接口,通过编写本地测试脚本的方式来编写调用远端测试端口的测试脚本。举例来说,请参阅图3,测试端的SDK中具备远端测试接口API(Application Programming Interface,应用程序接口)1、API2和API3,经过调用封装引擎对访问过程进行封装之后,在脚本端可以提供本地化接口API11、API21和API31。其中,API11与API1相互映射,API21与API2相互映射,API31与API3相互映射。这样,如果测试人员想要对SDK的API2进行测试,则可以直接在测试脚本中编写关于API21的测试指令。
由上可见,调用封装引擎通过对远程访问过程的封装,可以在脚本端提供本地化接口。那么测试人员编写的测试脚本中,便可以包括本地化接口的标识以及所述本地化接口绑定的测试业务。其中,所述本地化接口绑定的测试业务可以是该本地化接口需要处理的事务。例如,对于helloWorldService.sayHello(“test”)这一测试指令而言,helloWorldService.sayHello可以是上述的本地化接口的标识,而括号中的“test”则可以是该本地化接口绑定的测试业务,也就是显示“test”的字样。当然,在实际应用中,测试指令中也可以仅包括本地化接口的标识,而绑定的测试业务可以采用缺省的方式。例如,测试指令中可以仅包括Player.init这样的本地化接口的标识,而无需携带对应的测试业务。原因在于,该本地化接口本身就可以实现对应的测试业务。例如,上述的Player.init接口可以实现初始化播放器的测试业务。因此,上述的测试业务可以是在测试指令中明文写出的业务,也可以是本地化接口本身所具备的业务。
在一个实施方式中,针对诸如Java SDK这样的SDK,它的接口往往需要通过具体的对象(或者实例)来暴露。因此,在调用这些SDK的远端测试端口时,首先需要创建该SDK的对象。由于当前处于远程测试SDK的场景下,因此创建SDK的对象的指令也需要由脚本端的测试脚本提供。在本实施方式中,调用封装引擎除了能够实现将远端测试接口映射为本地化接口,同时还能够按照相似的方式将测试端的SDK的远端对象映射为脚本端的本地化对象。因此,在所述测试脚本中还可以包括创建本地化对象的指令。该指令中可以具备该本地化对象的标识,该本地化对象的标识可以与测试端的SDK中远端对象的标识相对应。例如,对于一个播放器的SDK,其创建的远端对象的名称可以是player,那么脚本端本地化对象的名称便可以是player’。
这样,假设要对测试端的播放器SDK的初始化接口进行调用,那么首先需要创建远端对象player,然后调用标识为player.init的接口。而该过程经过调用封装引擎封装之后,测试人员在脚本端编写测试脚本时,只需要在测试脚本中编写创建本地化对象player’的指令,并编写调用标识为player’.init的本地化接口的指令。
S13:将所述测试指令转换为指向远端测试接口的调用请求,并向远程代理引擎发送所述调用请求,以使得所述远程代理引擎基于所述调用请求,调用测试样本的所述远端测试接口,并通过所述远端测试接口对所述测试样本执行所述测试业务。
在本实施方式中,调用封装引擎在读取了测试脚本之后,可以识别其中按照本地化接口进行编写的测试指令。此时,为了使得远程代理引擎能够识别测试脚本中的内容,调用封装引擎需要按照与远程代理引擎预先预定的网络通信协议,将该测试脚本中的各项测试指令转换为对应的调用请求。具体地,调用封装引擎可以确定测试指令中的本地化接口的标识在测试端的测试样本中映射的远端测试接口的标识,并建立包含所述远端测试接口的标识和所述测试业务的调用请求。这样,该调用请求既符合预先约定的网络通信协议,又携带了能够被远程代理引擎识别的远端测试接口的标识。
在本实施方式中,在转换得到所述调用请求之后,调用封装引擎可以将该调用请求发送至远程代理引擎。远程代理引擎接收到该调用请求后,可以识别其中按照远端测试接口的标识进行编写的测试指令。这样,远程代理引擎便可以基于所述调用请求,调用测试样本的所述远端测试接口,并通过所述远端测试接口对所述测试样本执行所述测试业务。
在一个实施方式中,调用封装引擎与远程代理引擎之间传输的数据通常需要经过编码和解码的过程。其中,当调用封装引擎生成调用请求之后,可以将所述调用请求进行序列化处理。进行序列化处理的目的是将所述调用请求转换为二进制字符串,从而完成编码的过程。然后,调用封装引擎可以向所述远程代理引擎发送所述二进制字符串。相应地,远程代理引擎在接收到二进制字符串之后,可以对该二进制字符串进行反序列化处理,从而将该二进制字符串还原为调用请求,后续可以识别该调用请求中按照远端测试接口编写的测试指令。
S15:接收所述远程代理引擎针对所述调用请求反馈的响应信息。
在本实施方式中,远程代理引擎在调用测试样本的所述远端测试接口,完成对所述测试样本执行所述测试业务之后,可以将测试业务的执行结果作为响应信息反馈给调用封装引擎。若在执行所述测试业务之后,并不会产生对应的执行结果,那么在响应信息中可以携带表示执行完成的确认信息。
在本实施方式中,调用封装引擎除了能够实现对远端测试端口的同步调用之外,还能够实现对远端测试端口的异步调用。具体地,向在远程代理引擎发送了异步调用的调用请求后,调用封装引擎可以不用等待该调用请求的执行结果,也是继续处理其它的调用请求。当测试端针对该异步调用的调用请求作出响应,并产生对应的执行结果之后,该执行结果可以作为响应信息被反馈至调用封装引擎处。这样,通过异步调用的方式,调用封装引擎便不会造成数据的堵塞,从而提高远端测试接口的调用效率。
在一个实施方式中,为了保证异步调用的稳定性,可以将发送异步调用的调用请求的线程与接收该调用请求的响应信息的线程保持一致。具体地,调用封装引擎在转换得到调用请求时,可以在该调用请求中添加用于表征该调用请求的请求识别码。该请求识别码可以将当前的调用请求与其它的调用请求进行区分。当调用封装引擎发送该调用请求时,可以开设目标线程,并将所述请求识别码与所述目标线程相绑定,然后,可以利用所述目标线程向所述远程代理引擎发送所述调用请求。远程代理引擎在接收到该调用请求后,可以将该调用请求中携带的请求识别码存储于缓存中。当需要针对该调用请求向调用封装引擎反馈响应信息时,可以在响应信息中添加对应的请求识别码。这样,调用封装引擎可以调用与所述请求识别码相绑定的所述目标线程,并通过所述目标线程接收所述远程代理引擎针对所述调用请求反馈的响应信息,从而保持发送调用请求以及接收响应信息的是同一个目标线程。
在一个实施方式中,由于测试脚本中还可以按照本地化对象的标识编写创建本地化对象的指令,那么调用封装引擎在读取测试脚本时,可以从中识别所述本地化对象的标识,并确定所述本地化对象的标识在测试端的测试样本中映射的远端对象的标识。按照类似的方法,调用封装引擎可以按照预先约定的网络通信协议的规则,生成包含所述远端对象的标识的对象建立请求,并向所述远程代理引擎发送所述对象建立请求。这样,所述远程代理引擎接收到该对象建立请求后,可以从中识别出远端对象的标识,从而可以在所述测试样本中创建对应的远端对象。创建的该远端对象可以暴露对应的远端测试端口,后续远程代理引擎便可以调用该远端对象所具备的所述远端测试端口。
在本实施方式中,完成了对象的创建步骤之后,测试脚本中后续编写的测试指令中,均可以通过创建的该对象的标识来调用相应的接口。具体地,由于测试脚本中包含的均是本地化的标识,因此,所述测试指令中除了包含本地化接口的标识外,还可以包括所述本地化对象的标识。例如,对于播放器SDK的初始化接口的调用过程,在测试脚本中可以通过player’.init’的测试指令来表示。其中,player’便是所述本地化对象的标识,init’则可以是本地化接口的标识。这样,在将该测试指令转换为调用请求时,可以分别对本地化对象和本地化接口进行转换。具体地,可以确定所述本地化接口的标识在所述测试样本中映射的远端测试接口的标识,并基于所述远端测试接口的标识、所述测试业务以及上述实施方式中确定出的远端对象的标识,生成应用于所述测试样本中的远端测试指令。例如,可以将player’.init’这样的本地化的测试指令转换为player.init这样的远端测试指令。后续,便可以按照与所述远程代理引擎约定的通信协议,建立包含所述远端测试指令的调用请求。
本申请还提供一种调用封装引擎,所述调用封装引擎包括:
脚本读取单元,用于读取测试脚本,并识别所述测试脚本中包含的测试指令,所述测试指令中包括本地化接口的标识以及所述本地化接口绑定的测试业务;
调用请求转换单元,用于将所述测试指令转换为指向远端测试接口的调用请求,并向远程代理引擎发送所述调用请求,以使得所述远程代理引擎基于所述调用请求,调用测试样本的所述远端测试接口,并通过所述远端测试接口对所述测试样本执行所述测试业务;
响应信息接收单元,用于接收所述远程代理引擎针对所述调用请求反馈的响应信息。
本说明书实施方式提供的调用封装引擎,其中各个单元模块实现的具体功能,可以与本说明书中的前述实施方式相对照解释,并能够达到前述实施方式的技术效果,这里便不再赘述。
本申请还提供一种测试接口的远程调用方法,该方法的执行主体可以是上述的远程代理引擎。请参阅图4,所述方法包括:
S21:接收调用封装引擎发来的调用请求,并识别所述调用请求中包含的远端测试接口的标识以及所述远端测试接口绑定的测试业务;其中,所述远端测试接口与所述调用封装引擎的本地化接口互相映射。
在本实施方式中,调用封装引擎可以将按照本地化方式编写的测试脚本中的测试指令转换为调用请求,该调用请求中可以包括远端测试接口的标识以及绑定的测试业务。该远端测试接口的标识可以是由调用封装引擎对本地化接口的标识进行转换得到的,该远端测试接口与该本地化接口之间可以具备互相映射的关系。
在一个实施方式中,考虑到远端测试接口通常是由测试样本的对象来暴露的,因此在接收调用请求之前,远程代理引擎还可以接收调用封装引擎发来的对象建立请求,所述对象建立请求中可以包括远端对象的标识。类似地,所述远端对象的标识与所述调用封装引擎的本地化对象的标识相互映射。这样,基于该对象建立请求,远程代理引擎可以在所述远端对象的标识指向的目标测试样本中创建所述远端对象。
S23:确定所述远端测试接口所属的目标测试样本,并通过调用所述远端测试接口,对所述目标测试样本执行所述测试业务。
在本实施方式中,不同的测试样本可以具备不同的远端测试接口的标识,这样,远程代理引擎根据调用请求中携带的远端测试接口的标识,从而可以确定所述远端测试接口所属的目标测试样本,并通过调用所述远端测试接口,对所述目标测试样本执行所述测试业务。具体地,远程代理引擎可以调用创建的所述远端对象的所述远端测试接口,并基于所述远端对象的所述远端测试接口对所述目标测试样本执行所述测试业务。
S25:向所述调用封装引擎反馈针对所述调用请求的响应信息。
在本实施方式中,远程代理引擎在完成对所述目标测试样本执行所述测试业务之后,可以将测试业务的执行结果作为响应信息反馈给调用封装引擎。若在执行所述测试业务之后,并不会产生对应的执行结果,那么在响应信息中可以携带表示执行完成的确认信息。
在本实施方式中,调用封装引擎除了能够实现对远端测试端口的同步调用之外,还能够实现对远端测试端口的异步调用。具体地,向在远程代理引擎发送了异步调用的调用请求后,调用封装引擎可以不用等待该调用请求的执行结果,也是继续处理其它的调用请求。当测试端针对该异步调用的调用请求作出响应,并产生对应的执行结果之后,该执行结果可以作为响应信息被反馈至调用封装引擎处。这样,通过异步调用的方式,调用封装引擎便不会造成数据的堵塞,从而提高远端测试接口的调用效率。
在一个实施方式中,为了保证异步调用的稳定性,可以将发送异步调用的调用请求的线程与接收该调用请求的响应信息的线程保持一致。具体地,调用封装引擎在转换得到调用请求时,可以在该调用请求中添加用于表征该调用请求的请求识别码。该请求识别码可以将当前的调用请求与其它的调用请求进行区分。当调用封装引擎发送该调用请求时,可以开设目标线程,并将所述请求识别码与所述目标线程相绑定,然后,可以利用所述目标线程向所述远程代理引擎发送所述调用请求。远程代理引擎在接收到该调用请求后,可以将该调用请求中携带的请求识别码存储于缓存中。当需要针对该调用请求向调用封装引擎反馈响应信息时,可以在响应信息中添加对应的请求识别码。这样,调用封装引擎可以调用与所述请求识别码相绑定的所述目标线程,并通过所述目标线程接收所述远程代理引擎针对所述调用请求反馈的响应信息,从而保持发送调用请求以及接收响应信息的是同一个目标线程。
本申请还提供一种远程代理引擎,所述远程代理引擎包括:
调用请求接收单元,用于接收调用封装引擎发来的调用请求,并识别所述调用请求中包含的远端测试接口的标识以及所述远端测试接口绑定的测试业务;其中,所述远端测试接口与所述调用封装引擎的本地化接口互相映射;
测试业务执行单元,用于确定所述远端测试接口所属的目标测试样本,并通过调用所述远端测试接口,对所述目标测试样本执行所述测试业务;
响应信息反馈单元,用于向所述调用封装引擎反馈针对所述调用请求的响应信息。
本说明书实施方式提供的远程代理引擎,其中各个单元模块实现的具体功能,可以与本说明书中的前述实施方式相对照解释,并能够达到前述实施方式的技术效果,这里便不再赘述。
由上可见,本申请提供的技术方案,可以包括远程代理引擎和调用封装引擎。所述远程代理引擎可以与多个SDK相连,形成测试端。而调用封装引擎可以位于测试人员这一侧的远端。通过远程代理引擎与调用封装引擎之间的通信,可以实现SDK的远程测试。具体地,调用封装引擎可以读取测试人员编写的测试脚本,在该测试脚本中可以包括测试指令,所述测试指令中可以包括本地化接口的标识以及对应的测试业务。其中,该本地化接口可以与SDK中的远端测试接口互相映射,该映射过程可以由调用封装引擎实现。通常而言,远端在向测试端发起接口调用请求时,往往需要遵循一定的通信协议,而按照这些通信协议来编写测试脚本,会加重测试人员的负担。鉴于此,在本申请中,调用封装引擎可以提供本地化接口,测试人员在编写测试脚本时,可以直接使用本地化接口。从测试人员的角度而言,编写测试脚本的过程与本地测试SDK的过程一致。调用封装引擎接收到按照本地化接口编写的测试脚本后,可以识别其中的测试指令,然后可以将包含本地化接口的测试指令转换为符合通信协议的调用请求。通过将测试指令转换为调用请求,从而可以将测试脚本中包含的本地化接口转换为测试端的SDK中的远端测试接口,并且可以保留原本的测试业务。这样,调用封装引擎向远程代理引擎发送该调用请求后,远程代理引擎可以识别其中的远端测试接口,从而能够通过所述远端测试接口对SDK的测试样本执行所述测试业务。最终,远程代理引擎可以将响应信息反馈给调用封装引擎。由上可见,本申请提供的技术方案,通过远程代理引擎和调用封装引擎之间的协同运作,能够实现测试接口的远程调用过程。此外,对于测试人员而言,其在编写测试脚本时,使用的是本地化接口,无需按照指定的通信协议来编写请求的消息体,从而极大地简化了测试脚本的编写过程,进而提高了SDK的测试效率。
在20世纪90年代,对于一个技术的改进可以很明显地区分是硬件上的改进(例如,对二极管、晶体管、开关等电路结构的改进)还是软件上的改进(对于方法流程的改进)。然而,随着技术的发展,当今的很多方法流程的改进已经可以视为硬件电路结构的直接改进。设计人员几乎都通过将改进的方法流程编程到硬件电路中来得到相应的硬件电路结构。因此,不能说一个方法流程的改进就不能用硬件实体模块来实现。例如,可编程逻辑器件(Programmable Logic Device,PLD)(例如现场可编程门阵列(Field Programmable GateArray,FPGA))就是这样一种集成电路,其逻辑功能由用户对器件编程来确定。由设计人员自行编程来把一个数字系统“集成”在一片PLD上,而不需要请芯片制造厂商来设计和制作专用的集成电路芯片。而且,如今,取代手工地制作集成电路芯片,这种编程也多半改用“逻辑编译器(logic compiler)”软件来实现,它与程序开发撰写时所用的软件编译器相类似,而要编译之前的原始代码也得用特定的编程语言来撰写,此称之为硬件描述语言(Hardware Description Language,HDL),而HDL也并非仅有一种,而是有许多种,如ABEL(Advanced Boolean Expression Language)、AHDL(Altera Hardware DescriptionLanguage)、Confluence、CUPL(Cornell University Programming Language)、HDCal、JHDL(Java Hardware Description Language)、Lava、Lola、MyHDL、PALASM、RHDL(RubyHardware Description Language)等,目前最普遍使用的是VHDL(Very-High-SpeedIntegrated Circuit Hardware Description Language)与Verilog。本领域技术人员也应该清楚,只需要将方法流程用上述几种硬件描述语言稍作逻辑编程并编程到集成电路中,就可以很容易得到实现该逻辑方法流程的硬件电路。
本领域技术人员也知道,除了以纯计算机可读程序代码方式实现服务器以外,完全可以通过将方法步骤进行逻辑编程来使得服务器以逻辑门、开关、专用集成电路、可编程逻辑控制器和嵌入微控制器等的形式来实现相同功能。因此这种服务器可以被认为是一种硬件部件,而对其内包括的用于实现各种功能的单元也可以视为硬件部件内的结构。或者甚至,可以将用于实现各种功能的单元视为既可以是实现方法的软件模块又可以是硬件部件内的结构。
通过以上的实施方式的描述可知,本领域的技术人员可以清楚地了解到本申请可借助软件加必需的通用硬件平台的方式来实现。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施方式或者实施方式的某些部分所述的方法。
本说明书中的各个实施方式均采用递进的方式描述,各个实施方式之间相同相似的部分互相参见即可,每个实施方式重点说明的都是与其他实施方式的不同之处。尤其,针对引擎的实施方式来说,均可以参照前述方法的实施方式的介绍对照解释。
本申请可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。也可以在分布式计算环境中实践本申请,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。
虽然通过实施方式描绘了本申请,本领域普通技术人员知道,本申请有许多变形和变化而不脱离本申请的精神,希望所附的权利要求包括这些变形和变化而不脱离本申请的精神。
Claims (13)
1.一种测试接口的远程调用方法,其特征在于,所述方法包括:
读取测试脚本,并识别所述测试脚本中包含的测试指令,所述测试指令中包括本地化接口的标识以及所述本地化接口绑定的测试业务;
将所述测试指令转换为指向远端测试接口的调用请求,并向远程代理引擎发送所述调用请求,以使得所述远程代理引擎基于所述调用请求,调用测试样本的所述远端测试接口,并通过所述远端测试接口对所述测试样本执行所述测试业务;
接收所述远程代理引擎针对所述调用请求反馈的响应信息。
2.根据权利要求1所述的方法,其特征在于,将所述测试指令转换为指向远端测试接口的调用请求包括:
确定所述本地化接口的标识在所述测试样本中映射的远端测试接口的标识,并建立包含所述远端测试接口的标识和所述测试业务的调用请求。
3.根据权利要求1或2所述的方法,其特征在于,向远程代理引擎发送所述调用请求包括:
将所述调用请求进行序列化处理,以将所述调用请求转换为二进制字符串,并向所述远程代理引擎发送所述二进制字符串。
4.根据权利要求1所述的方法,其特征在于,转换得到的所述调用请求中还包括用于表征所述调用请求的请求识别码;相应地,向远程代理引擎发送所述调用请求包括:
开设目标线程,并将所述请求识别码与所述目标线程相绑定;
利用所述目标线程向所述远程代理引擎发送所述调用请求。
5.根据权利要求4所述的方法,其特征在于,所述响应信息中包括所述请求识别码;相应地,接收所述远程代理引擎针对所述调用请求反馈的响应信息包括:
调用与所述请求识别码相绑定的所述目标线程,并通过所述目标线程接收所述远程代理引擎针对所述调用请求反馈的响应信息。
6.根据权利要求1所述的方法,其特征在于,所述测试脚本中还包括创建本地化对象的指令;相应地,所述方法还包括:
识别所述本地化对象的标识,并确定所述本地化对象的标识在所述测试样本中映射的远端对象的标识;
生成包含所述远端对象的标识的对象建立请求,并向所述远程代理引擎发送所述对象建立请求,以使得所述远程代理引擎在所述测试样本中创建所述远端对象;其中,所述远端对象具备所述远端测试端口。
7.根据权利要求6所述的方法,其特征在于,所述测试指令中还包括所述本地化对象的标识;相应地,将所述测试指令转换为指向远端测试接口的调用请求包括:
确定所述本地化接口的标识在所述测试样本中映射的远端测试接口的标识,并基于所述远端对象的标识、所述远端测试接口的标识以及所述测试业务,生成应用于所述测试样本中的远端测试指令;
按照与所述远程代理引擎约定的通信协议,建立包含所述远端测试指令的调用请求。
8.一种调用封装引擎,其特征在于,所述调用封装引擎包括:
脚本读取单元,用于读取测试脚本,并识别所述测试脚本中包含的测试指令,所述测试指令中包括本地化接口的标识以及所述本地化接口绑定的测试业务;
调用请求转换单元,用于将所述测试指令转换为指向远端测试接口的调用请求,并向远程代理引擎发送所述调用请求,以使得所述远程代理引擎基于所述调用请求,调用测试样本的所述远端测试接口,并通过所述远端测试接口对所述测试样本执行所述测试业务;
响应信息接收单元,用于接收所述远程代理引擎针对所述调用请求反馈的响应信息。
9.一种测试接口的远程调用方法,其特征在于,所述方法包括:
接收调用封装引擎发来的调用请求,并识别所述调用请求中包含的远端测试接口的标识以及所述远端测试接口绑定的测试业务;其中,所述远端测试接口与所述调用封装引擎的本地化接口互相映射;
确定所述远端测试接口所属的目标测试样本,并通过调用所述远端测试接口,对所述目标测试样本执行所述测试业务;
向所述调用封装引擎反馈针对所述调用请求的响应信息。
10.根据权利要求9所述的方法,其特征在于,在接收调用封装引擎发来的调用请求之前,所述方法还包括:
接收调用封装引擎发来的对象建立请求,所述对象建立请求中包括远端对象的标识,所述远端对象的标识与所述调用封装引擎的本地化对象的标识相互映射;
在所述远端对象的标识指向的目标测试样本中创建所述远端对象。
11.根据权利要求10所述的方法,其特征在于,通过调用所述远端测试接口,对所述目标测试样本执行所述测试业务包括:
调用所述远端对象的所述远端测试接口,并基于所述远端对象的所述远端测试接口对所述目标测试样本执行所述测试业务。
12.根据权利要求9所述的方法,其特征在于,所述调用请求中还包括用于表征所述调用请求的请求识别码,所述请求识别码与所述调用封装引擎的目标线程相绑定;
相应地,向所述调用封装引擎反馈的响应信息中包括所述请求识别码,以使得所述调用封装引擎通过与所述请求识别码绑定的所述目标线程接收所述响应信息。
13.一种远程代理引擎,其特征在于,所述远程代理引擎包括:
调用请求接收单元,用于接收调用封装引擎发来的调用请求,并识别所述调用请求中包含的远端测试接口的标识以及所述远端测试接口绑定的测试业务;其中,所述远端测试接口与所述调用封装引擎的本地化接口互相映射;
测试业务执行单元,用于确定所述远端测试接口所属的目标测试样本,并通过调用所述远端测试接口,对所述目标测试样本执行所述测试业务;
响应信息反馈单元,用于向所述调用封装引擎反馈针对所述调用请求的响应信息。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811025116.5A CN110874321B (zh) | 2018-09-04 | 2018-09-04 | 测试接口的远程调用方法、调用封装引擎及远程代理引擎 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811025116.5A CN110874321B (zh) | 2018-09-04 | 2018-09-04 | 测试接口的远程调用方法、调用封装引擎及远程代理引擎 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110874321A true CN110874321A (zh) | 2020-03-10 |
CN110874321B CN110874321B (zh) | 2024-04-12 |
Family
ID=69716893
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811025116.5A Active CN110874321B (zh) | 2018-09-04 | 2018-09-04 | 测试接口的远程调用方法、调用封装引擎及远程代理引擎 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110874321B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116627851A (zh) * | 2023-07-24 | 2023-08-22 | 恒生电子股份有限公司 | 接口测试方法以及装置 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20040167749A1 (en) * | 2003-02-21 | 2004-08-26 | Richard Friedman | Interface and method for testing a website |
CN101930400A (zh) * | 2010-08-20 | 2010-12-29 | 北京神州泰岳软件股份有限公司 | Sdk自动化测试系统及方法 |
CN103678098A (zh) * | 2012-09-06 | 2014-03-26 | 百度在线网络技术(北京)有限公司 | 一种hadoop程序测试的方法和系统 |
CN103748562A (zh) * | 2010-12-23 | 2014-04-23 | 英特尔公司 | 测试、验证和调试架构 |
CN107577599A (zh) * | 2017-08-21 | 2018-01-12 | 同程网络科技股份有限公司 | 一种基于自定义脚本的接口自动化测试方法及平台 |
-
2018
- 2018-09-04 CN CN201811025116.5A patent/CN110874321B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20040167749A1 (en) * | 2003-02-21 | 2004-08-26 | Richard Friedman | Interface and method for testing a website |
CN101930400A (zh) * | 2010-08-20 | 2010-12-29 | 北京神州泰岳软件股份有限公司 | Sdk自动化测试系统及方法 |
CN103748562A (zh) * | 2010-12-23 | 2014-04-23 | 英特尔公司 | 测试、验证和调试架构 |
CN103678098A (zh) * | 2012-09-06 | 2014-03-26 | 百度在线网络技术(北京)有限公司 | 一种hadoop程序测试的方法和系统 |
CN107577599A (zh) * | 2017-08-21 | 2018-01-12 | 同程网络科技股份有限公司 | 一种基于自定义脚本的接口自动化测试方法及平台 |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116627851A (zh) * | 2023-07-24 | 2023-08-22 | 恒生电子股份有限公司 | 接口测试方法以及装置 |
CN116627851B (zh) * | 2023-07-24 | 2023-10-20 | 恒生电子股份有限公司 | 接口测试方法以及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN110874321B (zh) | 2024-04-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108572818A (zh) | 一种用户界面渲染方法及装置 | |
TWI767182B (zh) | 基於h5的接入組件及移動終端 | |
RU2429526C2 (ru) | Статически проверяемые допускающие межпроцессный обмен изолированные процессы | |
US10019298B2 (en) | Middleware interface and middleware interface generator | |
US9569292B2 (en) | Remotable contracts for the web | |
US20210329100A1 (en) | System and method for use of remote procedure call with a microservices environment | |
US9116855B2 (en) | Data processing system and data processing method | |
CN113127108A (zh) | 业务请求的处理方法及装置、存储介质以及电子设备 | |
CN113448655B (zh) | C标准动态库的调用方法与装置 | |
WO2018161283A1 (zh) | 用于处理报文的方法和装置 | |
CN110874321A (zh) | 测试接口的远程调用方法、调用封装引擎及远程代理引擎 | |
US11748233B2 (en) | Debugging a native compiled application from an integrated development environment | |
CN107483399B (zh) | 一种在远程过程调用中的信息封装方法及装置 | |
CN114970474A (zh) | 一种基于数据监听的excel导入导出方法及系统 | |
CN113835904A (zh) | 一种远程过程调用控制方法、装置、设备及存储介质 | |
CN114827249A (zh) | 网格代理扩展的方法和装置 | |
CN113778774A (zh) | 一种测试数据传输方法、装置,测试方法及通信模组 | |
CN107577953B (zh) | 一种基于cuse模拟可信密码模块的系统及方法 | |
Wang et al. | DisTA: Generic dynamic taint tracking for java-based distributed systems | |
KR100494827B1 (ko) | 하드웨어 독립적인 통신 인터페이스를 가지는 분산객체모델 기반의 라디오 서버와 이를 이용한 통신제어방법 | |
CN113326067B (zh) | 命令执行方法、系统、计算机设备和存储介质 | |
US20230379391A1 (en) | Systems and methods for header processing in a server computing environment | |
CN109086034B (zh) | 利用AOP与Spring依赖注入实现应用数据自动备份的方法 | |
CN113867988A (zh) | 通用远程通信调用架构及方法 | |
CN113220461A (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 | ||
TA01 | Transfer of patent application right |
Effective date of registration: 20200512 Address after: 310052 room 508, floor 5, building 4, No. 699, Wangshang Road, Changhe street, Binjiang District, Hangzhou City, Zhejiang Province Applicant after: Alibaba (China) Co.,Ltd. Address before: 100102 No. 4 Building, Wangjing Dongyuan District, Chaoyang District, Beijing Applicant before: BEIJING YOUKU TECHNOLOGY Co.,Ltd. |
|
TA01 | Transfer of patent application right | ||
GR01 | Patent grant | ||
GR01 | Patent grant |