实现接口覆盖率自动化统计的方法和系统与流程

文档序号:18214029发布日期:2019-07-19 22:30阅读:863来源:国知局
实现接口覆盖率自动化统计的方法和系统与流程

本发明涉及网络安全领域。更具体地说,本发明涉及一种实现接口覆盖率自动化统计的方法和系统。



背景技术:

获取和分析代码覆盖率是确保测试质量的重要手段。代码覆盖率描述的是代码被测试的比例和程度,通过测试覆盖率编程人员可以知道测试是否充分,还存在哪些潜在的风险和弱点,指导测试人员有目的补充增加覆盖率的测试用例,现在的覆盖率测试包括语句覆盖率、判定覆盖率、条件覆盖率、函数覆盖率、接口覆盖率等。其中,接口覆盖率的测试可以让编程人员知道哪些接口被替换,哪些接口仍有业务在调用,方便测试人员了解已下线接口,及时废弃部分接口的自动化测试,减少维护成本,但目前接口覆盖率情况仍是人工统计,比较费时费力。



技术实现要素:

本发明的一个目的是解决至少上述问题,并提供至少后面将说明的优点。

本发明还有一个目的是提供一种实现接口覆盖率自动化统计的方法,智能输出各组接口覆盖情况,减少人工统计成本。

为了实现根据本发明的这些目的和其它优点,提供了一种实现接口覆盖率自动化统计的方法,包括:

通过日志查询用户调用过的全量接口,以及查询全量接口中的每一接口被调用后的返回值;

获取当前目录下的接口数据,接收执行测试请求,根据当前目录下的每一接口的类型提取符合条件的测试用例,调用测试脚本对当前目录下的每一接口执行测试,获取当前目录下的每一接口的返回值;

将当前目录下的每一接口的返回值遍历对比全量接口中的每一接口被调用后的返回值,若当前目录下的一接口的返回值与全量接口中的另一接口被调用后的返回值相同,则确定当前目录下的一接口与全量接口中的另一接口为同一接口,否则记录当前目录下的一接口为新增接口;

获取全量接口中接口的总数量、全量接口中与当前目录下同一接口的数量以及当前目录下的新增接口的数量,通过计算全量接口中与当前目录下同一接口的数量和全量接口中接口的总数量的比值得出接口覆盖率。

优选的是,对当前目录下的每一接口执行测试过程前,向待测接口的程序中加入日志记录程序,所述日志记录程序用于保存待测接口执行测试后输出的返回值。

优选的是,全量接口中的每一接口被调用后的返回值和当前目录下的每一接口的返回值均为json数据。

优选的是,将当前目录下的每一接口的返回值遍历对比全量接口中的每一接口被调用后的返回值前,还包括:将当前目录下的每一接口的返回值和全量接口中的每一接口被调用后的返回值均转化为list对象。

优选的是,当前目录下的每一接口的返回值与全量接口中的每一接口被调用后的返回值的对比规则包括:比较当前目录下的每一接口的返回值转化成的list对象与全量接口中的每一接口被调用后的返回值转化成的list对象,若当前目录下的一接口的返回值转化成的list对象的属性和内容与全量接口中的另一接口被调用后的返回值转化成的list对象的属性和内容均相同,则当前目录下的一接口与全量接口中的另一接口为同一接口;若当前目录下的一接口的返回值转化成的list对象的属性与全量接口中的另一接口被调用后的返回值转化成的list对象的属性不同,当前目录下的一接口的返回值转化成的list对象的值与全量接口中的另一接口被调用后的返回值转化成的list对象的内容相同,则当前目录下的一接口与全量接口中的另一接口为同一接口;若当前目录下的一接口的返回值转化成的list对象的内容与全量接口中的另一接口被调用后的返回值转化成的list对象的内容不同,当前目录下的一接口的返回值转化成的list对象的属性与全量接口中的另一接口被调用后的返回值转化成的list对象的属性相同,则当前目录下的一接口与全量接口中的另一接口为同一接口。

本发明还提供一种实现接口覆盖率自动化统计的系统,包括:

日志查询模块,其用于通过日志查询用户调用过的全量接口,以及查询全量接口中的每一接口被调用后的返回值;

接口测试模块,其用于获取当前目录下的接口数据,接收执行测试请求,根据当前目录下的每一接口的类型提取符合条件的测试用例,调用测试脚本对当前目录下的每一接口执行测试,获取当前目录下的每一接口的返回值;

