CN112241370A - 一种api接口类的校验方法、系统及装置 - Google Patents

一种api接口类的校验方法、系统及装置 Download PDF

Info

Publication number
CN112241370A
CN112241370A CN202011132164.1A CN202011132164A CN112241370A CN 112241370 A CN112241370 A CN 112241370A CN 202011132164 A CN202011132164 A CN 202011132164A CN 112241370 A CN112241370 A CN 112241370A
Authority
CN
China
Prior art keywords
attribute information
api
class
attribute
api interface
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
Application number
CN202011132164.1A
Other languages
English (en)
Other versions
CN112241370B (zh
Inventor
范晨灿
陈平
崔奇凡
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Netease Hangzhou Network Co Ltd
Original Assignee
Netease Hangzhou Network Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Netease Hangzhou Network Co Ltd filed Critical Netease Hangzhou Network Co Ltd
Priority to CN202011132164.1A priority Critical patent/CN112241370B/zh
Publication of CN112241370A publication Critical patent/CN112241370A/zh
Application granted granted Critical
Publication of CN112241370B publication Critical patent/CN112241370B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3668Software testing
    • G06F11/3672Test management
    • G06F11/3688Test management for test execution, e.g. scheduling of test suites

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)
  • Debugging And Monitoring (AREA)
  • Stored Programmes (AREA)

Abstract

本公开涉及计算机处理技术领域,尤其涉及一种API接口类的校验方法、系统及装置,解决现存的由于API接口类的定义错误,造成的测试时间的增加以及功能执行异常的问题,方法为:编译包含被注解的各个API接口类的源代码工程,并执行以下操作:收集所述各个API接口类,将对应建立的各个属性信息集合上报至管理服务器后,获取匹配表,确定各个API接口类对应的API返回数据,并根据属性信息生成的数据获取语句的调用结果,确定属性信息的校验结果。这样,通过对API接口类进行的校验操作,极大的降低了测试过程的时间成本,避免出现由于未校验API接口类的定义所导致的难以准确定位功能执行异常的原因。

Description

