CN107133163A - 一种验证描述类api的方法与设备 - Google Patents
一种验证描述类api的方法与设备 Download PDFInfo
- Publication number
- CN107133163A CN107133163A CN201710051378.8A CN201710051378A CN107133163A CN 107133163 A CN107133163 A CN 107133163A CN 201710051378 A CN201710051378 A CN 201710051378A CN 107133163 A CN107133163 A CN 107133163A
- Authority
- CN
- China
- Prior art keywords
- parameter
- information
- class api
- description class
- api
- 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
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/3604—Software analysis for verifying properties of programs
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
Abstract
本申请的目的是提供一种验证描述类API的方法与设备。与现有技术相比,本申请首先获取待验证的描述类API的调用信息,再获取所述描述类API对应的参数模式信息,然后根据所述调用信息及所述参数模式信息验证所述描述类API,而不必为每一个待验证的描述类API分别编写测试代码来进行验证,从而提高了验证描述类API的效率,节省了大量的时间成本,增加了验证结果的可靠性。进一步地,本申请利用所述调用信息中须验证的输入参数或输出参数及所述参数模式信息验证所述描述类API,从而进一步提高效率、节省时间。
Description
技术领域
本申请涉及计算机领域,尤其涉及一种验证描述类API的技术。
背景技术
云产品(例如关系型数据库服务)对外提供的API(Application ProgrammingInterface,应用程序编程接口)大致可分为两类:描述类API和任务类API。任务类API用于执行一个动作,如创建、修改、删除等。而描述类API用于查询用户所购买产品的数据、参数等,以便用户随时可以查询获得产品的内部形态。
对描述类API的验证具有多样性、不确定性、稳定性等特点。其中,多样性指有多种不同的API接口,且不同API接口可以有不同的输入参数(如不同的数据库实例)和不同的输出参数(查询结果);不确定性是指同一个API接口在不同时间针对同样的输入会得到不同的输出;稳定性是指实现API接口的代码一般不会随着业务的改动而改动,且实现每个API接口的代码相对独立,不会因为一个API接口代码的改动影响到另一个API接口。
现有的验证描述类API的技术方案几乎是对每一个API接口重新实现一遍,比较在相同输入的情况下API接口返回的数据和该实现返回的数据是否一致,其步骤如下:(1)分析改动的或者新增的API接口;(2)代码实现该接口;(3)给定一组输入,分别获得API接口和该实现返回的结果;(4)比较返回结果,如果一致则认为工作正常,如果不一致则认为存在漏洞。
由上可以看到,现有技术存在以下缺点:
(1)测试效率低下。每次修改或新增API接口都需要用一个完全不同的逻辑去实现。大把时间都花在编写代码,以及校验所编写代码的正确性上。测试本身耗费的时间占比很低。
(2)测试结果有误的可能性加大。代码编写量大,测试代码本身存在问题的可能性也加大,从而得出错误的测试结果。
(3)维护和学习成本大。每个接口都有一个实现,而一个关系型数据库服务一般有几十个描述类API,导致需要花费大量时间去分别维护这些接口,学习这些测试方法。
发明内容
本申请的一个目的是提供一种验证描述类API的方法与设备,以解决验证描述类API的效率低下的问题。
根据本申请的一个方面,提供了一种验证描述类API的方法,其中,该方法包括:
获取待验证的描述类API的调用信息,其中,所述调用信息包括所述描述类API的输入参数信息及输出参数信息;
获取所述描述类API对应的参数模式信息;
根据所述调用信息及所述参数模式信息验证所述描述类API。
根据本申请的另一个方面,提供了一种验证描述类API的设备,其中,该设备包括:
调用信息获取装置,用于获取待验证的描述类API的调用信息,其中,所述调用信息包括所述描述类API的输入参数信息及输出参数信息;
参数模式信息获取装置,用于获取所述描述类API对应的参数模式信息;
验证装置,用于根据所述调用信息及所述参数模式信息验证所述描述类API。
此外,本申请还提供了另一种验证描述类API的设备,所述设备包括:
处理器;以及
被安排成存储计算机可执行指令的存储器,所述可执行指令在被执行时使所述处理器:获取待验证的描述类API的调用信息,其中,所述调用信息包括所述描述类API的输入参数信息及输出参数信息;获取所述描述类API对应的参数模式信息;以及根据所述调用信息及所述参数模式信息验证所述描述类API。
与现有技术相比,本申请首先获取待验证的描述类API的调用信息,再获取所述描述类API对应的参数模式信息,然后根据所述调用信息及所述参数模式信息验证所述描述类API,而不必为每一个待验证的描述类API分别编写测试代码来进行验证,从而提高了验证描述类API的效率,节省了大量的时间成本,增加了验证结果的可靠性。进一步地,本申请利用所述调用信息中须验证的输入参数或输出参数及所述参数模式信息验证所述描述类API,从而进一步提高效率、节省时间。
附图说明
通过阅读参照以下附图所作的对非限制性实施例所作的详细描述,本申请的其它特征、目的和优点将会变得更明显:
图1示出根据本申请一个方面的一种验证描述类API的方法流程图;
图2示出根据本申请另一个方面的一种验证描述类API的设备示意图;
图3示出了采用本申请实施例提出的方案对描述类API进行校验的处理流程图;
图4示出了本申请实施例提供的另一种验证描述类API的设备的示意图;
附图中相同或相似的附图标记代表相同或相似的部件。
具体实施方式
下面结合附图对本申请作进一步详细描述。
在本申请一个典型的配置中,终端、服务网络的设备和可信方均包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括非暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
图1示出根据本申请一个方面的一种验证描述类API的方法流程图。
该方法包括步骤S11、步骤S12和步骤S13。具体地,在步骤S11中,设备1获取待验证的描述类API的调用信息,其中,所述调用信息包括所述描述类API的输入参数信息及输出参数信息;在步骤S12中,设备1获取所述描述类API对应的参数模式信息;在步骤S13中,设备1根据所述调用信息及所述参数模式信息验证所述描述类API。
在此,所述设备1包括但不限于用户设备、网络设备、或用户设备与网络设备通过网络相集成所构成的设备。所述用户设备其包括但不限于任何一种可与用户通过触摸板进行人机交互的移动电子产品,例如智能手机、平板电脑等,所述移动电子产品可以采用任意操作***,如android操作***、iOS操作***等。其中,所述网络设备包括一种能够按照事先设定或存储的指令,自动进行数值计算和信息处理的电子设备,其硬件包括但不限于微处理器、专用集成电路(ASIC)、可编程门阵列(FPGA)、数字处理器(DSP)、嵌入式设备等。所述网络设备其包括但不限于计算机、网络主机、单个网络服务器、多个网络服务器集或多个服务器构成的云;在此,云由基于云计算(Cloud Computing)的大量计算机或网络服务器构成,其中,云计算是分布式计算的一种,由一群松散耦合的计算机集组成的一个虚拟超级计算机。所述网络包括但不限于互联网、广域网、城域网、局域网、VPN网络、无线自组织网络(Ad Hoc网络)等。优选地,设备1还可以是运行于所述用户设备、网络设备、或用户设备与网络设备、网络设备、触摸终端或网络设备与触摸终端通过网络相集成所构成的设备上的脚本程序。当然,本领域技术人员应能理解上述设备1仅为举例,其他现有的或今后可能出现的设备1如可适用于本申请,也应包含在本申请保护范围以内,并在此以引用方式包含于此。
在步骤S11中,设备1获取待验证的描述类API的调用信息,其中,所述调用信息包括所述描述类API的输入参数信息及输出参数信息。
在具体的实施例中,可以通过调用待验证的描述类API以获取所述调用信息,也可以获取已有的所述调用信息。
优选地,在步骤S11中,设备1根据给定的输入参数信息调用待验证的描述类API;获取所述描述类API的调用信息,其中,所述调用信息包括所述描述类API的输入参数信息及输出参数信息。
例如,向待验证的描述类API发送请求以调用所述待验证的描述类API,其中,所述请求包括给定的输入参数信息。然后,获取所述待验证的描述类API返回的请求结果,其中,所述请求结果包括输出参数信息。在此,所述调用信息包括向所述待验证的描述类API发送的输入参数信息以及所述待验证的描述类API返回的输出参数信息。
更优选地,所述调用信息还包括所述描述类API被调用时对应的错误码或正确码。
例如,接上例,向待验证的描述类API发送请求,假设所述请求中包括的输入参数信息不符合所述待验证的描述类API的要求,预期所述待验证的描述类API将返回错误码,若所述待验证的描述类API未返回错误码则说明所述待验证的描述类API存在异常;相应地,假设所述请求中包括的输入参数信息符合所述待验证的描述类API的要求,预期所述待验证的描述类API将返回正确码。
在步骤S12中,设备1获取所述描述类API对应的参数模式信息。
在此,获取所述待验证的描述类API的输入参数和/或输出参数的参数模式信息。
优选地,所述调用信息还包括所述描述类API被调用时对应的错误码或正确码;其中,在步骤S12中,设备1当所述调用信息包括所述正确码,获取所述描述类API对应的参数模式信息。
例如,在调用所述待验证的描述类API,向所述待验证的描述类API发送请求时,若所述请求中包括的输入参数信息符合待验证的描述类API的要求,将会收到所述待验证的描述类API返回的正确码。在此,若所述调用信息未包括所述待验证的描述类API返回的正确码,则说明所述输入参数信息不符合所述待验证的描述类API的要求或所述待验证的描述类API存在异常。
优选地,所述参数模式信息包括所述描述类API的输入参数或输出参数的以下至少任一属性:参数类型;参数是否必需;参数约束信息;子参数的嵌套参数模式信息。
例如,所述参数类型可以包括Integer(整型)、String(字符串)、List(双向链表)等。所述参数是否必需表示所述输入参数或输出参数是否为所述描述类API必需的输入参数或输出参数。所述参数约束信息根据所述输入参数或输出参数的说明信息得到,例如所述参数约束信息可以包括根据所述输入参数或输出参数的说明字段得到的正则表达式。若所述参数类型为List(双向链表),则List类型的参数下一级可能包括嵌套的子参数,而且,其子参数下一级可能还包括嵌套的子参数。在此,所述子参数的嵌套参数模式信息包括所述参数的若干级的子参数的参数模式信息。
优选地,在步骤S12中,设备1根据所述描述类API对应的描述文件确定所述描述类API对应的参数模式信息。
例如,所述描述类API对应的描述文件包括输入参数(如下表1所示)及输出参数(如下表2所示)的相关信息,可以根据所述描述类API对应的描述文件确定输入参数及输出参数的参数类型、参数是否必需、参数约束信息、子参数的嵌套参数模式信息等属性,即可确定所述描述类API对应的参数模式信息。
表1
表2
更优选地,所述参数模式信息包括所述描述类API的输入参数或输出参数的参数约束信息;其中,在步骤S12中,设备1根据所述描述类API对应的描述文件中关于所述描述类API的输入参数或输出参数的说明信息,生成所述描述类API的输入参数或输出参数的参数约束信息。
例如,所述参数约束信息可以包括根据所述描述类API的输入参数或输出参数的说明字段得到的正则表达式。在此,正则表达式(Regular Expression)是计算机科学的一个概念,它使用单个字符串来描述、匹配一系列符合某个句法规则的字符串。
以参数“RDS实例名”为例,其对应的说明字段为“可由小写字母,数字,下划线组成,字母开头,长度不超过30个字符”,由此得到的正则表达式为“^[a-z][a-z_0-9]{0,29}$”。其中,“a-z”表示所有小写字母,“_”是下划线,“0-9”是所有数字,把它们放在“[]”里面表示可以任选,所以“[a-z_0-9]”表示可以在所有小写字母或者下划线或者所有数字里面任选一个,“可由小写字母,数字,下划线组成”即为“[a-z_0-9]”;“开头”用“^”表示,由于前面有小写字母的限制,所以此处的字母也应该为小写“[a-z]”,“字母开头”即为“^[a-z]”;对于“长度不超过30个字符”,因为“^[a-z]”占用了1个字符,所以后面的字符长度可以为0到29个之间,所以用“{0,29}”表示前面的字符可以有0到29个,前面的字符在此处为“[a-z_0-9]”;最后再加一个“$”表示后面不能再有其他字符。
更优选地,所述参数模式信息包括所述描述类API的输入参数或输出参数的子参数的嵌套参数模式信息;其中,在步骤S12中,设备1对于所述描述类API中存在子参数的输入参数或输出参数,根据所述描述类API对应的描述文件中关于对应输入参数或输出参数的说明信息,确定对应输入参数或输出参数的子参数的嵌套参数模式信息。
例如,若所述参数类型为List(双向链表),则List类型的参数下一级可能包括嵌套的子参数,而且,其子参数下一级可能还包括嵌套的子参数。在此,所述子参数的嵌套参数模式信息包括所述参数的若干级的子参数的参数模式信息,且所述子参数的嵌套参数模式信息也包括参数类型、参数是否必需、参数约束信息、子参数的嵌套参数模式信息等属性中的至少任一项。
当然,本领域技术人员应能理解上述List类型仅为举例,其他现有的或今后可能出现的参数类型如可适用于本申请,也应包含在本申请保护范围以内,并在此以引用方式包含于此。
在步骤S13中,设备1根据所述调用信息及所述参数模式信息验证所述描述类API。
在此,根据所述调用信息及所述参数模式信息进行验证,以确定所述描述类API是否存在异常。
优选地,在步骤S13中,设备1若所述调用信息中输入参数信息及输出参数信息分别与所述参数模式信息中的对应模式信息相匹配,确定所述描述类API验证通过。
例如,若所述调用信息中输入参数信息及输出参数信息分别与对应的所述待验证的描述类API的输入参数及输出参数的所述参数模式信息相匹配,确定所述描述类API验证通过。
在优选的实施例中,根据所述描述类API对应的描述文件,将所述描述类API的输入参数或输出参数的参数类型、参数是否必需、参数约束信息等三个属性以“and(与)”的方式进行组合,以得到所述参数模式信息。只有当所述调用信息中输入参数信息及输出参数信息中的这三个属性均与所述参数模式信息相匹配时,才可确定所述描述类API验证通过;若有一个属性不匹配,则认为所述描述类API存在异常。
优选地,在步骤S13中,设备1根据预定的参数验证设置信息,利用所述调用信息中须验证的输入参数或输出参数及所述参数模式信息验证所述描述类API。
例如,在部分业务场景下,对于同一个所述描述类API,若输入参数值不同,可能会得到不同的输出参数,而且输出参数的个数也可能不同。对于每一个所述描述类API,其所述参数模式信息应为一个全量的集合,即包括各种可能出现的输出参数。在优选的实施例中,可以仅验证所述须验证的输入参数或输出参数,即在验证所述描述类API时忽略那些不应该出现的输入参数或输出参数。
图2示出根据本申请另一个方面的一种验证描述类API的设备1,其中,设备1包括调用信息获取装置11、参数模式信息获取装置12和验证装置13。
具体地,所述调用信息获取装置11获取待验证的描述类API的调用信息,其中,所述调用信息包括所述描述类API的输入参数信息及输出参数信息;所述参数模式信息获取装置12获取所述描述类API对应的参数模式信息;所述验证装置13根据所述调用信息及所述参数模式信息验证所述描述类API。
在此,所述设备1包括但不限于用户设备、网络设备、或用户设备与网络设备通过网络相集成所构成的设备。所述用户设备其包括但不限于任何一种可与用户通过触摸板进行人机交互的移动电子产品,例如智能手机、平板电脑等,所述移动电子产品可以采用任意操作***,如android操作***、iOS操作***等。其中,所述网络设备包括一种能够按照事先设定或存储的指令,自动进行数值计算和信息处理的电子设备,其硬件包括但不限于微处理器、专用集成电路(ASIC)、可编程门阵列(FPGA)、数字处理器(DSP)、嵌入式设备等。所述网络设备其包括但不限于计算机、网络主机、单个网络服务器、多个网络服务器集或多个服务器构成的云;在此,云由基于云计算(Cloud Computing)的大量计算机或网络服务器构成,其中,云计算是分布式计算的一种,由一群松散耦合的计算机集组成的一个虚拟超级计算机。所述网络包括但不限于互联网、广域网、城域网、局域网、VPN网络、无线自组织网络(Ad Hoc网络)等。优选地,设备1还可以是运行于所述用户设备、网络设备、或用户设备与网络设备、网络设备、触摸终端或网络设备与触摸终端通过网络相集成所构成的设备上的脚本程序。当然,本领域技术人员应能理解上述设备1仅为举例,其他现有的或今后可能出现的设备1如可适用于本申请,也应包含在本申请保护范围以内,并在此以引用方式包含于此。
所述调用信息获取装置11获取待验证的描述类API的调用信息,其中,所述调用信息包括所述描述类API的输入参数信息及输出参数信息。
在具体的实施例中,可以通过调用待验证的描述类API以获取所述调用信息,也可以获取已有的所述调用信息。
优选地,所述调用信息获取装置11根据给定的输入参数信息调用待验证的描述类API;获取所述描述类API的调用信息,其中,所述调用信息包括所述描述类API的输入参数信息及输出参数信息。
例如,向待验证的描述类API发送请求以调用所述待验证的描述类API,其中,所述请求包括给定的输入参数信息。然后,获取所述待验证的描述类API返回的请求结果,其中,所述请求结果包括输出参数信息。在此,所述调用信息包括向所述待验证的描述类API发送的输入参数信息以及所述待验证的描述类API返回的输出参数信息。
更优选地,所述调用信息还包括所述描述类API被调用时对应的错误码或正确码。
例如,接上例,向待验证的描述类API发送请求,假设所述请求中包括的输入参数信息不符合所述待验证的描述类API的要求,预期所述待验证的描述类API将返回错误码,若所述待验证的描述类API未返回错误码则说明所述待验证的描述类API存在异常;相应地,假设所述请求中包括的输入参数信息符合所述待验证的描述类API的要求,预期所述待验证的描述类API将返回正确码。
所述参数模式信息获取装置12获取所述描述类API对应的参数模式信息。
在此,获取所述待验证的描述类API的输入参数和/或输出参数的参数模式信息。
优选地,所述调用信息还包括所述描述类API被调用时对应的错误码或正确码;其中,所述参数模式信息获取装置12当所述调用信息包括所述正确码,获取所述描述类API对应的参数模式信息。
例如,在调用所述待验证的描述类API,向所述待验证的描述类API发送请求时,若所述请求中包括的输入参数信息符合待验证的描述类API的要求,将会收到所述待验证的描述类API返回的正确码。在此,若所述调用信息未包括所述待验证的描述类API返回的正确码,则说明所述输入参数信息不符合所述待验证的描述类API的要求或所述待验证的描述类API存在异常。
优选地,所述参数模式信息包括所述描述类API的输入参数或输出参数的以下至少任一属性:参数类型;参数是否必需;参数约束信息;子参数的嵌套参数模式信息。
例如,所述参数类型可以包括Integer(整型)、String(字符串)、List(双向链表)等。所述参数是否必需表示所述输入参数或输出参数是否为所述描述类API必需的输入参数或输出参数。所述参数约束信息根据所述输入参数或输出参数的说明信息得到,例如所述参数约束信息可以包括根据所述输入参数或输出参数的说明字段得到的正则表达式。若所述参数类型为List(双向链表),则List类型的参数下一级可能包括嵌套的子参数,而且,其子参数下一级可能还包括嵌套的子参数。在此,所述子参数的嵌套参数模式信息包括所述参数的若干级的子参数的参数模式信息。
优选地,所述参数模式信息获取装置12根据所述描述类API对应的描述文件确定所述描述类API对应的参数模式信息。
例如,所述描述类API对应的描述文件包括输入参数(如下表3所示)及输出参数(如下表4所示)的相关信息,可以根据所述描述类API对应的描述文件确定输入参数及输出参数的参数类型、参数是否必需、参数约束信息、子参数的嵌套参数模式信息等属性,即可确定所述描述类API对应的参数模式信息。
表3
表4
更优选地,所述参数模式信息包括所述描述类API的输入参数或输出参数的参数约束信息;其中,所述参数模式信息获取装置12根据所述描述类API对应的描述文件中关于所述描述类API的输入参数或输出参数的说明信息,生成所述描述类API的输入参数或输出参数的参数约束信息。
例如,所述参数约束信息可以包括根据所述描述类API的输入参数或输出参数的说明字段得到的正则表达式。在此,正则表达式(Regular Expression)是计算机科学的一个概念,它使用单个字符串来描述、匹配一系列符合某个句法规则的字符串。
以参数“RDS实例名”为例,其对应的说明字段为“可由小写字母,数字,下划线组成,字母开头,长度不超过30个字符”,由此得到的正则表达式为“^[a-z][a-z_0-9]{0,29}$”。其中,“a-z”表示所有小写字母,“_”是下划线,“0-9”是所有数字,把它们放在“[]”里面表示可以任选,所以“[a-z_0-9]”表示可以在所有小写字母或者下划线或者所有数字里面任选一个,“可由小写字母,数字,下划线组成”即为“[a-z_0-9]”;“开头”用“^”表示,由于前面有小写字母的限制,所以此处的字母也应该为小写“[a-z]”,“字母开头”即为“^[a-z]”;对于“长度不超过30个字符”,因为“^[a-z]”占用了1个字符,所以后面的字符长度可以为0到29个之间,所以用“{0,29}”表示前面的字符可以有0到29个,前面的字符在此处为“[a-z_0-9]”;最后再加一个“$”表示后面不能再有其他字符。
更优选地,所述参数模式信息包括所述描述类API的输入参数或输出参数的子参数的嵌套参数模式信息;其中,所述参数模式信息获取装置12对于所述描述类API中存在子参数的输入参数或输出参数,根据所述描述类API对应的描述文件中关于对应输入参数或输出参数的说明信息,确定对应输入参数或输出参数的子参数的嵌套参数模式信息。
例如,若所述参数类型为List(双向链表),则List类型的参数下一级可能包括嵌套的子参数,而且,其子参数下一级可能还包括嵌套的子参数。在此,所述子参数的嵌套参数模式信息包括所述参数的若干级的子参数的参数模式信息,且所述子参数的嵌套参数模式信息也包括参数类型、参数是否必需、参数约束信息、子参数的嵌套参数模式信息等属性中的至少任一项。
当然,本领域技术人员应能理解上述List类型仅为举例,其他现有的或今后可能出现的参数类型如可适用于本申请,也应包含在本申请保护范围以内,并在此以引用方式包含于此。
所述验证装置13根据所述调用信息及所述参数模式信息验证所述描述类API。
在此,根据所述调用信息及所述参数模式信息进行验证,以确定所述描述类API是否存在异常。
优选地,所述验证装置13若所述调用信息中输入参数信息及输出参数信息分别与所述参数模式信息中的对应模式信息相匹配,确定所述描述类API验证通过。
例如,若所述调用信息中输入参数信息及输出参数信息分别与对应的所述待验证的描述类API的输入参数及输出参数的所述参数模式信息相匹配,确定所述描述类API验证通过。
在优选的实施例中,根据所述描述类API对应的描述文件,将所述描述类API的输入参数或输出参数的参数类型、参数是否必需、参数约束信息等三个属性以“and(与)”的方式进行组合,以得到所述参数模式信息。只有当所述调用信息中输入参数信息及输出参数信息中的这三个属性均与所述参数模式信息相匹配时,才可确定所述描述类API验证通过;若有一个属性不匹配,则认为所述描述类API存在异常。
优选地,所述验证装置13根据预定的参数验证设置信息,利用所述调用信息中须验证的输入参数或输出参数及所述参数模式信息验证所述描述类API。
例如,在部分业务场景下,对于同一个所述描述类API,若输入参数值不同,可能会得到不同的输出参数,而且输出参数的个数也可能不同。对于每一个所述描述类API,其所述参数模式信息应为一个全量的集合,即包括各种可能出现的输出参数。在优选的实施例中,可以仅验证所述须验证的输入参数或输出参数,即在验证所述描述类API时忽略那些不应该出现的输入参数或输出参数。
此外,本申请实施例还提供了另一种验证描述类API的设备,所述设备的结构如图4所示,包括处理器410,以及被安排成存储计算机可执行指令的存储器420。所述可执行指令在被执行时使所述处理器:获取待验证的描述类API的调用信息,其中,所述调用信息包括所述描述类API的输入参数信息及输出参数信息;获取所述描述类API对应的参数模式信息;以及根据所述调用信息及所述参数模式信息验证所述描述类API。
图3示出了采用本申请实施例提出的方案对某一描述类API进行校验的处理流程。在本实施例中,“RDS实例名”为该描述类API的一个输入参数,该输入参数具有相应的参数模式信息。若该描述类API的功能是基于RDS实例名查询RDS实例的相关信息,则即通过下发包含“RDS实例名”API请求,可以获取到输出参数信息为“RDS实例的相关信息”的请求结果。相应的,RDS实例的相关信息也具有特定的参数模式信息。
在实际场景中,各个已知的描述类API中输入参数及输出参数的参数模式信息可以在数据库中以模式集合的形式保存,通过API的标识信息(如API名称)可以直接查询。例如,“RDS实例名”对应的参数模式信息包括如下3项:参数类型:String,参数是否必须:是,参数约束信息:^[a-z][a-z_0-9]{0,29}$。其中,参数约束信息的形式为正则表达式,具体含义为:可以由小写字母、数字、下划线组成,字母开头,长度不超过30个字符。
具体的校验流程如下:
步骤S301,基于给定的输入参数信息,下发API请求,并获取请求结果。其中,给定的输入参数信息是指用于进行校验的RDS实例名,例如“ab12_34”。
步骤S302,判断返回的请求结果中是否包含错误码。在描述类API以及输入参数信息正常的情况下,请求结果中将包含正确的输出参数信息(即RDS实例的相关信息),若描述类API或输入参数信息错误的情况下,该请求结果中将包含错误的输出参数信息(即错误码)。由此,若返回的请求结果中有错误码,则执行步骤S303,否则,执行步骤步骤S304。
步骤S303,报错。
步骤S304,识别该描述类API,并获取该API的输入参数及输出参数的参数模式信息。例如,可以在确定API的名称后,通过名称在数据库的模式集合中抽取出对应的输入参数及输出参数的参数模式信息。
步骤S305,校验给定的输入参数,即基于S304中获取到的“RDS实例名”对应的参数模式信息,对实际给定的RDS实例名进行校验,判断其是否符合参数模式信息所约定的模式。若不符合,则执行步骤S306;若符合,则执行步骤S307。
步骤S306,报错。
步骤S307,校验S301得到的请求结果中所包含的正确的输出参数信息,即实际查询到的“RDS实例的相关信息”。类似地,所述校验的方式可以参考S305,基于S304中获取到的“RDS实例的相关信息”对应的参数模式信息,对实际查询到的RDS实例的相关信息进行校验,判断其是否符合参数模式信息所约定的模式。若不符合,则执行步骤S308;若符合,则执行步骤S309。
步骤S308,报错。
步骤S309,结束,并返回校验成功结果。
与现有技术相比,本申请首先获取待验证的描述类API的调用信息,再获取所述描述类API对应的参数模式信息,然后根据所述调用信息及所述参数模式信息验证所述描述类API,而不必为每一个待验证的描述类API分别编写测试代码来进行验证,从而提高了验证描述类API的效率,节省了大量的时间成本,增加了验证结果的可靠性。进一步地,本申请利用所述调用信息中须验证的输入参数或输出参数及所述参数模式信息验证所述描述类API,从而进一步提高效率、节省时间。
需要注意的是,本申请可在软件和/或软件与硬件的组合体中被实施,例如,可采用专用集成电路(ASIC)、通用目的计算机或任何其他类似硬件设备来实现。在一个实施例中,本申请的软件程序可以通过处理器执行以实现上文所述步骤或功能。同样地,本申请的软件程序(包括相关的数据结构)可以被存储到计算机可读记录介质中,例如,RAM存储器,磁或光驱动器或软磁盘及类似设备。另外,本申请的一些步骤或功能可采用硬件来实现,例如,作为与处理器配合从而执行各个步骤或功能的电路。
另外,本申请的一部分可被应用为计算机程序产品,例如计算机程序指令,当其被计算机执行时,通过该计算机的操作,可以调用或提供根据本申请的方法和/或技术方案。而调用本申请的方法的程序指令,可能被存储在固定的或可移动的记录介质中,和/或通过广播或其他信号承载媒体中的数据流而被传输,和/或被存储在根据所述程序指令运行的计算机设备的工作存储器中。在此,根据本申请的一个实施例包括一个装置,该装置包括用于存储计算机程序指令的存储器和用于执行程序指令的处理器,其中,当该计算机程序指令被该处理器执行时,触发该装置运行基于前述根据本申请的多个实施例的方法和/或技术方案。
对于本领域技术人员而言,显然本申请不限于上述示范性实施例的细节,而且在不背离本申请的精神或基本特征的情况下,能够以其他的具体形式实现本申请。因此,无论从哪一点来看,均应将实施例看作是示范性的,而且是非限制性的,本申请的范围由所附权利要求而不是上述说明限定,因此旨在将落在权利要求的等同要件的含义和范围内的所有变化涵括在本申请内。不应将权利要求中的任何附图标记视为限制所涉及的权利要求。此外,显然“包括”一词不排除其他单元或步骤,单数不排除复数。装置权利要求中陈述的多个单元或装置也可以由一个单元或装置通过软件或者硬件来实现。第一,第二等词语用来表示名称,而并不表示任何特定的顺序。
Claims (19)
1.一种验证描述类API的方法,其中,该方法包括:
获取待验证的描述类API的调用信息,其中,所述调用信息包括所述描述类API的输入参数信息及输出参数信息;
获取所述描述类API对应的参数模式信息;
根据所述调用信息及所述参数模式信息验证所述描述类API。
2.根据权利要求1所述的方法,其中,所述参数模式信息包括所述描述类API的输入参数或输出参数的以下至少任一属性:
参数类型;
参数是否必需;
参数约束信息;
子参数的嵌套参数模式信息。
3.根据权利要求1所述的方法,其中,所述获取所述描述类API对应的参数模式信息包括:
根据所述描述类API对应的描述文件确定所述描述类API对应的参数模式信息。
4.根据权利要求3所述的方法,其中,所述参数模式信息包括所述描述类API的输入参数或输出参数的参数约束信息;
其中,所述获取所述描述类API对应的参数模式信息包括:
根据所述描述类API对应的描述文件中关于所述描述类API的输入参数或输出参数的说明信息,生成所述描述类API的输入参数或输出参数的参数约束信息。
5.根据权利要求3所述的方法,其中,所述参数模式信息包括所述描述类API的输入参数或输出参数的子参数的嵌套参数模式信息;
其中,所述获取所述描述类API对应的参数模式信息包括:
对于所述描述类API中存在子参数的输入参数或输出参数,根据所述描述类API对应的描述文件中关于对应输入参数或输出参数的说明信息,确定对应输入参数或输出参数的子参数的嵌套参数模式信息。
6.根据权利要求1所述的方法,其中,所述根据所述调用信息及所述参数模式信息验证所述描述类API包括:
若所述调用信息中输入参数信息及输出参数信息分别与所述参数模式信息中的对应模式信息相匹配,确定所述描述类API验证通过。
7.根据权利要求1所述的方法,其中,所述根据所述调用信息及所述参数模式信息验证所述描述类API包括:
根据预定的参数验证设置信息,利用所述调用信息中须验证的输入参数或输出参数及所述参数模式信息验证所述描述类API。
8.根据权利要求1所述的方法,其中,所述获取待验证的描述类API的调用信息包括:
根据给定的输入参数信息调用待验证的描述类API;
获取所述描述类API的调用信息,其中,所述调用信息包括所述描述类API的输入参数信息及输出参数信息。
9.根据权利要求8所述的方法,其中,所述调用信息还包括所述描述类API被调用时对应的错误码或正确码;
其中,所述获取所述描述类API对应的参数模式信息包括:
当所述调用信息包括所述正确码,获取所述描述类API对应的参数模式信息。
10.一种验证描述类API的设备,其中,该设备包括:
调用信息获取装置,用于获取待验证的描述类API的调用信息,其中,所述调用信息包括所述描述类API的输入参数信息及输出参数信息;
参数模式信息获取装置,用于获取所述描述类API对应的参数模式信息;
验证装置,用于根据所述调用信息及所述参数模式信息验证所述描述类API。
11.根据权利要求10所述的设备,其中,所述参数模式信息包括所述描述类API的输入参数或输出参数的以下至少任一属性:
参数类型;
参数是否必需;
参数约束信息;
子参数的嵌套参数模式信息。
12.根据权利要求10所述的设备,其中,所述参数模式信息获取装置用于:
根据所述描述类API对应的描述文件确定所述描述类API对应的参数模式信息。
13.根据权利要求12所述的设备,其中,所述参数模式信息包括所述描述类API的输入参数或输出参数的参数约束信息;
其中,所述参数模式信息获取装置用于:
根据所述描述类API对应的描述文件中关于所述描述类API的输入参数或输出参数的说明信息,生成所述描述类API的输入参数或输出参数的参数约束信息。
14.根据权利要求12所述的设备,其中,所述参数模式信息包括所述描述类API的输入参数或输出参数的子参数的嵌套参数模式信息;
其中,所述参数模式信息获取装置用于:
对于所述描述类API中存在子参数的输入参数或输出参数,根据所述描述类API对应的描述文件中关于对应输入参数或输出参数的说明信息,确定对应输入参数或输出参数的子参数的嵌套参数模式信息。
15.根据权利要求10所述的设备,其中,所述验证装置用于:
若所述调用信息中输入参数信息及输出参数信息分别与所述参数模式信息中的对应模式信息相匹配,确定所述描述类API验证通过。
16.根据权利要求10所述的设备,其中,所述验证装置用于:
根据预定的参数验证设置信息,利用所述调用信息中须验证的输入参数或输出参数及所述参数模式信息验证所述描述类API。
17.根据权利要求10所述的设备,其中,所述调用信息获取装置用于:
根据给定的输入参数信息调用待验证的描述类API;
获取所述描述类API的调用信息,其中,所述调用信息包括所述描述类API的输入参数信息及输出参数信息。
18.根据权利要求17所述的设备,其中,所述调用信息还包括所述描述类API被调用时对应的错误码或正确码;
其中,所述参数模式信息获取装置用于:
当所述调用信息包括所述正确码,获取所述描述类API对应的参数模式信息。
19.一种验证描述类API的设备,其中,所述设备包括:
处理器;以及
被安排成存储计算机可执行指令的存储器,所述可执行指令在被执行时使所述处理器:获取待验证的描述类API的调用信息,其中,所述调用信息包括所述描述类API的输入参数信息及输出参数信息;获取所述描述类API对应的参数模式信息;以及根据所述调用信息及所述参数模式信息验证所述描述类API。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610111548 | 2016-02-29 | ||
CN2016101115482 | 2016-02-29 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN107133163A true CN107133163A (zh) | 2017-09-05 |
Family
ID=59721051
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710051378.8A Pending CN107133163A (zh) | 2016-02-29 | 2017-01-23 | 一种验证描述类api的方法与设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107133163A (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107908485A (zh) * | 2017-10-26 | 2018-04-13 | 中国平安人寿保险股份有限公司 | 接口参数传递方法、装置、设备及计算机可读存储介质 |
CN109298999A (zh) * | 2018-08-21 | 2019-02-01 | 杭州群核信息技术有限公司 | 一种基于数据分布特征的核心化软件测试方法和装置 |
CN110688142A (zh) * | 2019-10-10 | 2020-01-14 | 星环信息科技(上海)有限公司 | 应用程序编程接口的发布方法、设备及存储介质 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101013968A (zh) * | 2005-11-29 | 2007-08-08 | 阿尔卡特公司 | 自动接口测试框架 |
CN104980313A (zh) * | 2008-10-31 | 2015-10-14 | 电子湾有限公司 | 测试可执行指令的***和方法 |
-
2017
- 2017-01-23 CN CN201710051378.8A patent/CN107133163A/zh active Pending
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101013968A (zh) * | 2005-11-29 | 2007-08-08 | 阿尔卡特公司 | 自动接口测试框架 |
CN104980313A (zh) * | 2008-10-31 | 2015-10-14 | 电子湾有限公司 | 测试可执行指令的***和方法 |
Non-Patent Citations (1)
Title |
---|
胖小强: "关于API测试", 《WWW.51TESTING.COM/HTML/56/N-832456.HTML》 * |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107908485A (zh) * | 2017-10-26 | 2018-04-13 | 中国平安人寿保险股份有限公司 | 接口参数传递方法、装置、设备及计算机可读存储介质 |
CN107908485B (zh) * | 2017-10-26 | 2020-08-04 | 中国平安人寿保险股份有限公司 | 接口参数传递方法、装置、设备及计算机可读存储介质 |
CN109298999A (zh) * | 2018-08-21 | 2019-02-01 | 杭州群核信息技术有限公司 | 一种基于数据分布特征的核心化软件测试方法和装置 |
CN109298999B (zh) * | 2018-08-21 | 2021-08-31 | 杭州群核信息技术有限公司 | 一种基于数据分布特征的核心化软件测试方法和装置 |
CN110688142A (zh) * | 2019-10-10 | 2020-01-14 | 星环信息科技(上海)有限公司 | 应用程序编程接口的发布方法、设备及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CA2957674C (en) | Testing insecure computing environments using random data sets generated from characterizations of real data sets | |
US20210049715A1 (en) | Blockchain-based data procesing method, apparatus, and electronic device | |
CN106033510B (zh) | 一种用户设备识别方法及*** | |
CN107644286A (zh) | 工作流处理方法及装置 | |
CN103544074A (zh) | 一种业务的校验方法及装置 | |
CN109344572B (zh) | 分布式对象的许可方法和*** | |
US20230205755A1 (en) | Methods and systems for improved search for data loss prevention | |
CN107220266A (zh) | 一种创建业务数据库、业务数据存储和确定业务数据的方法及装置 | |
CN106897342A (zh) | 一种数据校验方法和设备 | |
CN110008743A (zh) | 一种块链式账本中的数据属性标识方法、装置及设备 | |
CN105391594A (zh) | 识别特征账号的方法及装置 | |
CN110347744A (zh) | 多层块链式账本的数据存储方法、装置及设备 | |
CN109165209A (zh) | 数据库中对象类型的数据校验方法、装置、设备及介质 | |
CN107133163A (zh) | 一种验证描述类api的方法与设备 | |
CN106547658A (zh) | 一种自动化测试方法及装置 | |
CN111046052B (zh) | 一种数据库中的操作记录存储方法、装置及设备 | |
CN111159040A (zh) | 一种测试数据生成方法、装置、设备及存储介质 | |
CN110362569A (zh) | 数据表的校验方法及装置、电子设备、存储介质 | |
CN110059088A (zh) | 一种块链式账本中的数据属性标识方法、装置及设备 | |
CN107194280B (zh) | 模型建立方法及装置 | |
CN110059087B (zh) | 一种块链式账本中的数据属性标识方法、装置及设备 | |
CN111124883A (zh) | 一种基于树形表格的测试用例库引入方法、***及设备 | |
CN106294115A (zh) | 一种应用***迁移性的测试方法及装置 | |
CN106294110A (zh) | 一种文件比对方法及装置 | |
CN115203746A (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: 20170905 |
|
RJ01 | Rejection of invention patent application after publication |