对比模块,其用于将当前目录下的每一接口的返回值遍历对比全量接口中的每一接口被调用后的返回值,若当前目录下的一接口的返回值与全量接口中的另一接口被调用后的返回值相同,则确定当前目录下的一接口与全量接口中的另一接口为同一接口,否则记录当前目录下的一接口为新增接口;

覆盖率统计模块,获取全量接口中接口的总数量、全量接口中与当前目录下同一接口的数量以及当前目录下的新增接口的数量,通过计算全量接口中与当前目录下同一接口的数量和全量接口中接口的总数量的比值得出接口覆盖率。

优选的是,所述接口测试模块还包括日志功能加入单元,用于对当前目录下的每一接口执行测试过程前,向待测接口的程序中加入日志记录程序,所述日志记录程序用于保存待测接口执行测试后输出的返回值。

优选的是,所述日志查询模块和所述接口测试模块中,全量接口中的每一接口被调用后的返回值和当前目录下的每一接口的返回值均为json数据。

优选的是,所述接口测试模块将当前目录下的每一接口的返回值遍历对比全量接口中的每一接口被调用后的返回值前,还包括:将当前目录下的每一接口的返回值和全量接口中的每一接口被调用后的返回值均转化为list对象。

优选的是,所述对比模块中,当前目录下的每一接口的返回值与全量接口中的每一接口被调用后的返回值的对比规则包括:比较当前目录下的每一接口的返回值转化成的list对象与全量接口中的每一接口被调用后的返回值转化成的list对象,若当前目录下的一接口的返回值转化成的list对象的属性和内容与全量接口中的另一接口被调用后的返回值转化成的list对象的属性和内容均相同,则当前目录下的一接口与全量接口中的另一接口为同一接口;若当前目录下的一接口的返回值转化成的list对象的属性与全量接口中的另一接口被调用后的返回值转化成的list对象的属性不同,当前目录下的一接口的返回值转化成的list对象的值与全量接口中的另一接口被调用后的返回值转化成的list对象的内容相同,则当前目录下的一接口与全量接口中的另一接口为同一接口;若当前目录下的一接口的返回值转化成的list对象的内容与全量接口中的另一接口被调用后的返回值转化成的list对象的内容不同,当前目录下的一接口的返回值转化成的list对象的属性与全量接口中的另一接口被调用后的返回值转化成的list对象的属性相同,则当前目录下的一接口与全量接口中的另一接口为同一接口。

本发明至少包括以下有益效果:通过日志功能可以获取历史调用接口记录,通过对现有接口进行测试,以及将现有接口测试结果与历史接口调用记录进行对比,可以清楚的了解哪些接口被替换,哪些接口仍有业务在调用,方便测试人员了解已下线接口,及时废弃部分接口的自动化测试,减少维护成本。

本发明的其它优点、目标和特征将部分通过下面的说明体现,部分还将通过对本发明的研究和实践而为本领域的技术人员所理解。

附图说明

图1为本发明所述实现接口覆盖率自动化统计的方法的流程图;

图2为本发明所述实现接口覆盖率自动化统计的系统的组成结构示意图。

具体实施方式

下面结合附图对本发明做进一步的详细说明,以令本领域技术人员参照说明书文字能够据以实施。

需要说明的是,下述实施方案中所述实验方法,如无特殊说明,均为常规方法,所述试剂和材料,如无特殊说明,均可从商业途径获得;在本发明的描述中,术语“横向”、“纵向”、“上”、“下”、“前”、“后”、“左”、“右”、“竖直”、“水平”、“顶”、“底”、“内”、“外”等指示的方位或位置关系为基于附图所示的方位或位置关系,仅是为了便于描述本发明和简化描述,并不是指示或暗示所指的系统或元件必须具有特定的方位、以特定的方位构造和操作,因此不能理解为对本发明的限制。

如图1所示,本发明提供一种实现接口覆盖率自动化统计的方法,包括:

s101、通过日志查询用户调用过的全量接口,以及查询全量接口中的每一接口被调用后的返回值,这里的日志工具可采用elk日志分析系统,这里接口被调用后的返回值可以是xml、json或者html,一般采用json返回值,数据轻量,而且解析比较方便;

s102、获取当前目录下的接口数据,接收执行测试请求,根据当前目录下的每一接口的类型提取符合条件的测试用例,调用测试脚本对当前目录下的每一接口执行测试,获取当前目录下的每一接口的返回值,这里接口被调用后的返回值可以是xml、json或者html,一般采用json返回值,数据轻量,而且解析比较方便;

调用测试脚本对当前目录下的每一接口执行测试具体可包括:测试设备对测试用例进行解析,将测试用例中包含的针对接口的输入参数值、测试逻辑等信息转换为用脚本语言表示的代码,以及后续执行该测试脚本。