一种API接口类的校验方法、系统及装置
技术领域
本公开涉及计算机数据处理领域,尤其涉及一种API接口类的校验方法、系统及装置。
背景技术
APP正常运行所需要的数据通常存储在APP服务器上,APP借助于API接口向APP服务器请求获取运行数据,并接收API接口返回的字符串形式的API返回数据,进而将API返回数据映射为APP可识别使用的数据形式。APP的源代码工程中,包括API接口类,所述API接口类通常由APP开发者根据API文档定义自动或人工生成,API类定义文件的准确性直接影响了是否能够有效解析API返回数据。
现有技术下的对于APP源代码工程的测试过程中,并未对各个API接口类中包括的属性信息进行校验,而且目前对于API返回数据设置的机制中,对于无法从API返回数据中解析获得对应的字段值的属性信息,会默认配置为空或默认值,而不会报错。
这样,开发人员通常无法察觉API接口类中错误定义的信息,而且在接口类中定义的内容日益复杂的今天,接口类中可能定义有数组以及嵌套对象。这使得后续的测试过程中,当接口类中存在错误定义的属性信息时,测试人员在触发APP请求API接口,并获得API返回数据后,即使发现APP功能执行异常,也无法第一时间确定APP功能执行异常的原因,将极大的耗费开发人员和测试人员的排查时间,一旦APP在未能纠错的情况下上线,极容易带来大范围的使用故障。
例如,假设APP从APP服务器处获得的API返回数据为{“userName”:“ZhangSan”,“copyrightProtection”,true},则对应的接口类中存在有如下定义:“Class User{Stringusername;boolean copyrightProtection;}”,其中,对象User中包括字符串String类型的username和布尔boolean类型的copyrightProtection,两个属性信息,此时正常解析完成后,APP获得的userName应为ZhangSan,copyrightProtection应为true。但如果接口类的定义代码中错误定义为“Class User{String username;boolean copyrightprotection;}”,则对于boolean类型的copyrightprotection,无法解析其对应的字段值,故配置为默认值“false”,这样将“ZhangSan”错误解析为不进行版权保护,进而造成用户名为“ZhangSan”的用户版权保护失效的巨大事故。可见,对于接口类的类定义代码中,属性信息定义正确与否的校验至关重要。
因此,需要一种针对API接口类的校验方法,以实现校验各个接口类中的属性信息定义是否准确,以避免由于接口类中属性信息的定义错误,造成的测试时间的增加以及功能执行的异常,提高测试效率。
发明内容
本公开实施例提供一种API接口类的校验方法、系统及装置,用以解决现有技术中存在由于API接口类中属性信息的定义错误,造成的测试时间的增加以及功能执行异常的问题。
本公开实施例提供的具体技术方案如下:
第一方面,提出一种API接口类的校验方法,应用于开发设备,包括:
编译包含被注解的各个API接口类的源代码工程,并执行以下操作:
收集所述各个API接口类,并根据所述各个API接口类中各自定义的属性信息,建立对应所述各个API接口类的各个属性信息集合,所述属性信息包括属性名称及其对应的属性类型;
将所述各个属性信息集合上报至管理服务器后,获取所述管理服务器创建的匹配表,确定与各个API接口类的类信息对应的各个API返回数据,其中,所述匹配表中至少记录有各个类信息及其对应的API返回数据;
分别基于所述各个API接口类的属性信息集合中的属性信息,生成相应的数据获取语句,并根据数据获取语句的调用结果,确定对应的属性信息的校验结果,其中,一个属性信息对应生成至少一个数据获取语句,数据获取语句用于获取API返回数据中与对应的属性信息匹配的字段值。
可选的,所述将所述各个属性信息集合上报至管理服务器之后,确定所述管理服务器未创建匹配表时,进一步包括:
待所述源代码工程编译完成后,基于完成编译后的源代码工程生成数据包,以使得安装所述数据包的终端设备在请求API后,将API返回数据及其对应的API接口类的类信息主动上报至所述管理服务器,并使得所述管理服务器至少基于所述API返回数据及其对应的API接口类的类信息创建相应的匹配表。
可选的,所述根据所述各个API接口类中各自定义的属性信息,建立对应所述各个API接口类的各个属性信息集合之前,进一步包括:
遍历所述各个API接口类,提取所述各个API接口类中各自定义的属性名称,以及与所述属性名称对应的属性类型,并将对应得到的各个属性名称及其对应的属性类型,作为所述各个API接口类中各自包含的属性信息。
可选的,所述遍历所述各个API接口类之后,所述将对应得到的各个属性名称及其对应的属性类型,作为所述各个接口类中各自包含的属性信息之前,进一步包括:
筛选出所述各个API接口类中,标记有修饰关键字的属性名称及其对应的属性类型,并删除筛选出的属性名称及其对应的属性类型;和/或,
筛选出所述各个API接口类中,标记有映射注解的属性名称,并将筛选出的属性名称修改为所述映射注解中注解的指定属性名称。
可选的,所述确定与各个API接口类的类信息对应的各个API返回数据之后,所述分别基于所述各个API接口类的属性信息集合中的属性信息,生成相应的数据获取语句之前,进一步包括:
获取到管理服务器创建的预处理名单时,基于所述预处理名单记录的各个属性信息的处理方式,对所述属性信息集合中的相关属性信息进行处理。
可选的,所述API接口类的属性信息集合中,包含的属性类型为以下任意一项或组合:
数组类型;
类类型;
基本数据类型。
可选的,属性信息的属性类型为数组类型时,所述生成相应的数据获取语句,包括:
基于属性信息中的属性名称生成该属性名称的数组获取语句,并在调用所述数组获取语句未抛出异常时,获取数组类型的属性信息中定义的元素属性信息;
根据各个元素属性信息,生成对应所述各个元素属性信息的各个元素数据获取语句。
可选的,属性信息的属性类型为类类型时,所述生成相应的数据获取语句,包括:
基于所述属性信息中的属性名称生成该属性名称的对象获取语句,并在调用所述对象获取语句未抛出异常时,获取类类型的属性信息中定义的元素属性信息;
根据各个元素属性信息,生成对应所述各个元素属性信息的各个数据获取语句。
可选的,所述根据数据获取语句的调用结果,确定对应的属性信息的校验结果,包括:
调用各个数据获取语句,获取所述各个数据获取语句的调用结果;
确定所述各个数据获取语句的调用结果是否为抛出异常,若是,获取返回结果异常的数据获取语句,并将其对应的属性信息判定为校验出错,否则,判定所述各个数据获取语句对应的各个属性信息校验成功。
可选的,所述确定对应的属性信息的校验结果之后,进一步包括:
将得到的属性信息的校验结果,发送至所述管理服务器,使得所述管理服务器记录各个属性信息的校验状态。
可选的,所述获取返回结果异常的数据获取语句,并将其对应的属性信息判定为校验出错之后,进一步包括:
获取校验出错的各个属性信息中的属性名称,生成各个同名数据获取语句,所述同名数据获取语句用于获取API数据中,字段名为该属性名称的字段值;
接收各个同名数据获取语句的调用结果,若确定同名数据获取语句的调用结果为抛出异常时,则判定对应的属性名称定义错误,以及若确定所述同名数据获取语句的调用结果为未抛出异常时,则判定对应的属性名称定义成功,且所述属性名称对应的属性类型定义错误。
可选的,所述将其对应的属性信息判定为校验出错之后,进一步包括:
针对校验出错的各个属性信息,分别执行以下操作:
获取对应的API返回数据中包括的各个字段名,并依次计算一个属性信息中的属性名称与所述各个字段名之间连续相同的字母数目;
筛选出字母数目最高的字段名及其对应的字段类型,生成包含筛选出的所述字段名和字段类型的一条修改建议,并将所述一条修改建议以及所述一个属性信息输出至编译日志和控制台界面。
可选的,所述将所述一条修改建议以及校验出错的所述一个属性信息输出至编译日志和控制台界面之后,进一步包括:
响应于开发人员根据编译日志及控制台界面上显示的各个修改建议,对校验出错的属性信息的修改操作,校正所述源代码工程中对应的API接口类,并为该API接口类添加修改时间戳。
第二方面,提出一种API接口类的校验方法,应用于管理服务器,包括:
接收开发设备上报的各个API接口类的属性信息集合,将创建的匹配表发送至所述开发设备,所述匹配表至少记录各个API返回数据与其对应的API接口类的类信息,其中,所述各个API返回数据及其对应的API接口类的类信息,由运行源代码工程的终端设备获得API返回的API返回数据后主动上报;
接收所述开发设备基于所述匹配表,对各个API接口类的属性信息集合中的属性信息进行校验时,上报的各个属性信息的校验结果,并基于所述校验结果,记录对应的各个属性信息的校验状态。
可选的,所述将创建的匹配表发送至所述开发设备之前,进一步包括:
至少基于接收到的各个API返回数据,以及所述各个API返回数据各自对应的API接口类的类信息,建立API返回数据与类信息的匹配表,并记录各个API接口类的属性信息集合中,各个属性信息的校验状态,所述匹配表用于记录API返回数据与API接口类的类信息之间的对应关系。
可选的,进一步包括:
根据所述各个API返回数据、对应的各个API接口类的类信息,以及所述各个API接口类的属性信息集合,建立API返回数据与API接口类的匹配表数据库,所述匹配表数据库中至少记录有各个API接口类的修改时间戳,以及各个属性信息集合中的属性信息的校验状态。
可选的,进一步包括:
接收开发设备上报的各个API接口类的属性信息集合,并筛选出关联有修改时间戳的API接口类,并将匹配表数据库中记录的,与筛选出的API接口类对应的各个属性信息的校验状态初始化为未校验状态。
可选的,基于所述校验结果,记录对应的各个属性信息的校验状态,包括:
确定所述开发设备上报的属性信息的校验结果为校验出错时,记录该属性信息的校验状态为校验出错但未纠错;或者,
确定所述开发设备上报的属性信息的校验结果为校验成功,以及确定先前记录的校验状态为未校验状态时,记录并更新该属性信息的校验状态为校验成功;或者,
确定所述开发设备上报的属性信息的校验结果为校验成功,以及确定先前记录的校验状态为校验出错但未纠错时,记录并更新该属性信息的校验状态为校验成功,并生成一条关联的纠错记录。
可选的,包括:
获取源代码工程中对应各个API接口类中定义的属性名称及其对应的属性类型,并将标注有修饰关键字的属性名称及其对应的属性类型,与删除标签进行关联;
将所述源代码工程中标记有映射注解的属性名称,与修改标签关联;
将确定开发设备校验成功的API接口类的类信息,与校验跳过标签关联,并基于关联有不同标签对应的属性信息和类信息建立预处理名单,其中,不同标签表征进行校验时执行的不同操作。
第三方面,提出一种API接口类的校验方法,应用于终端设备,包括:
安装基于编译后的源代码工程生成的安装包,并响应于请求各个API的触发操作,获取所述各个API返回的各个API返回数据,所述源代码工程中包含有被注解收集的各个接口类;
确定所述各个API返回数据对应的各个API接口类的类信息,并将所述各个API返回数据及其对应的各个类信息主动上报至管理服务器。
可选的,所述响应于请求各个API的触发操作,包括:
执行自动化测试脚本,并响应于所述自动化测试脚本在运行过程中的触发操作,请求各个API并接收所述各个API返回的API返回数据。
第四方面,提出一种API接口类的校验系统,包括:
终端设备,安装基于编译后的源代码工程生成的安装包,在请求各个API并获得所述各个API返回的API返回数据时,将各个API返回数据以及对应的各个API接口类的类信息上报至管理服务器;
管理服务器,基于终端设备上报的各个API返回数据及对应的API接口类的类信息,以及开发设备上报的各个API接口类各自对应的属性信息集合,创建匹配表,并记录所述开发设备上报的各个属性信息的校验状态;
开发设备,编译包含有被注解的各个接口类的源代码工程,并根据各个API接口类中定义的属性信息,建立对应所述各个API接口类的各个属性信息集合,将所述各个属性信息集合上报至所述管理服务器后,根据获取的所述管理服务器创建的匹配表,确定与各个API接口类对应的各个API返回数据,并基于各个属性信息中包含的属性信息对应生成数据获取语句后,基于各个数据获取语句的调用结果,判定对应的各个属性信息的校验结果,以及将各个属性信息的校验结果上报至所述管理服务器。
第五方面,提出一种API接口类的校验装置,应用于开发设备,包括:
编译包含被注解的各个API接口类的源代码工程,并执行以下操作:
收集单元,收集所述各个API接口类,并根据所述各个API接口类中各自定义的属性信息,建立对应所述各个API接口类的各个属性信息集合,所述属性信息包括属性名称及其对应的属性类型;
获取单元,将所述各个属性信息集合上报至管理服务器后,获取所述管理服务器创建的匹配表,确定与各个API接口类的类信息对应的各个API返回数据,其中,所述匹配表中至少记录有各个类信息及其对应的API返回数据;
校验单元,分别基于所述各个API接口类的属性信息集合中的属性信息,生成相应的数据获取语句,并根据数据获取语句的调用结果,确定对应的属性信息的校验结果,其中,一个属性信息对应生成至少一个数据获取语句,数据获取语句用于获取API返回数据中与对应的属性信息匹配的字段值。
可选的,所述将所述各个属性信息集合上报至管理服务器之后,确定所述管理服务器未创建匹配表时,进一步包括生成单元,所述生成单元用于:
待所述源代码工程编译完成后,基于完成编译后的源代码工程生成数据包,以使得安装所述数据包的终端设备在请求API后,将API返回数据及其对应的API接口类的类信息主动上报至所述管理服务器,并使得所述管理服务器至少基于所述API返回数据及其对应的API接口类的类信息创建相应的匹配表。
可选的,所述根据所述各个API接口类中各自定义的属性信息,建立对应所述各个API接口类的各个属性信息集合之前,所述收集单元进一步用于:
遍历所述各个API接口类,提取所述各个API接口类中各自定义的属性名称,以及与所述属性名称对应的属性类型,并将对应得到的各个属性名称及其对应的属性类型,作为所述各个API接口类中各自包含的属性信息。
可选的,所述遍历所述各个API接口类之后,所述将对应得到的各个属性名称及其对应的属性类型,作为所述各个接口类中各自包含的属性信息之前,所述收集单元进一步用于:
筛选出所述各个API接口类中,标记有修饰关键字的属性名称及其对应的属性类型,并删除筛选出的属性名称及其对应的属性类型;和/或,
筛选出所述各个API接口类中,标记有映射注解的属性名称,并将筛选出的属性名称修改为所述映射注解中注解的指定属性名称。
可选的,所述确定与各个API接口类的类信息对应的各个API返回数据之后,所述分别基于所述各个API接口类的属性信息集合中的属性信息,生成相应的数据获取语句之前,所述校验单元进一步用于:
获取到管理服务器创建的预处理名单时,基于所述预处理名单记录的各个属性信息的处理方式,对所述属性信息集合中的相关属性信息进行处理。
可选的,所述API接口类的属性信息集合中,包含的属性类型为以下任意一项或组合:
数组类型;
类类型;
基本数据类型。
可选的,属性信息的属性类型为数组类型,所述生成相应的数据获取语句时,所述校验单元用于:
基于属性信息中的属性名称生成该属性名称的数组获取语句,并在调用所述数组获取语句未抛出异常时,获取数组类型的属性信息中定义的元素属性信息;
根据各个元素属性信息,生成对应所述各个元素属性信息的各个元素数据获取语句。
可选的,属性信息的属性类型为类类型,所述生成相应的数据获取语句时,所述校验单元用于:
基于所述属性信息中的属性名称生成该属性名称的对象获取语句,并在调用所述对象获取语句未抛出异常时,获取类类型的属性信息中定义的元素属性信息;
根据各个元素属性信息,生成对应所述各个元素属性信息的各个数据获取语句。
可选的,所述根据数据获取语句的调用结果,确定对应的属性信息的校验结果时,所述校验单元用于:
调用各个数据获取语句,获取所述各个数据获取语句的调用结果;
确定所述各个数据获取语句的调用结果是否为抛出异常,若是,获取返回结果异常的数据获取语句,并将其对应的属性信息判定为校验出错,否则,判定所述各个数据获取语句对应的各个属性信息校验成功。
可选的,所述确定对应的属性信息的校验结果之后,所述校验单元进一步用于:
将得到的属性信息的校验结果,发送至所述管理服务器,使得所述管理服务器记录各个属性信息的校验状态。
可选的,所述获取返回结果异常的数据获取语句,并将其对应的属性信息判定为校验出错之后,所述校验单元进一步用于:
获取校验出错的各个属性信息中的属性名称,生成各个同名数据获取语句,所述同名数据获取语句用于获取API数据中,字段名为该属性名称的字段值;
接收各个同名数据获取语句的调用结果,若确定同名数据获取语句的调用结果为抛出异常时,则判定对应的属性名称定义错误,以及若确定所述同名数据获取语句的调用结果为未抛出异常时,则判定对应的属性名称定义成功,且所述属性名称对应的属性类型定义错误。
可选的,所述将其对应的属性信息判定为校验出错之后,所述校验单元进一步用于:
针对校验出错的各个属性信息,分别执行以下操作:
获取对应的API返回数据中包括的各个字段名,并依次计算一个属性信息中的属性名称与所述各个字段名之间连续相同的字母数目;
筛选出字母数目最高的字段名及其对应的字段类型,生成包含筛选出的所述字段名和字段类型的一条修改建议,并将所述一条修改建议以及所述一个属性信息输出至编译日志和控制台界面。
可选的,所述将所述一条修改建议以及校验出错的所述一个属性信息输出至编译日志和控制台界面之后,所述校验单元进一步用于:
响应于开发人员根据编译日志及控制台界面上显示的各个修改建议,对校验出错的属性信息的修改操作,校正所述源代码工程中对应的API接口类,并为该API接口类添加修改时间戳。
第六方面,提出一种API接口类的校验装置,应用于管理服务器,包括:
创建单元,接收开发设备上报的各个API接口类的属性信息集合,将创建的匹配表发送至所述开发设备,所述匹配表至少记录各个API返回数据与其对应的API接口类的类信息,其中,所述各个API返回数据及其对应的API接口类的类信息,由运行源代码工程的终端设备获得API返回的API返回数据后主动上报;
接收单元,接收所述开发设备基于所述匹配表,对各个API接口类的属性信息集合中的属性信息进行校验时,上报的各个属性信息的校验结果,并基于所述校验结果,记录对应的各个属性信息的校验状态。
可选的,所述将创建的匹配表发送至所述开发设备之前,所述创建单元进一步用于:
至少基于接收到的各个API返回数据,以及所述各个API返回数据各自对应的API接口类的类信息,建立API返回数据与类信息的匹配表,并记录各个API接口类的属性信息集合中,各个属性信息的校验状态,所述匹配表用于记录API返回数据与API接口类的类信息之间的对应关系。
可选的,所述创建单元进一步用于:
根据所述各个API返回数据、对应的各个API接口类的类信息,以及所述各个API接口类的属性信息集合,建立API返回数据与API接口类的匹配表数据库,所述匹配表数据库中至少记录有各个API接口类的修改时间戳,以及各个属性信息集合中的属性信息的校验状态。
可选的,所述接收单元进一步用于:
接收开发设备上报的各个API接口类的属性信息集合,并筛选出关联有修改时间戳的API接口类,并将匹配表数据库中记录的,与筛选出的API接口类对应的各个属性信息的校验状态初始化为未校验状态。
可选的,基于所述校验结果,记录对应的各个属性信息的校验状态时,所述接收单元用于:
确定所述开发设备上报的属性信息的校验结果为校验出错时,记录该属性信息的校验状态为校验出错但未纠错;或者,
确定所述开发设备上报的属性信息的校验结果为校验成功,以及确定先前记录的校验状态为未校验状态时,记录并更新该属性信息的校验状态为校验成功;或者,
确定所述开发设备上报的属性信息的校验结果为校验成功,以及确定先前记录的校验状态为校验出错但未纠错时,记录并更新该属性信息的校验状态为校验成功,并生成一条关联的纠错记录。
可选的,所述创建单元进一步用于:
获取源代码工程中对应各个API接口类中定义的属性名称及其对应的属性类型,并将标注有修饰关键字的属性名称及其对应的属性类型,与删除标签进行关联;
将所述源代码工程中标记有映射注解的属性名称,与修改标签关联;
将确定开发设备校验成功的API接口类的类信息,与校验跳过标签关联,并基于关联有不同标签对应的属性信息和类信息建立预处理名单,其中,不同标签表征进行校验时执行的不同操作。
第七方面,提出一种API接口类的校验装置,应用于终端设备,包括:
获取单元,安装基于编译后的源代码工程生成的安装包,并响应于请求各个API的触发操作,获取所述各个API返回的各个API返回数据,所述源代码工程中包含有被注解收集的各个接口类;
上报单元,确定所述各个API返回数据对应的各个API接口类的类信息,并将所述各个API返回数据及其对应的各个类信息主动上报至管理服务器。
可选的,所述响应于请求各个API的触发操作时,所述获取单元用于:
执行自动化测试脚本,并响应于所述自动化测试脚本在运行过程中的触发操作,请求各个API并接收所述各个API返回的API返回数据。
第八方面,提出一种电子设备,包括:
存储器,用于存储可执行指令;
处理器,用于读取并执行存储器中存储的可执行指令,以实现上述第一方面中任一项所述的API接口类的校验方法。
第九方面,提出一种计算机可读存储介质,当所述存储介质中的指令由电子设备执行时,使得所述电子设备能够执行上述第一方面中任一项所述的API接口类的校验方法。
第十方面,提出一种电子设备,包括:
存储器,用于存储可执行指令;
处理器,用于读取并执行存储器中存储的可执行指令,以实现上述第二方面中任一项所述的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为本公开实施例中管理服务器创建的匹配表数据库示意图;
图2为本公开实施例中管理服务器创建的匹配表示意图;
图3为本公开实施例中开发设备执行API接口类的校验操作的流程示意图;
图4为本公开实施例中开发设备采用字节码处理技术获得API接口类的属性信息集合示意图;
图5为本公开实施例中开发设备采用反射技术获得API接口类的属性信息集合示意图;
图6a为本公开实施例中开发设备对API接口类的校验流程示意图;
图6b为本公开实施例中对类类型的属性信息进行校验的流程示意图;
图6c为本公开实施例中对数组类型的属性信息进行校验的流程示意图;
图7a为本公开实施例中X属性信息为基本数据类型时的校验示意图;
图7b为本公开实施例中X属性信息为基本数据类型时的校验示意图;
图8为本公开实施例中管理服务器执行API接口类的校验操作示意图;
图9为本公开实施例中管理服务器建立的纠错记录数据库示意图;
图10为本公开实施例中终端设备在API接口类的校验过程中执行的操作示意图;
图11为本公开实施例中开发设备、管理服务器,终端设备三方交互示意图;
图12为本公开实施例中开发设备的逻辑结构示意图;
图13为本公开实施例中管理服务器的逻辑结构示意图;
图14为本公开实施例中终端设备的逻辑结构示意图;
图15为本公开实施例中开发设备的实体结构示意图;
图16为本公开实施例中管理服务器的实体结构示意图;
图17为本公开实施例中终端设备的实体结构示意图。
具体实施方式
为了使本公开的目的、技术方案及有益效果更加清楚明白,以下结合附图及实施例,对本公开进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本公开,并不用于限定本公开。
本领域技术人员知道,本公开的实施方式可以实现为一种系统、装置、设备、方法或计算机程序产品。因此,本公开可以具体实现为以下形式,即:完全的硬件、完全的软件(包括固件、驻留软件、微代码等),或者硬件和软件结合的形式。
为了方便理解,下面对本公开实施例中涉及的名词进行解释:
开发设备:开发人员对源代码工程进行开发、编译、修改,以及基于源代码工程生成可安装的数据包时所使用的设备,可以是独立的电子设备,也可是组合的电子设备。
终端设备:可以是移动终端、固定终端或便携式终端,例如移动手机、站点、单元、设备、多媒体计算机、多媒体平板、互联网节点、通信器、台式计算机、膝上型计算机、笔记本计算机、上网本计算机、平板计算机、个人通信系统设备、个人导航设备、个人数字助理、音频/视频播放器、数码相机/摄像机、定位设备、电视接收器、无线电广播接收器、电子书设备、游戏设备或者其任意组合,包括这些设备的配件和外设或者其任意组合。还可预见到的是,终端设备能够支持任意类型的针对用户的接口(例如可穿戴设备)等。
管理服务器:可以是独立的物理服务器,也可以是多个物理服务器构成的服务器集群或者分布式系统,还可以是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务以及大数据和人工智能平台等基础云计算服务的云服务器。
API:应用程序接口(Application Programming Interface,API),用来提供应用程序与开发人员基于某软件或者某硬件得以访问一组例程的能力,并且无需访问源码或无需理解内部工作机制细节。
类:表示具有相同属性信息和功能的对象的抽象,用于描述对应构造的对象中包括的信息。
API接口类:一个API接口类对应一个API接口,为开发人员根据API文档定义生成的类定义文件,包含有属性信息,其中,属性信息指代的内容可能是基本数据类型的属性信息,诸如,整数型变量,字符串型变量,布尔型变量等等,或者是类类型的属性信息,也就是嵌套接口类,或者是由基本数据类型的属性信息和嵌套接口类构成的数组,或者是由基本数据类型的属性信息构成的数组,或者是嵌套接口类组成的数组。也就是说,根据API接口类中定义的属性信息,能够在获得API接口返回的API返回数据时,从API返回数据中解析得到对应的字段值。
字段值,存在于API返回数据中,由字段名和字段类型联合限定,其中,API返回数据中的字段名与API接口类的属性信息中的属性名称相对应,API返回数据中的字段类型与API接口类的属性信息中的属性类型相对应。
匹配表数据库,由管理服务器根据开发设备上报的源代码工程中,各个API接口类对应的属性信息集合,以及根据运行编译后的源代码工程的终端设备,上报的各个API接口类的类信息及其对应的API返回数据所创建并维护,如图1所示,示意性的说明了对于API接口类:User,在匹配表数据库中的存在形式,所述匹配表数据库中记录的内容包括但不限于以下内容:API接口类的类信息、API返回数据、API接口类的修改时间戳、API接口类的属性信息集合,以及API接口类的属性校验状态,其中,所述类信息表征API接口类在源代码工程中的路径,所述API返回数据是终端设备请求API接口时得到的返回数据,所述API接口类的修改时间戳以及API接口类的属性校验状态为管理服务器根据开发设备上报的信息所记录。
匹配表,根据实际的呈现需要,呈现匹配表数据库中的部分内容,参阅图2所示,匹配表中呈现的内容至少包括有API接口类的类信息,以及API返回数据。
为了解决现有技术中存在的,在对源代码工程进行测试的过程中,测试人员未对API接口类中定义的属性信息进行校验,使得源代码工程中一旦存在属性信息定义错误的问题时,无法准确发现问题所在,造成了测试时间的增加,降低了测试效率。
目前,在进行源代码工程测试时,并未针对API接口类中属性信息定义的正确与否进行校验,使得错误定义的属性信息不仅极大影响了源代码功能的正常实现,还会造成对数据的错误解析,而且为测试人员发现错误原因带来了极大的困难,增加了测试过程的时间成本和人力成本,对于API接口类中定义的属性信息的校验成为亟待解决的问题。
本公开针对性提出的API接口类的校验方法,校验的内容为API接口类中定义的属性信息,具体的校验过程中,本公开的一些实施例中,可以选择性的同步进行API接口类的校验操作与源代码工程的编译操作,实现对API接口类中定义的属性信息的自动校验,这样,对于API接口类的校验过程无需测试人员的过多参与。在本公开的另一些实施例中,不强调API接口类的校验操作与源代码工程编译操作的同步进行,能够呈现最终对各API接口类的校验结果即可。本公开所公开的API接口类的校验方案中,能够确定API接口类中各个属性信息的校验结果,避免出现API接口类中属性信息的定义错误,使得无法从API返回数据中得到正确的解析结果的问题,弥补了测试人员进行功能性校验时难以发现此类错误的缺陷,节省了测试时间以及开发人员对于同类问题的排查时间。
本公开实施例中,API接口类的校验过程中涉及到开发设备、管理服务器,以及运行编译后的源代码工程的终端设备。
所述终端设备,安装基于编译后的源代码工程生成的安装包,在请求各个API并获得所述各个API返回的API返回数据时,将各个API返回数据以及对应的各个API接口类的类信息上报至管理服务器。
所述管理服务器,基于终端设备上报的各个API返回数据及对应的API接口类的类信息,以及开发设备上报的各个API接口类各自对应的属性信息集合,创建匹配表,并记录所述开发设备上报的各个属性信息的校验状态。
开发设备,编译包含有被注解的各个接口类的源代码工程,并根据各个API接口类中定义的属性信息,建立对应所述各个API接口类的各个属性信息集合,将所述各个属性信息集合上报至所述管理服务器后,根据获取的所述管理服务器创建的匹配表,确定与各个API接口类对应的各个API返回数据,并基于各个属性信息中包含的属性信息对应生成数据获取语句后,基于各个数据获取语句的调用结果,判定对应的各个属性信息的校验结果,以及将各个属性信息的校验结果上报至所述管理服务器。
需要说明的是,本公开实施例中,开发设备对源代码工程进行编译之前,由开发人员对源代码工程进行处理,处理内容包括:为所述源代码工程中的各个接口类添加注解,其中,接口类指代的内容包括各个API接口类,以及API接口类中包括的嵌套接口类,注解的内容为收集所述各个API接口类以及API接口类中包括的嵌套接口类,其中,所述注解为编程语言的元数据,开发人员能够定义注解所执行的操作,比如,在API接口类之前添加@collect注解,并定义为收集API接口类以及API接口类中的类类型的属性信息,即收集嵌套接口类。
本公开实施例中,在获取API返回数据时,一种方式是令终端设备获取API返回数据后主动上报,具体为,在所述源代码工程中添加将API返回数据主动上报的实现代码,使得源代码工程在终端设备上运行,被触发请求API接口并获得该API接口返回的API返回数据时,主动将获得的API返回数据和对应的API接口类的类信息上报至管理服务器。另一种方式是,由开发设备在编译环境中直接请求API,获得API返回的API返回数据,具体为,开发设备直接获取源代码工程中,与API接口类对应的代码,并将该API接口类转换成其他语言代码,使得转换后的API接口类在所述其他语言的编译环境中直接请求API接口,获取API接口返回的API返回数据,并直接确定API接口类的类信息及其对应的API返回数据。
本公开实施例中涉及到的源代码工程具体可以是应用程序(Application,APP)的源代码工程,或者,在浏览器工程跟服务器工程分离的情况下,可以是浏览器的源代码工程。虽然APP和浏览器的开发语言以及编译体系不同,但对于API接口类的校验逻辑能够通用,本公开实施例中对于源代码工程的开发语言以及编译体系不做具体限定,同时,本公开对于源代码工程应用的系统不做具体限定。
下面结合附图,对本公开实施例优选的实施方式进行进一步详细说明:
下面结合附图3,对本公开实施中,开发设备编译包含被注解的各个API接口类的源代码工程时,可同步或非同步执行的校验操作进行说明。
步骤301:收集各个API接口类,并根据所述各个API接口类中各自定义的属性信息,建立对应所述各个API接口类的各个属性信息集合。
开发设备编译包含有被注解的各个接口类的源代码工程,收集源代码工程中定义的各个API接口类,进而遍历所述各个API接口类,确定所述各个API接口类中包括的属性名称及其对应的属性类型,本公开中,将属性名称及其对应的属性类型作为属性信息。
需要说明的是,对于内部定义有属性信息的API接口类来说,属性信息所对应的属性类型可以有很多型式,如,可以是不再嵌套有其他属性信息的基本数据类型,诸如,整型、字符串类型、浮点型,布尔型等等,或者,可以是类类型,也就是存在于API接口类中的嵌套接口类,或者,可以是数组类型,或者,可以是存在于数组中的嵌套接口类。由于本公开意在确定API接口类中定义的属性信息是否定义准确,故获取API接口类中的属性信息的形式可以有所不同,本公开的一些实施例中,在生成属性信息集合时,对于内部定义有其他属性信息的嵌套接口类来说,需要进一步展开,如,获得嵌套接口类中定义的元素属性信息,以及获得数组型属性信息中定义的元素属性信息。而在本公开的另一些实施例中,在生成属性信息集合时,对于内部定义有元素属性信息的属性信息无需展开,待对API进行校验时再分层展开即可。
公知的是,开发人员在开发源代码工程时,由于API接口类是开发人员所定义,故能够明确的知道源代码工程中包括的各个API接口类。
对于包含有嵌套接口类的API接口类来说,所述开发设备根据源代码工程中被注解的各个接口类,在收集各个API接口类的同时,也收集各个API接口类中包括的嵌套接口类。进而根据API接口类中包括的属性信息,建立属性信息集合。
进一步的,所述开发设备遍历各个API接口类,获取所述各个API接口类中包括的属性信息,其中,API接口类中属性信息的类型可以是基本数据类型,数组类型以及类类型。所述基本数据类型包括诸如,整型、浮点型、布尔型等等,对于数组类型的属性信息,数组中可能包括的元素属性信息的属性类型可以是基本数据类型、类类型,或是数组类型。对于类类型的属性信息,也就是说API接口类中定义有嵌套接口类时,嵌套接口类中的元素属性信息的属性类型可以是基本数据类型、数组类型,或是类类型。
本公开实施例中,所述开发设备在确定API接口类对应的属性信息集合时,根据API接口类中包括的属性类型,可以有如下两种处理方式:
处理方式一,所述开发设备遍历各个API接口类,提取所述各个API接口类中各自定义的属性名称,以及与所述属性名称对应的属性类型,并将对应得到的各个属性名称及其对应的属性类型,作为所述各个API接口类中各自包含的属性信息。也就是说,当API接口类中定义的属性信息为基本数据类型时,也就说是,API接口类中不包括内部定义有元素属性信息的数组类型和类类型的属性信息,则直接根据定义的各属性名称及对应的属性类型,确定API接口类中包含的属性信息。
处理方式二,所述开发设备遍历所述各个API接口类,提取所述各个API接口类中各自定义的属性名称,以及与所述属性名称对应的属性类型,并将对应得到的各个属性名称及其对应的属性类型,作为所述各个API接口类中各自包含的属性信息。具体的,当API接口类中定义的属性信息为数据类型或类类型时,遍历API接口类中包括的嵌套接口类和数组,获取嵌套接口类和数组中定义的元素属性信息,直至提取的元素属性名称及其对应的元素属性类型不满足以下任一条件:条件一、元素属性名称对应的元素属性类型为数组类型。条件二、确定元素属性名称对应的元素属性类型为类类型。也就说是,这种实现方式下,开发设备将进一步确定API接口类中的,嵌套接口类中包括的元素属性信息,以及数组中包括的元素属性信息。
本公开一些实施例中,在生成属性信息集合时,对于API接口类中定义的类类型的属性信息和数组类型的属性信息,需要展开获取嵌套接口类中定义的元素属性信息,以及展开获取数组中定义的元素属性信息,使得生成的属性信息集合中包括各个属性信息以及所述各个属性信息中定义的元素属性信息。本公开的另一些实施例中,为了简化操作,在生成属性信息集合时,对于嵌套接口类和数组类型的属性信息,可以不做展开,暂时忽略属性信息内部包含的元素属性信息,待进行具体的校验操作时再获取元素属性信息进行校验。
所述开发设备可以采用字节码处理技术、反射技术,以及其他可实现获取接口类内部定义的属性信息的处理方式,获取接口类内部定义的属性信息。具体的,所述开发设备可以选择性的采用ASM字节码处理技术,访问接口类获得所述API接口类中定义的属性信息,或者,可以选择性的使用反射技术,遍历接口类中的属性区域,以确定API接口类中定义的属性信息。
开发设备可以采用字节码处理技术或反射技术,确定API接口类中定义的属性信息,以及属性信息中嵌套定义的元素属性信息,进而生成属性信息集合,下面将以如下两种方式,对展开属性信息中包括的元素属性信息,以及不展开属性信息中包括的元素属性信息为例,进行示意性说明。
方式一、采用字节码处理技术,遍历一个API接口类。
下面结合附图4,对开发设备采用字节码处理技术,访问一个API接口类,并展开API接口类中的嵌套接口类和数组,生成对应所述一个API接口类的属性信息集合的过程进行说明:
需要说明的是,本公开实施例中,API接口类中的嵌套接口类中包括的元素属性类型可能为类类型、数组类型,或基本数据类型,API接口类中的数组中包括的元素属性类型也可能为类类型、数组类型、或基本数据类型。而对于嵌套接口类中包括有元素接口类和元素数组的情况,将进一步针对元素嵌套接口类以及元素数组进行再展开,以及对于数组中包括元素接口类和元素数组的情况,将进一步针对元素接口类和元素数组进行再展开,且展开方式与数组属性信息和嵌套接口类属性信息展开的方式相同,为方便描述,下面的描述中,仅以数组和嵌套接口类中仅包含有基本数据类型的元素属性信息为例进行示意性说明。
步骤401:使用Visitor类访问接口类。
步骤402:采用visitField语句,获取API接口类中包括的一个属性名称及其对应的属性类型。
开发设备在确定API接口类中包括的属性信息时,采用Visitor类访问所述API接口类,并采用visitField语句获取所述API接口类中包括的属性名称及其对应的属性类型。
步骤403:判断当前获取的属性类型是否为嵌套接口类,若是,执行步骤404,否则,执行步骤407。
开发设备判断当前获得的一个属性名称对应的属性类型,是否为类类型,若是,则说明API接口类中存在类类型的属性信息,也就说当前获取的属性类型为嵌套接口类。
步骤404:使用Visitor类访问嵌套接口类。
步骤405:采用visitField语句,获取嵌套接口类中包括的元素属性名称及其对应的元素属性类型。
步骤406:将嵌套接口类中包括的各个元素属性名称及其对应的元素属性类型,作为该嵌套接口类中定义的各个元素属性信息。
具体的,开发设备确定嵌套接口类中定义的各个元素属性信息时,相当于针对嵌套接口类的属性信息建立了一个子属性信息集合,所述子属性信息集合中包括有所述嵌套接口类中定义的各个元素属性信息。
步骤407:判定当前获取的属性类型是否为数组类型,若是,执行步骤408,否则,执行步骤409。
步骤408:将数组类型的属性信息中定义的各个元素属性名称及其对应的元素属性类型,作为数组类型的属性信息中定义的元素属性信息。
具体的,开发设备确定数组类型的属性信息中定义的各个元素属性信息时,相当于针对数组类型的属性信息建立了一个子属性信息集合,所述子属性信息集合中包括有,数组类型的属性信息中定义的各个元素属性信息。
步骤409:将得到的一个属性名称及其对应的属性类型,作为API接口类中的一个属性信息。
开发设备确定获取的属性类型既不是类类型,也不是数组类型时,则可确定获取的属性类型为基本数据类型。其内部不定义有其他的元素属性信息,故可直接基于获得的属性名称及其对应的属性类型,生成一个属性信息。
步骤410:判定API接口类中的属性名称及其对应的属性类型是否全部获取完成,若是,执行步骤411,否则,返回执行步骤402。
步骤411:根据获得的内部定义有元素属性信息的各个属性信息,以及基本数据类型的属性信息,生成API接口类的属性信息集合。
例如,以包含二层嵌套的一个API接口类为例,API接口类X中包含有整型属性1,嵌套接口类X1和嵌套接口类X2。嵌套接口类X1中定义有布尔型属性2,和浮点型属性3和4;嵌套接口类X2中定义有整型属性5和布尔型属性6。那么在提取API接口类X中包含的属性信息,生成属性信息集合后,所述属性信息集合中包括的属性信息形如如下所示,{整型属性1、嵌套接口类X1{布尔型属性2、浮点型属性3、浮点型属性4}、嵌套接口类X2{整型属性5、布尔型属性6}}。
方式二、采用反射技术,遍历一个API接口类及其包括的嵌套接口类。
下面结合附图5,对开发设备采用反射技术,遍历一个API接口类及其包括的嵌套接口类,并在不展开API接口类中可能包括的嵌套接口类和数组的情况下,生成对应所述一个API接口类的属性信息集合的过程进行说明:
需要说明的是,反射创建类通常应用于接口类的运行阶段,本公开实施例中,可以利用虚拟机运行接口类,进而在运行接口类的过程中,反射创建接口类,进而遍历属性区域,获取属性区域内包括的属性名称和属性类型,最终建立属性信息集合。
步骤501:反射创建API接口类。
步骤502:遍历API接口类中的属性区域,读取所述属性区域内中的属性名称和属性类型,建立属性信息集合。
具体的,采用Field.getName语句获取属性名称,以及采用Field.getType语句获取属性类型,进而基于得到的属性名称和属性类型,建立属性信息集合。
例如,以包含二层嵌套的一个API接口类为例,API接口类X中包含有整型属性1,嵌套接口类X1和嵌套接口类X2。嵌套接口类X1中定义有布尔型属性2,和浮点型属性3和4;嵌套接口类X2中定义有整型属性5和布尔型属性6。那么在提取API接口类X中包含的属性信息,生成属性信息集合后,所述属性信息集合中包括的属性信息形如如下所示,{整型属性1、嵌套接口类X1、嵌套接口类X2}。
需要说明的是,本公开实施例中,采用字节码处理技术和反射处理技术,均能够实现方式一和方式二所涉及到的操作,方式一中使用字节码处理技术进行处理,方式二中使用反射处理技术进行处理,仅仅是示意性的说明,本公开对此不进行具体限定。
可选择的,本公开实施例中,在确定API接口类中包括的属性信息的过程中,可以根据预先对属性名称和属性类型标记的修饰关键字和映射注解,对无法从API返回数据中获得对应的字段值的属性信息,以及无法直接从API返回数据中获得对应字段值的属性信息进行处理,进而基于处理后的属性信息生成属性信息集合。
具体的,所述开发设备可以对属性信息执行的操作包括但不限于以下任一项或组合:
A1、筛选出所述各个API接口类中,标记有修饰关键字的属性名称及其对应的属性类型,并删除筛选出的属性名称及其对应的属性类型。
对于API接口类的类定义代码中,可能定义有包含修饰关键字的属性信息,诸如修饰关键字transient,这种属性信息通常不会从API返回数据中得到对应的字段值,故可以直接将该类属性信息从属性信息集合中删除。
A2、筛选出所述各个API接口类中,标记有映射注解的属性名称,并将筛选出的属性名称修改为所述映射注解中注解的指定属性名称。
对于API接口类的类定义代码中,可能定义有包含映射注解的属性名称,开发设备直接将该属性名称修改为映射注解中所注解的指定属性名称,所述映射注解用于将当前的属性名称,映射至API返回数据中的,字段名称不同的其他字段名称。
例如,API接口类的类定义代码中,对于属性名称为name1的属性信息,被映射注解为,映射至API返回数据中的字段名称为name2,即属性名称为name1的属性信息,对应获取API返回数据中字段名称为name2的字段值,则开发设备直接将属性名称为name1的属性信息中,属性名称修改为name2。
这样,对生成的属性信息集合中,无法从API返回数据得到对应的字段值的属性信息进行了处理,一定程度上简化了API接口类校验上的复杂度。
进而,所述开发设备确定对应一个API接口类的属性信息集合后,同理建立对应各个API接口类的各个属性信息集合。
这样,开发设备能够收集API接口类中包含的属性名称及其对应的属性类型,为后续对API接口类中的属性信息的校验提供基础。
步骤302:将各个属性信息集合上报至管理服务器后,获取所述管理服务器创建的匹配表,确定与各个API接口类的类信息对应的各个API返回数据。
开发设备确定对应各个API接口类的各个属性信息集合后,将获得的各个属性信息集合上报至管理服务器,并获的所述管理服务器创建的匹配表,其中,所述匹配表中至少记录有各个API接口类的类信息及其对应的API返回数据,所述类信息至少包括API接口类在源代码工程中的路径。
进而,所述开发设备根据所述匹配表中记录的信息,确定与所述各个API接口类的类信息对应的API返回数据,以实现后续根据各个API接口类对应的API返回数据,对API接口类中定义的属性信息的进行校验。
对于步骤302所限定的操作,当开发设备能够获取管理服务器创建的匹配表时,则可以根据匹配表中记录的API返回数据进行API接口类的校验操作。
本公开的一些实施例中,若所述开发设备无法获取管理服务器上报的匹配表,即所述管理服务器未创建有匹配表时,则所述开发设备无法获取用于进行API接口校验的API返回数据。故所述开发设备不再进行其他操作,待所述源代码工程编译完成后,基于完成编译后的源代码工程生成数据包,以使得安装所述数据包的终端设备在运行自动化测试脚本所限定的操作,请求API后,将获得的API返回数据及其对应的API接口类的类信息,主动上报至所述管理服务器,并使得所述管理服务器至少基于所述各个属性信息集合、所述API返回数据及其对应的API接口类的类信息创建相应的匹配表。所述匹配表中至少记录有各个API接口类的类信息及其对应的API返回数据。
也就是说,开发设备在对源代码工程进行初始编译的过程中,由于源代码工程未运行在终端设备上,管理服务器无法获取对应各个API接口类的API返回数据,因而无法建立匹配表。故初始编译过程中,确定各个API接口类对应的属性信息集合,并将各个属性信息集合上报至管理服务器后,由于无法获取匹配表,只能等待所述源代码工程编译完成后,生成将所述源代码工程安装于终端设备上的安装包,并在终端设备被触发请求API接口,获得API返回数据并上报至管理服务器后,使得管理服务器根据主动上报的API接口类的类信息以及对应的API返回数据,创建API匹配表。
需要说明的是,本公开实施例中,对于获知API接口类的类信息及其对应的API返回数据的方式不唯一。
一种方式是,使终端设备根据其运行的安装包确定对应的API接口类的类信息,进而在获得对应的API接口返回的API返回数据后,并根据安装包对应的源代码工程中的主动上报API返回数据和类型信息的实现代码,将获得的API返回数据作为与所述API接口类的类信息对应的API返回数据主动上报,本公开的一些实施例中,可以通过限定不同的实现代码,使得终端设备将API返回数据和类信息直接上报至开发设备,本公开的另一些实施例中,可以通过限定不同的实现代码,使得终端设备将API返回数据和类信息上报至管理服务器,使得开发设备根据管理服务器维护的匹配表,获得API返回数据和API接口类的类信息,这样,仅通过编写自动化测试脚本,整理API接口所对应的页面,设置代码访问相应的页面,即令终端设备访问API接口,获得API返回数据,且获取API返回数据的成本较低,实现简单。
另一种方式是,开发设备直接获取源代码工程中,与API接口类对应的代码,并将该API接口类转换成其他语言代码,使得转换后的API接口类在所述其他语言的编译环境中直接请求API接口,获取API接口返回的API返回数据,并直接确定API接口类的类信息及其对应的API返回数据,这样,获得API返回数据的实现成本相对较高,但相比于触发终端设备逐个打开页面去访问API接口的方式,获取API返回数据的速率和效率有了明显的提升。
步骤303:分别基于各个API接口类的属性信息集合中的属性信息,生成相应的数据获取语句,并根据各个数据获取语句的调用结果,确定对应的各个属性信息的校验结果。
需要说明的是,本公开的一些实施例中,当管理服务器维护有预处理名单时,虽然源代码工程中对某些属性信息进行了标注,但在生成属性信息集合时,可以暂时不对API接口类中无法从API返回数据得到对应字段值的属性信息进行处理,直接基于API接口类中定义的内容生成属性信息集合,待根据属性信息集合中的各个属性信息生成数据获取语句之前,获取到管理服务器创建的预处理名单时,根据所述预处理名单中限定的操作,对所述属性信息集合中的相关属性信息进行处理,得到处理后的各个API接口类的属性信息集合,处理的内容包括对存在映射注解的属性名称进行修改,并对于无法从API返回数据中得到对应字段值的属性信息进行删除,以及不校验预处理名单中记录的已经成功校验的API接口类,这样,使得对于同一版本的源代码工程的校验过程中,校验完成且未修改的API接口类,也就是属性定义无误的API接口类无需被再次校验。
进一步,开发设备将各个API接口类的属性信息集合发送至管理服务器后,根据从管理服务器获取的匹配表,确定与所述各个API接口类对应的各个API返回数据。进而分别基于各个API接口类的属性信息集合中的属性信息,生成相应的数据获取语句,其中,一个属性信息对应生成至少一个数据获取语句,再根据各个数据获取语句的调用结果,确定数据获取语句的执行是否抛出异常,进而确定对应的各个属性信息的校验结果,所述校验结果具体为,校验成功和校验出错。
需要说明的是,本公开的一些实施例中,开发设备在获取管理服务器创建的匹配表的同时,获取所述管理服务器创建的过滤属性名单,进而在对API接口类进行校验时,对于存在于所述预处理名单中的属性信息可以不进行校验。所述预处理名单中包括的属性信息可能是所述管理服务器确定的API接口类中定义的冗余属性信息、已校验的属性信息,或者被特定关键字修饰的属性信息。
进一步的,所述开发设备先调用数据获取语句,校验属性名称和属性类型是否均定义准确,若调用结果抛出异常,则生成同名数据获取语句,校验属性名称是否定义准确。
具体的,所述开发设备调用各个数据获取语句,获取所述各个数据获取语句的调用结果,再确定所述各个数据获取语句的调用结果是否为抛出异常,若是,获取返回结果异常的数据获取语句,并将其对应的属性信息判定为校验出错,否则,判定所述各个数据获取语句对应的各个属性信息校验成功。
在确定属性信息校验出错时,所述开发设备获取校验出错的各个属性信息中的属性名称,生成各个同名数据获取语句,所述同名数据获取语句用于获取API数据中,字段名为该属性名称的字段值,然后,接收各个同名数据获取语句的调用结果,若确定同名数据获取语句的调用结果为抛出异常时,则判定对应的属性名称定义错误,以及若确定所述同名数据获取语句的调用结果为未抛出异常时,则判定对应的属性名称定义成功,且所述属性名称对应的属性类型定义错误。
以下的说明中以对一个API接口类进行校验为例,对本公开实施例中,所述开发设备确定与所述一个API接口类对应的API返回数据后,对API接口类的校验过程进行说明。
对于一个API接口类来说,其对应的属性信息集合中包括的属性信息,可以是数组型属性信息、类类型属性信息,以及基本数据类型属性信息。下面结合附图6a-6c,以应用于Android安卓场景下,采用字节码技术为例,通过Visitor类访问API接口类,并使用visitField语句获取所述API接口类中定义的属性信息后,针对各个属性信息生成相应的数据获取语句的过程进行说明。
步骤601:通过Visitor类访问API接口类,并使用visitField语句获取所述API接口类中包括的各个属性信息。
本公开实施例中,采用Visitor类访问API接口类,并使用visitField语句获取API接口类中包括的类类型的属性信息,当前获取的属性信息包括有基本数据类型的属性信息、类类型的属性信息,以及数组类型的属性信息。
当前步骤601的操作中,对于进一步定义有元素属性信息的类类型的属性信息和数组类型的属性信息,不进行展开,也就说暂不获取类类型的属性信息和数组类型的属性信息内部定义的元素属性信息。
步骤602:获取一个属性信息。
步骤603:判定获取的属性信息是否为类类型,若是,执行步骤604,否则执行步骤605。
具体的,开发设备确定获取的属性信息的属性类型为Class类时,则可判定所述属性信息为类类型,也就是说当前获得的属性信息对应一个API接口类中的嵌套接口类。
步骤604:校验类类型的属性信息及所述属性信息中包括的各个元素属性信息。
具体的,开发设备基于所述属性信息中的属性名称生成该属性名称的对象获取语句,并在调用所述对象获取语句未抛出异常时,获取类类型的属性信息中定义的元素属性信息;再根据各个元素属性信息,生成对应所述各个元素属性信息的各个数据获取语句。
下面结合图6b,对类类型的属性信息及所述属性信息中包括的各个元素属性信息的校验过程进行说明。
需要说明的是,本公开实施例中,API接口类中各属性信息可以形如:API接口类{嵌套接口类属性信息1{元素属性信息1.1{…}、元素属性信息1.2…};数组类型属性信息2{元素属性信息2.1,…};基本数据类型属性信息3…}所示意的,而且元素属性信息中可能还嵌套有类类型的信息,和/或数组类型的属性信息,图6a所示意的校验流程中,为示意性的说明属性信息的校验过程,仅以属性信息中包括的元素属性信息均为基本数据类型为例进行说明,对于可能存在的类类型的元素属性信息,以及数组类型的属性信息,可以同理采用图6b所示意的类类型的属性信息的校验过程,以及图6c所示意的数组类型的属性信息的校验过程实现校验,本公开在此不再赘述。
S604.1:根据属性信息中的属性名称,生成所述属性名称的对象获取语句。
具体的,开发设备根据一个嵌套接口类中的属性名称,生成获取API返回数据中,与所述属性名称对应的对象的对象获取语句,以实现判定API返回数据中,是否存在有所述属性名称的对象。
例如,以API返回数据为JSON数据为例,生成的对象获取语句具体为:JSONObject.getJSONObject(属性名称)。
S604.2:判定对象获取语句的调用是否抛出异常,若是,执行步骤604.3,否则,返回执行步骤604.4。
S604.3:确定属性信息的属性名称定义错误。
具体的,开发设备在根据属性信息中的属性名称,生成对象调用语句后,确定调用结果为抛出异常时,则确定API返回数据中,不存在与该属性名称匹配的对象。也就是说当前对于所述嵌套接口类的属性名称定义错误。
S604.4:通过Visitor类访问嵌套接口类,并使用visitField语句获取所述嵌套接口类中包括的各个属性信息。
需要说明的是,S604.4限定的操作中,通过Visitor类访问嵌套接口类,并使用visitField语句,获得嵌套接口类中定义的各个元素属性信息。
S604.5:获取一个元素属性信息。
S604.6:根据元素属性信息的属性名称和属性类型,生成相应的元素数据获取语句。
具体的根据基本数据类型的元素属性信息,生成相应的元素数据获取语句的形式,与步骤607中所示意的完全相同,本公开在此不再赘述。
S604.7:判定调用元素数据获取语句是否抛出异常,若是,执行S604.8,否则,执行S604.9。
S604.8:判定元素属性信息校验出错,并判定定义该元素属性信息的接口类校验出错。
具体的,本公开提出的校验机制中,对于元素属性信息校验出错的接口类,依旧会对接口类中定义的全部元素属性信息进行校验,但可以直接将该接口类的校验结果判定为校验出错。
S604.9:判定元素属性信息校验成功。
具体的,本公开提出的校验机制中,对于元素属性信息校验出错的接口类,继续对接口类中定义的其他元素属性信息进行校验。
S604.10:判定全部元素属性信息是否均获取完毕,若是,执行S604.11,否则,执行S604.5。
S604.11:判定定义元素属性信息的接口类的校验结果。
具体的,当校验接口类中定义的全部元素属性信息均校验成功时,则可判定定义元素属性信息的接口类校验成功。同时,上报该接口类的校验结果至管理服务器。若判定当前接口类中存在校验出错的元素属性信息时,则确定校验出错的元素属性信息,并判定定义元素属性信息的接口类校验出错,并上报该接口类的校验结果。
步骤605:判定获取的属性信息是否为数组类型,若是,执行步骤606,否则,执行步骤607。
具体的,开发设备确定获取的属性信息的属性类型为array数组时,则可判定所述属性信息为数组类型,也就是说当前获得的属性信息对应一个API接口类中的一个数组。
步骤606:校验数组类型的属性信息,以及所述属性信息中包括的各个元素属性信息。
具体的,开发设备基于属性信息中的属性名称生成该属性名称的数组获取语句,并在调用所述数组获取语句未抛出异常时,获取数组类型的属性信息中定义的元素属性信息;再根据各个元素属性信息,生成对应所述各个元素属性信息的各个数据获取语句。
下面结合图6c,对数组类型的属性信息及所述属性信息中包括的各个元素属性信息的校验过程进行说明。
需要说明的是,本公开实施例中,数组类型的属性信息中定义的元素属性信息中可能还嵌套有类类型的信息,和/或数组类型的属性信息,图6c所示意的校验流程中,为示意性的说明属性信息的校验过程,仅以数组类型的属性信息中包括的元素属性信息均为基本数据类型为例进行说明,对于可能存在的类类型的元素属性信息,以及数组类型的属性信息,可以同理返回执行图6b所示意的类类型的属性信息的校验过程,以及执行图6c所示意的数组类型的属性信息的校验过程实现校验,本公开在此不再赘述。
S606.1:基于属性信息中的属性名称,生成该属性名称的数组获取语句。
具体的,开发设备根据数组类型的属性信息中的属性名称,生成获取API返回数据中,与所述属性名称对应的数组的数组获取语句,以实现判定API返回数据中,是否存在有所述属性名称的数组。
例如,以API返回数据为JSON数据为例,生成的数组获取语句具体为:JSONObject.getJSONArray(属性名称)。
S606.2:判定数组获取语句的调用是否抛出异常,若是,执行S606.3,否则,执行S606.4。
S606.3:判定数组类型的属性信息的属性名称定义错误。
S606.4:判定数组获取语句的调用结果是否为空,若是,执行S606.5,否则,执行S606.6。
S606.5:判定数组类型的属性信息校验成功。
具体的,当确定数组获取语句的调用结果为空时,则说明数组类型的属性信息中未定义有其他属性信息,则可以直接判定数组类型的属性信息校验成功。
S606.6:获取数组类型的属性信息中包括的一个元素属性信息。
S606.7:根据元素属性信息的属性名称和属性类型,生成相应的元素数据获取语句。
具体的根据基本数据类型的元素属性信息,生成相应的元素数据获取语句的形式,与步骤607中所示意的完全相同,本公开在此不再赘述。
S606.8:判定调用元素数据获取语句是否抛出异常,若是,执行S606.9,否则,执行S606.10。
S606.9:判定元素属性信息校验出错,并判定定义该元素属性信息的数组校验出错。
具体的,本公开提出的校验机制中,对于元素属性信息校验出错的数组,依旧会对数组中定义的全部元素属性信息进行校验,但可以直接将该数组的校验结果判定为校验出错。
S606.10:判定元素属性信息校验成功。
具体的,本公开提出的校验机制中,对于元素属性信息校验成功的数组,会继续对数组中定义的其他元素属性信息进行校验。
S606.11:判定全部元素属性信息是否均获取完毕,若是,执行S606.12,否则,执行S606.6。
S606.12:判定定义元素属性信息的数组校验成功。
具体的,当校验数组中定义的全部元素属性信息均校验成功时,则可判定定义元素属性信息的数组校验成功。同时,发送该数组的校验结果至管理服务器处进行统一记录。若判定当前数组中存在校验出错的元素属性信息时,则确定校验出错的元素属性信息,并判定定义元素属性信息的数组校验出错,并上报该数组的校验结果。
步骤607:根据属性信息的属性名称和属性类型,生成相应的数据获取语句。
具体的,在确定当前得到的属性信息既非类类型,又非数组类型时,在确定API接口类中包括的属性信息的类型为类类型、数组类型,以及基本数据类型的基础上,可以确定当前获取的属性信息为基本数据类型。进而直接根据属性信息的属性名称和属性类型,生成相应的数据获取语句。
步骤608:判定所述数据获取语句的调用是否抛出异常,若是,执行步骤609所限定的操作,否则,执行步骤610所限定的操作。
具体的,开发设备确定当前获得属性信息不是数组类型和类类型时,则可确定当前获得的属性信息为基本数据类型,其中,所述基本数据类型可以是byte字节型、short短整型、Integer整型、float浮点型、String字符串类型、char字符类型、不可变的、任意精度的带符号的十进制数BigDecimal、double双精度类型,long长整型。
下面结合图7a-7b,以API返回的数据为JSON数据,且源代码工程为APP代码工程为例,对属性类型为基本数据类型的,属性名称为X的属性信息进行校验的过程进行说明。
参阅图7a所示,当X属性信息的属性类型为byte型、short型、Integer型、float型、double型,以及long型之一时,执行以下操作:
步骤7a1:根据X属性信息的属性名称和属性类型生成数据获取语句。
具体的,开发设备针对不同类型的属性信息调用不同的数据获取语句,其中,当X属性信息的属性类型为byte型、short型,以及Integer型时,对应调用形如JSONObject.getInt(X)的数据获取语句;当X属性信息的属性类型为float型或double型时,调用形如JSONObject.getDouble(X)的数据获取语句;当X属性信息的属性类型为long型时,调用形如JSONObject.getLong(X)的数据获取语句。
步骤7a2:判定所述数据获取语句的调用是否抛出异常,若是,执行步骤7a3所限定的操作,否则,执行步骤7a7所限定的操作。
具体的,开发设备根据数据获取语句的调用是否抛出异常,确定X属性信息的校验结果,同时,确定当前X属性信息是否定义出错。
步骤7a3:获取校验出错的X属性信息的属性名称,将JSONObject.optString(X)作为同名数据获取语句。
步骤7a4:判定所述同名数据获取语句的调用是否抛出异常,若是,执行步骤7a5所限定的操作,否则,执行步骤7a6所限定的操作。
开发设备确定根据X属性信息的属性类型和属性名称,所确定的数据获取语句的调用结果为抛出异常时,则确定JSON数据中不存在与所述属性信息X对应的字段值,进而所述开发设备通过生成同名数据获取语句,进一步判定所述属性信息X具体是属性类型定义错误,还是属性名称定义错误。
需要说明的是,本公开实施例中,对于属性名称定义错误还是属性类型定义错误的确定过程中,配置的判定机制为:当确定属性名称定义错误时,则不再进一步判定属性类型是否定义出错。因为在属性名称定义错误的情况下,则必然需要对属性信息X进行纠正,故无需判定属性类型是否定义正确。
步骤7a5:判定X属性信息的属性名称定义错误。
步骤7a6:判定X属性信息的属性名称校验成功,且所述属性信息X的属性类型校验出错。
具体的,开发设备调用JSONObject.optString(X)语句,在不考虑属性类型的情况下,判定JSON中是否字段名称为X的字段值,若调用未抛出异常则说明JSON中存在与X对应的字段值,此时可以确定X属性信息校验出错的原因不是属性名称定义错误,而是属性类型定义错误。
步骤7a7:判定X属性信息校验成功。
具体的,开发设备确定调用相应的数据获取语句未抛出异常时,则说明JSON中存在字段名称为X,字段类型为所述X属性信息的属性类型的字段值,即说明X属性信息校验成功。
参阅图7b所示,当X属性信息的属性类型为String型、char型,或BigDecimal之一时,执行以下操作:
步骤7b1:生成形如JSONObject.getString(X)的数据获取语句。
步骤7b2:判定所述数据获取语句的调用是否抛出异常,若是,执行步骤7b3所限定的操作,否则,执行步骤7b4所限定的操作。
具体的,开发设备根据数据获取语句的调用是否抛出异常,确定X属性信息的校验结果,同时,确定当前X属性信息是否定义出错。
步骤7b3:判定X属性信息的属性名称定义错误。
具体的,由于String类型是通用类型,对于任何属性名称均可以定义为String类型进而获得解析,因此在调用JSONObject.getString(X)作为数据获取语句时,不存在属性类型定义错误。
步骤7b4:判定X属性信息校验成功。
具体的,开发设备确定调用相应的数据获取语句未抛出异常时,则说明JSON中存在字段名称为X,字段类型为所述X属性信息的属性类型的字段值,即说明X属性信息校验成功。
步骤609:判定属性信息校验出错。
本公开实施例中,在分别针对各类型的属性信息进行判定的情况下,根据基本数据类型生成的数据获取语句的调用结果,确定该基本数据类型的属性信息的校验结果。判定数据获取语句的调用抛出异常时,则可确定对应的属性信息校验出错。同时,将该属性信息的校验结果发送至管理服务器进行记录。
步骤610:判定属性信息校验成功。
本公开实施例中,在分别针对各类型的属性信息进行判定的情况下,根据基本数据类型生成的数据获取语句的调用结果,确定该基本数据类型的属性信息的校验结果。判定数据获取语句的调用未抛出异常时,则可确定对应的属性信息校验成功。同时,将该属性信息的校验结果发送至管理服务器,使得所述管理服务器记录所述属性信息的校验状态。
步骤611:判定API接口类的属性信息集合中,全部属性信息是否均获取完毕,若是,执行步骤612,否则,返回执行步骤602。
步骤612:完成API接口类的校验。
同理,所述开发设备针对源代码工程中的各个API接口类,分别执行图6a-6c和图7a-7b所示意的操作,实现对各个API接口类的校验。
需要说明的是,本公开实施例中,开发设备在对API接口类进行校验的过程中,可以将得到的属性信息的校验结果,发送至所述管理服务器,使得所述管理服务器记录各个属性信息的校验状态。便于后续开发人员和测试人员追溯校验结果。
与此同时,对于校验出错的各个属性信息,所述开发设备可以针对校验出错的各个属性信息,分别执行以下操作:获取对应的API返回数据中包括的各个字段名,并依次计算一个属性信息中的属性名称与所述各个字段名之间连续相同的字母数目,筛选出字母数目最高的字段名及其对应的字段类型,生成包含筛选出的所述字段名和字段类型的一条修改建议,并将所述一条修改建议以及所述一个属性信息输出至编译日志和控制台界面。也就是说,对于校验出错的属性信息,获取其对应的属性名称和属性类型后,在忽略属性名称的大小写的情况下,与用于判定该属性信息时所使用的API返回数据中的各个字段名称进行匹配,确定连续相同字母序列最长的字段名及其对应的字段类型,进而基于确定的字段名及其对应的字段类型生成相应的修改建议,呈现在控制台编译界面上或者编译日志上,以供开发人员进行修改参考。
这样,所述开发设备相当于配置了自动纠错机制,当检测到API接口类校验出错时,在编译日志和控制台提示开发人员存在定义错误的属性信息,以及给出的修改建议,使得开发人员能够及时发现源代码工程中的缺陷,且非常贴合开发人员的使用习惯,能够协助开发人员进行属性信息的修正,有利于此API接口类校验方案的大范围的推广。
同时,所述开发设备对API接口类中存在的属性信息进行校验并上报校验结果至管理服务器是,上报的校验出错的属性信息,可能是定义错误的属性信息,或者是API接口类中定义的冗余属性信息,而无论是冗余属性信息,还是错误定义的属性信息,从代码规范的角度而言,理应删除冗余属性以及纠正错误属性。故本公开提出的方案可以进一步用于对定义冗余属性的不良编程习惯的提醒,避免API接口类中存在与API返回数据无关的冗余属性。
进一步的,所述开发设备响应于开发人员根据编译日志及控制台界面上显示的各个修改建议,对校验出错的属性信息的修改操作,校正所述源代码工程中对应的API接口类,并为该API接口类添加修改时间戳,使得后续针对修改后的API接口类重新进行属性信息的校验。
这样,所述开发设备能够以报错显示的方式,向开发人员呈现可能存在定义错误的属性信息,进而响应于开发人员的判别和修正操作,对定义错误的属性信息进行修正。
下面结合附图8,从管理服务器侧,对API接口类的校验过程进行说明:
步骤801:接收开发设备上报的各个API接口类的属性信息集合,将创建的匹配表发送至所述开发设备,所述匹配表用于记录各个API返回数据与其对应的API接口类的类信息之间的对应关系。
管理服务器初次接收到开发设备上报的各个API接口类的属性信息集合后,至少基于接收到的各个API返回数据,以及所述各个API返回数据各自对应的API接口类的类信息,建立API返回数据与类信息的匹配表,并记录各个API接口类的属性信息集合中,各个属性信息的校验状态,所述匹配表至少记录API返回数据与API接口类的类信息。需要说明的是,所述各个API返回数据及其对应的API接口类的类信息,一种方式下由运行源代码工程的终端设备,被触发请求各个API并得到各个API返回的API返回数据后主动上报,另一种方式下,由开发设备直接在编译环境中请求API,获得API返回的API返回数据。
本公开实施例中,所述管理服务器得到的属性信息集合、API返回数据,以及API接口类的类信息后,可以根据所述各个API返回数据、对应的各个API接口类的类信息,以及所述各个API接口类的属性信息集合,建立API返回数据与API接口类的匹配表数据库,所述匹配表数据库中至少记录有各个API接口类的修改时间戳,以及各个属性信息集合中的属性信息的校验状态。还可以记录诸如,各个API接口类中包括的属性信息,各个API接口类对应的API返回数据等信息。
进一步的,所述管理服务器可以根据实际的配置需要,基于匹配表数据库中记录的内容,创建匹配表,所述管理服务器呈现的匹配表中至少包括有API接口类的类信息,以及与API接口类对应的API返回数据。
进而,当所述管理服务器再次接收到开发设备上报的对应各个接口类的属性信息集合时,首先基于获得的各个属性信息集合,对匹配表数据库进行更新,更新内容包括各个API接口类的修改时间戳以及各个API接口类的属性信息集合,以保证匹配表数据库中记录的属性信息集合始终是最新的。
本公开一些实施例中,所述管理服务器接收开发设备上报的各个API接口类的属性信息集合,并筛选出关联有修改时间戳的API接口类,并将匹配表数据库中记录的,与筛选出的API接口类对应的各个属性信息的校验状态初始化为未校验状态。这样,能够记录经过修正操作的各个API接口类,并将API接口类的对应的各个属性信息状态设置为未校验,以表示需要对修改后的API接口类进行重新校验,保证校验的有效性。
需要说明的是,本公开实施例中,管理服务器获取的属性信息集合发生改变时,通常无需重新获取API返回数据,这是由于API返回数据中通常相比于属性信息集合中所限定的属性信息,包括有更多的信息,通常在未对API接口类进行功能性的调整的情况下,无需对API返回数据进行更新,也就是说,对于API接口类的校验来说,创建匹配表时从终端设备处获得的API返回数据,足以满足API接口类的校验操作。
本公开的一些实施例中,所述管理服务器可以维护一个预处理名单,获取源代码工程中对应各个API接口类中定义的属性名称及其对应的属性类型,并将标注有修饰关键字的属性名称及其对应的属性类型,与删除标签进行关联;再将所述源代码工程中标记有映射注解的属性名称,与修改标签关联;并将确定开发设备校验成功的API接口类的类信息,与校验跳过标签关联,并基于关联有不同标签对应的属性信息和类信息建立预处理名单,其中,不同标签表征进行校验时执行的不同操作。
具体的,对于源代码工程中存在有非序列化编程语言标记,诸如Java语言中的transient修饰关键字的属性信息,此类属性信息已约定该属性不进行数据解析,则无法从API返回数据中得到对应的字段值,故可以从属性信息集合中删除,以及将确定已被校验且准确无误的API接口类,写入预处理名单,使得该API接口类能够直接跳过校验过程,避免开发设备在进行API接口类的校验时,重复性的对无误的API接口类进行校验。同时,所述管理服务器还可以根据实际的配置需要,将存在属性映射的属性信息写入预处理名单,以记录API接口类中的属性信息的映射情况,这样能够有效协助开发设备还原真实的属性名称。
步骤802:接收所述开发设备基于匹配表,对各个API接口类的属性信息集合中的属性信息进行校验时,上报的各个属性信息的校验结果,并基于所述校验结果,记录对应的各个属性信息的校验状态。
管理服务器接收开发设备基于匹配表,对各个API接口类中定义的属性信息进行校验时,上报的各个属性信息的校验结果,并记录对应各个API接口类的属性信息的校验状态,其中,所述校验状态可以是校验成功状态、未校验状态,校验出错但未纠错状态,所述校验出错但未纠错状态可能由属性信息中的属性名称定义错误导致,和/或,由属性信息中的属性类型定义错误导致。
本公开的一些实施方式中,所述管理服务器根据接收到的各个属性信息的校验状态,更新匹配表数据库中记录的各个属性信息的校验状态。
具体的,所述管理服务器确定所述开发设备上报的属性信息的校验结果为校验出错时,记录该属性信息的校验状态为校验出错但未纠错;以及确定所述开发设备上报的属性信息的校验结果为校验成功,且确定先前记录的校验状态为未校验状态时,记录并更新该属性信息的校验状态为校验成功;并在确定所述开发设备上报的属性信息的校验结果为校验成功,以及确定先前记录的校验状态为校验出错但未纠错时,记录并更新该属性信息的校验状态为校验成功,并生成一条关联的纠错记录。
具体的,所述管理服务器可以维护有如图9所示意的纠错记录数据库,对于所述纠错记录数据库中的每一条纠错记录来说,所述纠错记录中可以包括API接口类的类信息,纠错前属性信息中的属性名称和属性类型,纠错后的属性信息中的属性名称和属性类型,以及与所述API接口类对应的API返回数据。
这样,所述管理服务器可以作为关键数据中心,记录各个API接口类中的属性信息的校验状态,便于开发人员和测试人员进行统一的回溯,能够持续监督开发人员的纠错情况,以直观的记录的方式,协助开发人员避免同类问题的发生。
下面结合附图10,对本公开实施例中,终端设备侧在进行API接口类的校验时,执行的操作进行说明。
步骤1001:安装基于编译后的源代码工程生成的安装包,并响应于请求各个API的触发操作,获取所述各个API返回的各个API返回数据,所述源代码工程中包含有被注解收集的各个API接口类。
终端设备安装基于编译后的源代码工程生成的安装包后,响应于请求各个API的触发操作,其中,所述触发操作具体为,所述终端设备执行自动化测试脚本,并响应于所述自动化测试脚本在运行过程中的触发操作,请求各个API并接收所述各个API返回的API返回数据。
这样,借助于自动化测试脚本的触发操作,整个编译、安装和测试过程均不需要测试人员的介入,可全自动化运行。
步骤1002:确定各个API返回数据对应的各个API接口类的类信息,并将所述各个API返回数据及其对应的各个类信息主动上报至管理服务器。
终端设备请求各个API,并获得所述各个API返回的API返回数据,所述终端设备根据当前安装的安装包,即可确定API返回数据对应的API接口类的类信息,所述类信息至少包括API接口类在源代码工程中的路径。其中,所述源代码工程中包括被注解的各个API接口类。
这样,基于源代码工程中添加的主动上报API返回数据及其对应的API接口类的类信息的实现代码,所述终端设备能够实现对API返回数据及其对应的API接口类的类信息的主动上报,为API接口类的校验操作提供基础。
下面结合附图11,对本公开实施例的一种实现方式下,对开发设备、管理服务器,以及终端设备三方交互的场景下,实现API接口类校验的过程进行示意性说明。
S1101:开发设备基于编译完成的源代码工程生成的安装包,并将安装包发送至终端设备,所述源代码工程中包括有主动上报API返回数据和API接口类的类信息的实现代码。
S1102:终端设备主动向管理服务器上报各个API接口返回数据及其对应的API接口类的类信息。
本公开的一种实现方式中,终端设备通过执行自动化测试脚本,被触发调用各个API,具体表现为,终端设备访问不同的页面,以实现对不同API接口的调用,进而终端设备在获得各个API返回的API返回数据后,将各个API返回数据协同API接口类的列信息,一同上报至管理服务器。
S1103:开发设备展开API接口类,建立API接口类的属性信息集合。
开发设备可以采用字节码处理技术,或是,反射技术,确定API接口类中定义的属性信息,进而对应建立API属性信息集合。
S1104:开发设备将各个API接口类的属性信息集合发送至管理服务器。
S1105:管理服务器根据获得的各个API返回数据及其对应的接口类,创建匹配表。
S1106:管理服务器将表征API接口类的类信息和API返回数据的对应关系的匹配表,发送至开发设备。
需要说明的是,在匹配表的内容不包含属性信息集合中的内容时,本公开S1104和S1106涉及到的操作的顺序不固定,开发设备可以先接受管理服务器发送的匹配表,或者,开发设备可以先将属性信息集合发送至管理服务器。
S1107:开发设备根据匹配表中的API返回数据对属性信息集合中的各个属性信息进行校验,得到各个属性信息的校验结果。
开发设备遍历属性信息集合中的各个属性信息,分别校验对应的API返回数据中是否存在匹配的字段值,得到各个属性信息的校验结果。
S1108:开发设备向管理服务器上报各个API接口类中的属性信息的校验结果。
开发设备将得到的各个属性信息的校验结果上报至管理服务器,使得管理服务器记录各个属性信息的校验状态。
基于同一发明构思,参阅图12所示,本公开实施例中,提出一种API接口类的校验装置,包括:
收集单元1201,收集所述各个API接口类,并根据所述各个API接口类中各自定义的属性信息,建立对应所述各个API接口类的各个属性信息集合,所述属性信息包括属性名称及其对应的属性类型;
获取单元1202,将所述各个属性信息集合上报至管理服务器后,获取所述管理服务器创建的匹配表,确定与各个API接口类的类信息对应的各个API返回数据,其中,所述匹配表中至少记录有各个类信息及其对应的API返回数据;
校验单元1203,分别基于所述各个API接口类的属性信息集合中的属性信息,生成相应的数据获取语句,并根据数据获取语句的调用结果,确定对应的属性信息的校验结果,其中,一个属性信息对应生成至少一个数据获取语句,数据获取语句用于获取API返回数据中与对应的属性信息匹配的字段值。
可选的,所述将所述各个属性信息集合上报至管理服务器之后,确定所述管理服务器未创建匹配表时,进一步包括生成单元,所述生成单元1204用于:
待所述源代码工程编译完成后,基于完成编译后的源代码工程生成数据包,以使得安装所述数据包的终端设备在请求API后,将API返回数据及其对应的API接口类的类信息主动上报至所述管理服务器,并使得所述管理服务器至少基于所述API返回数据及其对应的API接口类的类信息创建相应的匹配表。
可选的,所述根据所述各个API接口类中各自定义的属性信息,建立对应所述各个API接口类的各个属性信息集合之前,所述收集单元1201进一步用于:
遍历所述各个API接口类,提取所述各个API接口类中各自定义的属性名称,以及与所述属性名称对应的属性类型,并将对应得到的各个属性名称及其对应的属性类型,作为所述各个API接口类中各自包含的属性信息。
可选的,所述遍历所述各个API接口类之后,所述将对应得到的各个属性名称及其对应的属性类型,作为所述各个接口类中各自包含的属性信息之前,所述收集单元1201进一步用于:
筛选出所述各个API接口类中,标记有修饰关键字的属性名称及其对应的属性类型,并删除筛选出的属性名称及其对应的属性类型;和/或,
筛选出所述各个API接口类中,标记有映射注解的属性名称,并将筛选出的属性名称修改为所述映射注解中注解的指定属性名称。
可选的,所述确定与各个API接口类的类信息对应的各个API返回数据之后,所述分别基于所述各个API接口类的属性信息集合中的属性信息,生成相应的数据获取语句之前,所述校验单元1203进一步用于:
获取到管理服务器创建的预处理名单时,基于所述预处理名单记录的各个属性信息的处理方式,对所述属性信息集合中的相关属性信息进行处理。
可选的,所述API接口类的属性信息集合中,包含的属性类型为以下任意一项或组合:
数组类型;
类类型;
基本数据类型。
可选的,属性信息的属性类型为数组类型,所述生成相应的数据获取语句时,所述校验单元1203用于:
基于属性信息中的属性名称生成该属性名称的数组获取语句,并在调用所述数组获取语句未抛出异常时,获取数组类型的属性信息中定义的元素属性信息;
根据各个元素属性信息,生成对应所述各个元素属性信息的各个元素数据获取语句。
可选的,属性信息的属性类型为类类型,所述生成相应的数据获取语句时,所述校验单元1203用于:
基于所述属性信息中的属性名称生成该属性名称的对象获取语句,并在调用所述对象获取语句未抛出异常时,获取类类型的属性信息中定义的元素属性信息;
根据各个元素属性信息,生成对应所述各个元素属性信息的各个数据获取语句。
可选的,所述根据数据获取语句的调用结果,确定对应的属性信息的校验结果时,所述校验单元1203用于:
调用各个数据获取语句,获取所述各个数据获取语句的调用结果;
确定所述各个数据获取语句的调用结果是否为抛出异常,若是,获取返回结果异常的数据获取语句,并将其对应的属性信息判定为校验出错,否则,判定所述各个数据获取语句对应的各个属性信息校验成功。
可选的,所述确定对应的属性信息的校验结果之后,所述校验单元1203进一步用于:
将得到的属性信息的校验结果,发送至所述管理服务器,使得所述管理服务器记录各个属性信息的校验状态。
可选的,所述获取返回结果异常的数据获取语句,并将其对应的属性信息判定为校验出错之后,所述校验单元1203进一步用于:
获取校验出错的各个属性信息中的属性名称,生成各个同名数据获取语句,所述同名数据获取语句用于获取API数据中,字段名为该属性名称的字段值;
接收各个同名数据获取语句的调用结果,若确定同名数据获取语句的调用结果为抛出异常时,则判定对应的属性名称定义错误,以及若确定所述同名数据获取语句的调用结果为未抛出异常时,则判定对应的属性名称定义成功,且所述属性名称对应的属性类型定义错误。
可选的,所述将其对应的属性信息判定为校验出错之后,所述校验单元1203进一步用于:
针对校验出错的各个属性信息,分别执行以下操作:
获取对应的API返回数据中包括的各个字段名,并依次计算一个属性信息中的属性名称与所述各个字段名之间连续相同的字母数目;
筛选出字母数目最高的字段名及其对应的字段类型,生成包含筛选出的所述字段名和字段类型的一条修改建议,并将所述一条修改建议以及所述一个属性信息输出至编译日志和控制台界面。
可选的,所述将所述一条修改建议以及校验出错的所述一个属性信息输出至编译日志和控制台界面之后,所述校验单元1203进一步用于:
响应于开发人员根据编译日志及控制台界面上显示的各个修改建议,对校验出错的属性信息的修改操作,校正所述源代码工程中对应的API接口类,并为该API接口类添加修改时间戳。
基于同一发明构思,参阅图13所示,本公开实施例中,提出一种API接口类的校验装置,包括:
创建单元1301,接收开发设备上报的各个API接口类的属性信息集合,将创建的匹配表发送至所述开发设备,所述匹配表至少记录各个API返回数据与其对应的API接口类的类信息,其中,所述各个API返回数据及其对应的API接口类的类信息,由运行源代码工程的终端设备获得API返回的API返回数据后主动上报;
接收单元1302,接收所述开发设备基于所述匹配表,对各个API接口类的属性信息集合中的属性信息进行校验时,上报的各个属性信息的校验结果,并基于所述校验结果,记录对应的各个属性信息的校验状态。
可选的,所述将创建的匹配表发送至所述开发设备之前,所述创建单元1301进一步用于:
至少基于接收到的各个API返回数据,以及所述各个API返回数据各自对应的API接口类的类信息,建立API返回数据与类信息的匹配表,并记录各个API接口类的属性信息集合中,各个属性信息的校验状态,所述匹配表用于记录API返回数据与API接口类的类信息之间的对应关系。
可选的,所述创建单元1301进一步用于:
根据所述各个API返回数据、对应的各个API接口类的类信息,以及所述各个API接口类的属性信息集合,建立API返回数据与API接口类的匹配表数据库,所述匹配表数据库中至少记录有各个API接口类的修改时间戳,以及各个属性信息集合中的属性信息的校验状态。
可选的,所述接收单元1302进一步用于:
接收开发设备上报的各个API接口类的属性信息集合,并筛选出关联有修改时间戳的API接口类,并将匹配表数据库中记录的,与筛选出的API接口类对应的各个属性信息的校验状态初始化为未校验状态。
可选的,基于所述校验结果,记录对应的各个属性信息的校验状态时,所述接收单元1302用于:
确定所述开发设备上报的属性信息的校验结果为校验出错时,记录该属性信息的校验状态为校验出错但未纠错;或者,
确定所述开发设备上报的属性信息的校验结果为校验成功,以及确定先前记录的校验状态为未校验状态时,记录并更新该属性信息的校验状态为校验成功;或者,
确定所述开发设备上报的属性信息的校验结果为校验成功,以及确定先前记录的校验状态为校验出错但未纠错时,记录并更新该属性信息的校验状态为校验成功,并生成一条关联的纠错记录。
可选的,所述创建单元1301进一步用于:
获取源代码工程中对应各个API接口类中定义的属性名称及其对应的属性类型,并将标注有修饰关键字的属性名称及其对应的属性类型,与删除标签进行关联;
将所述源代码工程中标记有映射注解的属性名称,与修改标签关联;
将确定开发设备校验成功的API接口类的类信息,与校验跳过标签关联,并基于关联有不同标签对应的属性信息和类信息建立预处理名单,其中,不同标签表征进行校验时执行的不同操作。
基于同一发明构思,参阅图14所示,本公开实施例中,提出一种API接口类的校验装置,包括:
获取单元1401,安装基于编译后的源代码工程生成的安装包,并响应于请求各个API的触发操作,获取所述各个API返回的各个API返回数据,所述源代码工程中包含有被注解收集的各个接口类;
上报单元1402,确定所述各个API返回数据对应的各个API接口类的类信息,并将所述各个API返回数据及其对应的各个类信息主动上报至管理服务器。
可选的,所述响应于请求各个API的触发操作时,所述获取单元1401用于:
执行自动化测试脚本,并响应于所述自动化测试脚本在运行过程中的触发操作,请求各个API并接收所述各个API返回的API返回数据。
基于同一发明构思,参阅图15所示,本公开实施例提出一种电子设备,装置1500,装置1500可以为服务器或具有处理功能的终端设备。参照图15,装置1500包括处理组件1522,其进一步包括一个或多个处理器,以及由存储器1532所代表的存储器资源,用于存储可由处理组件1522的执行的指令,例如应用程序。存储器1532中存储的应用程序可以包括一个或一个以上的每一个对应于一组指令的模块。此外,处理组件1522被配置为执行指令,以执行上述开发设备侧的方法。
装置1500还可以包括一个电源组件1526被配置为执行装置1500的电源管理,一个有线或无线网络接口1550被配置为将装置1500连接到网络,和一个输入输出(I/O)接口1558。装置1500可以操作基于存储在存储器1532的操作系统。
基于同一发明构思,本公开实施例中基于API接口类校验的实施例中提供一种计算机可读存储介质,当所述存储介质中的指令由电子设备执行时,使得所述电子设备能够执行上述开发设备侧确定API接口类校验的方法。
基于同一发明构思,参阅图16所示,本公开实施例提出一种电子设备,包括存储器1601和处理器1602,其中,所述处理器用于读取所述存储器中存储的计算机指令,并执行上述管理服务器侧的方法。
基于同一发明构思,本公开实施例中基于API接口类校验的实施例中提供一种计算机可读存储介质,当所述存储介质中的指令由电子设备执行时,使得所述电子设备能够执行上述管理服务器侧的确定API接口类校验的方法。
基于同一发明构思,参阅图17所示,本公开实施例提出一种电子设备,包括存储器1701和处理器1702,其中,所述处理器用于读取所述存储器中存储的计算机指令,并执行上述终端设备侧的方法。
基于同一发明构思,本公开实施例中基于API接口类校验的实施例中提供一种计算机可读存储介质,当所述存储介质中的指令由电子设备执行时,使得所述电子设备能够执行上述终端设备侧确定API接口类校验的方法。
综上所述,本公开实施例中,编译包含被注解的各个API接口类的源代码工程,并执行以下操作:收集所述各个API接口类,并根据所述各个API接口类中各自定义的属性信息,建立对应所述各个API接口类的各个属性信息集合,所述属性信息包括属性名称及其对应的属性类型,然后将所述各个属性信息集合上报至管理服务器后,获取所述管理服务器创建的匹配表,确定与各个API接口类的类信息对应的各个API返回数据,其中,所述匹配表中至少记录有各个类信息及其对应的API返回数据,所述各个API接口类的类信息及其对应的API返回数据,由运行源代码工程的终端设备获得API返回的API返回数据后,主动上报至所述管理服务器,再分别基于所述各个API接口类的属性信息集合中的属性信息,生成相应的数据获取语句,并根据数据获取语句的调用结果,确定对应的属性信息的校验结果,其中,一个属性信息对应生成至少一个数据获取语句,数据获取语句用于获取API返回数据中与对应的属性信息匹配的字段值。这样,通过对API接口类进行的校验操作,能够及时校验出API接口类中属性信息的定义问题,避免由于API接口类定义错误所造成的错误解析用户信息的情况,弥补了现有方案中依赖于测试人员进行功能性测试而无法有效发现API接口类中属性信息定义错误的缺陷,有效的提高了测试效率,极大的节省了测试人员对于此类故障的排查时间,便于开发人员和测试人员了解源代码工程的缺陷,而且,由开发设备执行的API接口类的校验操作,使得后续能够及时响应API接口类的校验结果,进行纠正,降低了测试过程的时间成本,避免出现由于无法有效检测出API接口类的错误定义,所导致的功能执行异常。
本领域内的技术人员应明白,本公开的实施例可提供为方法、系统、或计算机程序产品。因此,本公开可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本公开可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本公开是参照根据本公开实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本公开的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本公开范围的所有变更和修改。
显然,本领域的技术人员可以对本公开实施例进行各种改动和变型而不脱离本公开实施例的精神和范围。这样,倘若本公开实施例的这些修改和变型属于本公开权利要求及其等同技术的范围之内,则本公开也意图包含这些改动和变型在内。