s103、将当前目录下的每一接口的返回值遍历对比全量接口中的每一接口被调用后的返回值,这里要求当前目录下的每一接口的返回值类型与全量接口中的每一接口被调用后的返回值相同才能比较,因此,如果当前目录下所有接口的返回值类型不统一,可将不同类型的接口返回值均转化为list类型返回值,将全量接口中的每一接口被调用后的返回值均转化为list对象,再对比当前目录和全量接口中的每一接口被调用后的返回值,如果当前目录下所有接口的返回值类型和全量接口中的每一接口被调用后的返回值类型均为json类型,则可以直接对比,但是直接使用json类型返回值比对的方式往往会出现字符串的顺序随机、内容一致的情况,这种情况下有可能会将不同的接口误判为相同的接口,因此有一定误差,所以,理想的是将将当前目录下的每一接口的返回值和全量接口中的每一接口被调用后的返回值均转化为list对象,再进行对比,list对象分为包括属性和内容,分别对比list对象的属性和内容,能更准确的判断两接口的状况。若当前目录下的一接口的返回值与全量接口中的另一接口被调用后的返回值相同,则确定当前目录下的一接口与全量接口中的另一接口为同一接口,否则记录当前目录下的一接口为新增接口;

s104、获取全量接口中接口的总数量、全量接口中与当前目录下同一接口的数量以及当前目录下的新增接口的数量,通过计算全量接口中与当前目录下同一接口的数量和全量接口中接口的总数量的比值得出接口覆盖率。

上述实施例在使用过程中,通过日志功能可以获取历史调用接口记录,通过对现有接口进行测试,以及将现有接口测试结果与历史接口调用记录进行对比,可以清楚的了解哪些接口被替换,哪些接口仍有业务在调用,方便测试人员了解已下线接口,及时废弃部分接口的自动化测试,减少了维护成本。

在另一实施例中,对当前目录下的每一接口执行测试过程前,向待测接口的程序中加入日志记录程序,所述日志记录程序用于保存待测接口执行测试后输出的返回值,这样方便再次进行接口覆盖率统计时,有数据可查询,也方便检测人员对接口工作状况进行检查,如接口的代码中有一些不影响返回值,但是影响接口的使用状况,可以通过检查日志来判别这些代码的工作状况。

在另一实施例中,全量接口中的每一接口被调用后的返回值和当前目录下的每一接口的返回值均为json数据,因为json数据轻量,而且解析比较方便。

在另一实施例中,将当前目录下的每一接口的返回值遍历对比全量接口中的每一接口被调用后的返回值前,还包括:将当前目录下的每一接口的返回值和全量接口中的每一接口被调用后的返回值均转化为list对象,list对象分为包括属性和内容,分别对比list对象的属性和内容,能更准确的判断两接口的状况。

在另一实施例中,当前目录下的每一接口的返回值与全量接口中的每一接口被调用后的返回值的对比规则包括:比较当前目录下的每一接口的返回值转化成的list对象与全量接口中的每一接口被调用后的返回值转化成的list对象,若当前目录下的一接口的返回值转化成的list对象的属性和内容与全量接口中的另一接口被调用后的返回值转化成的list对象的属性和内容均相同,则当前目录下的一接口与全量接口中的另一接口为同一接口;若当前目录下的一接口的返回值转化成的list对象的属性与全量接口中的另一接口被调用后的返回值转化成的list对象的属性不同,当前目录下的一接口的返回值转化成的list对象的值与全量接口中的另一接口被调用后的返回值转化成的list对象的内容相同,则当前目录下的一接口与全量接口中的另一接口为同一接口;若当前目录下的一接口的返回值转化成的list对象的内容与全量接口中的另一接口被调用后的返回值转化成的list对象的内容不同,当前目录下的一接口的返回值转化成的list对象的属性与全量接口中的另一接口被调用后的返回值转化成的list对象的属性相同,则当前目录下的一接口与全量接口中的另一接口为同一接口。

如图2所示,本发明还提供一种实现接口覆盖率自动化统计的系统,包括:

日志查询模块,其用于通过日志查询用户调用过的全量接口,以及查询全量接口中的每一接口被调用后的返回值,这里的日志工具可采用elk日志分析系统,这里接口被调用后的返回值可以是xml、json或者html,一般采用json返回值,数据轻量,而且解析比较方便;