Claims (10)

1.一种应用程序接口API接口类的校验方法,其特征在于,应用于开发设备,包括:
编译包含被注解的各个API接口类的源代码工程,并执行以下操作:
收集所述各个API接口类,并根据所述各个API接口类中各自定义的属性信息,建立对应所述各个API接口类的各个属性信息集合,所述属性信息包括属性名称及其对应的属性类型;
将所述各个属性信息集合上报至管理服务器后,获取所述管理服务器创建的匹配表,确定与各个API接口类的类信息对应的各个API返回数据,其中,所述匹配表中至少记录有各个类信息及其对应的API返回数据;
分别基于所述各个API接口类的属性信息集合中的属性信息,生成相应的数据获取语句,并根据数据获取语句的调用结果,确定对应的属性信息的校验结果,其中,一个属性信息对应生成至少一个数据获取语句,数据获取语句用于获取API返回数据中与对应的属性信息匹配的字段值。
2.如权利要求1所述的方法,其特征在于,所述将所述各个属性信息集合上报至管理服务器之后,确定所述管理服务器未创建匹配表时,进一步包括:
待所述源代码工程编译完成后,基于完成编译后的源代码工程生成数据包,以使得安装所述数据包的终端设备在请求API后,将API返回数据及其对应的API接口类的类信息主动上报至所述管理服务器,并使得所述管理服务器至少基于所述API返回数据及其对应的API接口类的类信息创建相应的匹配表。
3.如权利要求1-2任一项所述的方法,其特征在于,所述根据数据获取语句的调用结果,确定对应的属性信息的校验结果,包括:
调用各个数据获取语句,获取所述各个数据获取语句的调用结果;
确定所述各个数据获取语句的调用结果是否为抛出异常,若是,获取返回结果异常的数据获取语句,并将其对应的属性信息判定为校验出错,否则,判定所述各个数据获取语句对应的各个属性信息校验成功。
4.如权利要求3所述的方法,其特征在于,所述将其对应的属性信息判定为校验出错之后,进一步包括:
针对校验出错的各个属性信息,分别执行以下操作:
获取对应的API返回数据中包括的各个字段名,并依次计算一个属性信息中的属性名称与所述各个字段名之间连续相同的字母数目;
筛选出字母数目最高的字段名及其对应的字段类型,生成包含筛选出的所述字段名和字段类型的一条修改建议,并将所述一条修改建议以及所述一个属性信息输出至编译日志和控制台界面。
5.一种API接口类的校验方法,其特征在于,应用于管理服务器,包括:
接收开发设备上报的各个API接口类的属性信息集合,将创建的匹配表发送至所述开发设备,所述匹配表至少记录各个API返回数据与其对应的API接口类的类信息,其中,所述各个API返回数据及其对应的API接口类的类信息,由运行源代码工程的终端设备获得API返回的API返回数据后主动上报;
接收所述开发设备基于所述匹配表,对各个API接口类的属性信息集合中的属性信息进行校验时,上报的各个属性信息的校验结果,并基于所述校验结果,记录对应的各个属性信息的校验状态。
6.一种API接口类的校验方法,其特征在于,应用于终端设备,包括:
安装基于编译后的源代码工程生成的安装包,并响应于请求各个API的触发操作,获取所述各个API返回的各个API返回数据,所述源代码工程中包含有被注解收集的各个接口类;
确定所述各个API返回数据对应的各个API接口类的类信息,并将所述各个API返回数据及其对应的各个类信息主动上报至管理服务器。
7.一种API接口类的校验系统,其特征在于,包括:
终端设备,安装基于编译后的源代码工程生成的安装包,在请求各个API并获得所述各个API返回的API返回数据时,将各个API返回数据以及对应的各个API接口类的类信息上报至管理服务器;
管理服务器,基于终端设备上报的各个API返回数据及对应的API接口类的类信息,以及开发设备上报的各个API接口类各自对应的属性信息集合,创建匹配表,并记录所述开发设备上报的各个属性信息的校验状态;
开发设备,编译包含有被注解的各个接口类的源代码工程,并根据各个API接口类中定义的属性信息,建立对应所述各个API接口类的各个属性信息集合,将所述各个属性信息集合上报至所述管理服务器后,根据获取的所述管理服务器创建的匹配表,确定与各个API接口类对应的各个API返回数据,并基于各个属性信息中包含的属性信息对应生成数据获取语句后,基于各个数据获取语句的调用结果,判定对应的各个属性信息的校验结果,以及将各个属性信息的校验结果上报至所述管理服务器。
8.一种API接口类的校验装置,其特征在于,应用于开发设备,包括:
编译包含被注解的各个API接口类的源代码工程,并执行以下操作:
收集单元,收集所述各个API接口类,并根据所述各个API接口类中各自定义的属性信息,建立对应所述各个API接口类的各个属性信息集合,所述属性信息包括属性名称及其对应的属性类型;
获取单元,将所述各个属性信息集合上报至管理服务器后,获取所述管理服务器创建的匹配表,确定与各个API接口类的类信息对应的各个API返回数据,其中,所述匹配表中至少记录有各个类信息及其对应的API返回数据;
校验单元,分别基于所述各个API接口类的属性信息集合中的属性信息,生成相应的数据获取语句,并根据数据获取语句的调用结果,确定对应的属性信息的校验结果,其中,一个属性信息对应生成至少一个数据获取语句,数据获取语句用于获取API返回数据中与对应的属性信息匹配的字段值。
9.一种API接口类的校验装置,其特征在于,应用于管理服务器,包括:
创建单元,接收开发设备上报的各个API接口类的属性信息集合,将创建的匹配表发送至所述开发设备,所述匹配表至少记录各个API返回数据与其对应的API接口类的类信息,其中,所述各个API返回数据及其对应的API接口类的类信息,由运行源代码工程的终端设备获得API返回的API返回数据后主动上报;
接收单元,接收所述开发设备基于所述匹配表,对各个API接口类的属性信息集合中的属性信息进行校验时,上报的各个属性信息的校验结果,并基于所述校验结果,记录对应的各个属性信息的校验状态。
10.一种API接口类的校验装置,其特征在于,应用于终端设备,包括:
获取单元,安装基于编译后的源代码工程生成的安装包,并响应于请求各个API的触发操作,获取所述各个API返回的各个API返回数据,所述源代码工程中包含有被注解收集的各个接口类;
上报单元,确定所述各个API返回数据对应的各个API接口类的类信息,并将所述各个API返回数据及其对应的各个类信息主动上报至管理服务器。
CN202011132164.1A 2020-10-21 2020-10-21 一种api接口类的校验方法、系统及装置 Active CN112241370B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202011132164.1A CN112241370B (zh) 2020-10-21 2020-10-21 一种api接口类的校验方法、系统及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202011132164.1A CN112241370B (zh) 2020-10-21 2020-10-21 一种api接口类的校验方法、系统及装置

Publications (2)

Publication Number Publication Date
CN112241370A true CN112241370A (zh) 2021-01-19
CN112241370B CN112241370B (zh) 2023-06-16

Family

ID=74169389

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202011132164.1A Active CN112241370B (zh) 2020-10-21 2020-10-21 一种api接口类的校验方法、系统及装置

Country Status (1)

Country Link
CN (1) CN112241370B (zh)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112765175A (zh) * 2021-01-21 2021-05-07 恒安嘉新(北京)科技股份公司 一种接口数据的处理方法、装置、计算机设备及介质
CN112783791A (zh) * 2021-02-08 2021-05-11 中国工商银行股份有限公司 接口测试案例的生成方法及装置
CN114676062A (zh) * 2022-04-06 2022-06-28 北京百度网讯科技有限公司 用于接口的差异数据测试方法及装置、电子设备和介质

Citations (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105677326A (zh) * 2015-12-28 2016-06-15 国云科技股份有限公司 一种软件接口参数验证方法
JP2016122321A (ja) * 2014-12-25 2016-07-07 株式会社日立製作所 解析装置、解析方法、および解析プログラム
US20160292242A1 (en) * 2015-04-06 2016-10-06 Adp, Llc Automatic verification of json data
US9589578B1 (en) * 2013-10-29 2017-03-07 Amazon Technologies, Inc. Invoking application programming interface calls using voice commands
CN106991023A (zh) * 2017-03-22 2017-07-28 深圳市彬讯科技有限公司 一种接口参数校验方法及组件
US20180121320A1 (en) * 2016-10-31 2018-05-03 International Business Machines Corporation Analysis to check web api code usage and specification
CN108959076A (zh) * 2018-06-25 2018-12-07 浙江网新恒天软件有限公司 一种api在线调试方法
CN109375901A (zh) * 2018-09-03 2019-02-22 平安普惠企业管理有限公司 接口信息管理方法、装置、计算机设备以及存储介质
CN110147261A (zh) * 2019-04-15 2019-08-20 平安普惠企业管理有限公司 基于调用接口的参数校验方法及相关设备
CN110309099A (zh) * 2019-06-28 2019-10-08 深圳前海微众银行股份有限公司 接口管理方法、装置、设备及计算机可读存储介质
CN110413269A (zh) * 2019-06-18 2019-11-05 深圳壹账通智能科技有限公司 接口编码方法、服务器及计算机可读存储介质
US20190354457A1 (en) * 2018-05-21 2019-11-21 Oracle International Corporation Anomaly detection based on events composed through unsupervised clustering of log messages
CN111064725A (zh) * 2019-12-12 2020-04-24 广州鲁邦通物联网科技有限公司 一种代码零入侵接口校验方法和校验装置
CN111191246A (zh) * 2019-12-19 2020-05-22 杭州安恒信息技术股份有限公司 一种基于Spring注解的安全开发校验方法
CN111459821A (zh) * 2020-04-01 2020-07-28 汇通达网络股份有限公司 一种基于TestNG的软件自动化单元测试方法
CN111475331A (zh) * 2020-03-24 2020-07-31 平安银行股份有限公司 数据校验方法、装置、计算机设备和存储介质
CN111736811A (zh) * 2020-06-10 2020-10-02 苏宁云计算有限公司 表单数据校验方法、系统、服务器和用户终端
CN111782526A (zh) * 2020-06-30 2020-10-16 北京同邦卓益科技有限公司 一种接口测试方法、装置、电子设备及存储介质

Patent Citations (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9589578B1 (en) * 2013-10-29 2017-03-07 Amazon Technologies, Inc. Invoking application programming interface calls using voice commands
JP2016122321A (ja) * 2014-12-25 2016-07-07 株式会社日立製作所 解析装置、解析方法、および解析プログラム
US20160292242A1 (en) * 2015-04-06 2016-10-06 Adp, Llc Automatic verification of json data
CN105677326A (zh) * 2015-12-28 2016-06-15 国云科技股份有限公司 一种软件接口参数验证方法
US20180121320A1 (en) * 2016-10-31 2018-05-03 International Business Machines Corporation Analysis to check web api code usage and specification
CN106991023A (zh) * 2017-03-22 2017-07-28 深圳市彬讯科技有限公司 一种接口参数校验方法及组件
US20190354457A1 (en) * 2018-05-21 2019-11-21 Oracle International Corporation Anomaly detection based on events composed through unsupervised clustering of log messages
CN108959076A (zh) * 2018-06-25 2018-12-07 浙江网新恒天软件有限公司 一种api在线调试方法
CN109375901A (zh) * 2018-09-03 2019-02-22 平安普惠企业管理有限公司 接口信息管理方法、装置、计算机设备以及存储介质
CN110147261A (zh) * 2019-04-15 2019-08-20 平安普惠企业管理有限公司 基于调用接口的参数校验方法及相关设备
CN110413269A (zh) * 2019-06-18 2019-11-05 深圳壹账通智能科技有限公司 接口编码方法、服务器及计算机可读存储介质
CN110309099A (zh) * 2019-06-28 2019-10-08 深圳前海微众银行股份有限公司 接口管理方法、装置、设备及计算机可读存储介质
CN111064725A (zh) * 2019-12-12 2020-04-24 广州鲁邦通物联网科技有限公司 一种代码零入侵接口校验方法和校验装置
CN111191246A (zh) * 2019-12-19 2020-05-22 杭州安恒信息技术股份有限公司 一种基于Spring注解的安全开发校验方法
CN111475331A (zh) * 2020-03-24 2020-07-31 平安银行股份有限公司 数据校验方法、装置、计算机设备和存储介质
CN111459821A (zh) * 2020-04-01 2020-07-28 汇通达网络股份有限公司 一种基于TestNG的软件自动化单元测试方法
CN111736811A (zh) * 2020-06-10 2020-10-02 苏宁云计算有限公司 表单数据校验方法、系统、服务器和用户终端
CN111782526A (zh) * 2020-06-30 2020-10-16 北京同邦卓益科技有限公司 一种接口测试方法、装置、电子设备及存储介质

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
李惠欢;: "请求驱动的校务管理系统异常处理机制", 计算机系统应用 *
白洁;李春平;: "面向软件开发信息库的数据挖掘综述", 计算机应用研究 *

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112765175A (zh) * 2021-01-21 2021-05-07 恒安嘉新(北京)科技股份公司 一种接口数据的处理方法、装置、计算机设备及介质
CN112765175B (zh) * 2021-01-21 2024-05-24 恒安嘉新(北京)科技股份公司 一种接口数据的处理方法、装置、计算机设备及介质
CN112783791A (zh) * 2021-02-08 2021-05-11 中国工商银行股份有限公司 接口测试案例的生成方法及装置
CN112783791B (zh) * 2021-02-08 2024-05-24 中国工商银行股份有限公司 接口测试案例的生成方法及装置
CN114676062A (zh) * 2022-04-06 2022-06-28 北京百度网讯科技有限公司 用于接口的差异数据测试方法及装置、电子设备和介质

Also Published As

Publication number Publication date
CN112241370B (zh) 2023-06-16

Similar Documents

Publication Publication Date Title
CN112241370B (zh) 一种api接口类的校验方法、系统及装置
US8473916B2 (en) Method and system for providing a testing framework
US20170372247A1 (en) Methods, systems, and articles of manufacture for implementing software application development and releases
US8516442B2 (en) Graphical user interface metadata evolution tool
CN109947637B (zh) 网页兼容性自动化测试方法、装置、设备及介质
CN111241111B (zh) 数据查询方法及装置、数据对比方法及装置、介质及设备
CN109977008B (zh) 一种应用程序依赖的js代码与原生库兼容的方法及终端
US10846206B2 (en) Adaptive software testing
CN115658452A (zh) 埋点校验方法、埋点校验装置、可读存储介质、电子设备
CN115658496A (zh) 可扩展的Web自动化测试方法、系统、设备及存储介质
CN111679976A (zh) 一种页面对象的查找方法及装置
CN111597069A (zh) 程序处理方法、装置、电子设备和存储介质
US10678864B2 (en) Analysis model preparing system, programming apparatus, and analysis model preparing method
CN113742215A (zh) 一种自动配置和调用测试工具进行测试分析的方法及系统
US11132286B1 (en) Dynamic reordering of test case execution
CN109474822B (zh) 一种安卓电视多国语言自动化测试的方法及装置
CN111967137B (zh) 一种半导体设备建模方法及装置
CN113986263A (zh) 代码自动化测试方法、装置、电子设备、存储介质
CN112256554B (zh) 一种基于场景测试用例进行测试的方法及设备
CN113568834A (zh) Sdk代码的兼容性检测方法、装置、计算机设备和介质
CN114238142A (zh) 一种基于appium+python的移动端ui自动化测试方法
CN113238940A (zh) 一种接口测试结果的比对方法、装置、设备和存储介质
CN111767222A (zh) 数据模型的验证方法、装置、电子设备、存储介质
CN116362230A (zh) 参数校验方法、装置、计算机设备可存储介质
CN114971539A (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