接口测试模块,其用于获取当前目录下的接口数据,接收执行测试请求,根据当前目录下的每一接口的类型提取符合条件的测试用例,调用测试脚本对当前目录下的每一接口执行测试,获取当前目录下的每一接口的返回值,这里接口被调用后的返回值可以是xml、json或者html,一般采用json返回值,数据轻量,而且解析比较方便。调用测试脚本对当前目录下的每一接口执行测试具体可包括:测试设备对测试用例进行解析,将测试用例中包含的针对接口的输入参数值、测试逻辑等信息转换为用脚本语言表示的代码,以及后续执行该测试脚本。

对比模块,其用于将当前目录下的每一接口的返回值遍历对比全量接口中的每一接口被调用后的返回值,这里要求当前目录下的每一接口的返回值类型与全量接口中的每一接口被调用后的返回值相同才能比较,因此,如果当前目录下所有接口的返回值类型不统一,可将不同类型的接口返回值均转化为list类型返回值,将全量接口中的每一接口被调用后的返回值均转化为list对象,再对比当前目录和全量接口中的每一接口被调用后的返回值,如果当前目录下所有接口的返回值类型和全量接口中的每一接口被调用后的返回值类型均为json类型,则可以直接对比,但是直接使用json类型返回值比对的方式往往会出现字符串的顺序随机、内容一致的情况,这种情况下有可能会将不同的接口误判为相同的接口,因此有一定误差,所以,理想的是将将当前目录下的每一接口的返回值和全量接口中的每一接口被调用后的返回值均转化为list对象,再进行对比,list对象分为包括属性和内容,分别对比list对象的属性和内容,能更准确的判断两接口的状况。若当前目录下的一接口的返回值与全量接口中的另一接口被调用后的返回值相同,则确定当前目录下的一接口与全量接口中的另一接口为同一接口,否则记录当前目录下的一接口为新增接口;

覆盖率统计模块,获取全量接口中接口的总数量、全量接口中与当前目录下同一接口的数量以及当前目录下的新增接口的数量,通过计算全量接口中与当前目录下同一接口的数量和全量接口中接口的总数量的比值得出接口覆盖率。

在另一实施例中,所述接口测试模块还包括日志功能加入单元,用于对当前目录下的每一接口执行测试过程前,向待测接口的程序中加入日志记录程序,所述日志记录程序用于保存待测接口执行测试后输出的返回值,这样方便再次进行接口覆盖率统计时,有数据可查询,也方便检测人员对接口工作状况进行检查,如接口的代码中有一些不影响返回值,但是影响接口的使用状况,可以通过检查日志来判别这些代码的工作状况。

在另一实施例中,所述日志查询模块和所述接口测试模块中,全量接口中的每一接口被调用后的返回值和当前目录下的每一接口的返回值均为json数据,因为json数据轻量,而且解析比较方便。

在另一实施例中,所述接口测试模块将当前目录下的每一接口的返回值遍历对比全量接口中的每一接口被调用后的返回值前,还包括:将当前目录下的每一接口的返回值和全量接口中的每一接口被调用后的返回值均转化为list对象,list对象分为包括属性和内容,分别对比list对象的属性和内容,能更准确的判断两接口的状况。

在另一实施例中,所述对比模块中,当前目录下的每一接口的返回值与全量接口中的每一接口被调用后的返回值的对比规则包括:比较当前目录下的每一接口的返回值转化成的list对象与全量接口中的每一接口被调用后的返回值转化成的list对象,若当前目录下的一接口的返回值转化成的list对象的属性和内容与全量接口中的另一接口被调用后的返回值转化成的list对象的属性和内容均相同,则当前目录下的一接口与全量接口中的另一接口为同一接口;若当前目录下的一接口的返回值转化成的list对象的属性与全量接口中的另一接口被调用后的返回值转化成的list对象的属性不同,当前目录下的一接口的返回值转化成的list对象的值与全量接口中的另一接口被调用后的返回值转化成的list对象的内容相同,则当前目录下的一接口与全量接口中的另一接口为同一接口;若当前目录下的一接口的返回值转化成的list对象的内容与全量接口中的另一接口被调用后的返回值转化成的list对象的内容不同,当前目录下的一接口的返回值转化成的list对象的属性与全量接口中的另一接口被调用后的返回值转化成的list对象的属性相同,则当前目录下的一接口与全量接口中的另一接口为同一接口。

尽管本发明的实施方案已公开如上,但其并不仅仅限于说明书和实施方式中所列运用,它完全可以被适用于各种适合本发明的领域,对于熟悉本领域的人员而言,可容易地实现另外的修改,因此在不背离权利要求及等同范围所限定的一般概念下,本发明并不限于特定的细节和这里示出与描述的图例。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1