首页> 中国专利> 测试件覆盖率及覆盖应用接口的分析方法、装置

测试件覆盖率及覆盖应用接口的分析方法、装置

摘要

本申请实施例公开了一种测试件覆盖率及覆盖应用接口的分析方法、装置,其中,所述测试件覆盖率的分析方法,包括:获取测试件对应服务器发布的第一应用接口集合;根据所述测试件源代码的测试规则,确定所述测试件能够测试的第二应用接口集合;确定所述第一应用接口集合与所述第二应用接口集合的交集;分析所述测试件的应用接口覆盖率,所述应用接口覆盖率=交集中应用接口的数目/第一应用接口集合中应用接口的数目;采用本申请实施例所公开的方法及装置,可分析一测试件覆盖其对应服务器所发布应用接口的比例。

著录项

  • 公开/公告号CN106681904A

    专利类型发明专利

  • 公开/公告日2017-05-17

    原文格式PDF

  • 申请/专利权人 阿里巴巴集团控股有限公司;

    申请/专利号CN201510768053.2

  • 发明设计人 胡嵩;

    申请日2015-11-11

  • 分类号G06F11/36(20060101);

  • 代理机构北京弘权知识产权代理事务所(普通合伙);

  • 代理人逯长明;许伟群

  • 地址 开曼群岛大开曼岛

  • 入库时间 2023-06-19 02:12:12

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2020-01-31

    授权

    授权

  • 2017-06-09

    实质审查的生效 IPC(主分类):G06F11/36 申请日:20151111

    实质审查的生效

  • 2017-05-17

    公开

    公开

说明书

技术领域

本申请涉及互联网技术领域,特别是涉及一种测试件覆盖率及覆盖应用接口的分析方法、装置。

背景技术

分布式服务系统通常采用客户端/服务器相分离的体系结构,其中,所述客户端向服务器发出服务请求,所述服务器根据客户端的服务请求,执行相应功能的应用程序。在实际应用中,如图1所示,客户端的数量众多,而服务器的数量有限,为了有效均衡服务器的负载,通常在客户端和服务器间设置远程调用平台,而远程调用平台中存储有所有服务器发布的应用接口,当客户端需实现某些功能的服务时,在远程调用平台中调用相关的应用接口即可。

目前,如图2所示,一服务器通常在远程调用平台中发布多个应用接口,且为了保证上述应用接口的正确运行,一般通过应用接口测试平台对每个服务器所发布的应用接口进行测试。在实际应用中,通常调用应用接口测试平台中的一个测试程序,即测试件,检测一个服务器所发布的所有应用接口是否正确和完备。

由于服务器经常在远程调用平台动态发布新应用接口,或,动态修改远程调用平台中已发布应用接口的功能代码,因此,远程调用平台中的一测试件,是否可对其所对应的服务器所发布的所有应用接口均能够进行正确和完备测试,即一测试件是否可覆盖其对应服务器所发布的所有应用接口,并不知得。因此,在现有技术中,亟需一种测试件覆盖率及覆盖应用接口的分析方法、装置,以分析一测试件覆盖其对应服务器所发布应用接口的比例。

申请内容

本申请实施例中提供了一种测试件覆盖率及覆盖应用接口的分析方法、装置,以分析一测试件覆盖其对应服务器所发布应用接口的比例。

为了解决上述技术问题,本申请实施例公开了如下技术方案:

本申请公开了一种测试件覆盖率的分析方法,包括:

获取测试件对应服务器发布的第一应用接口集合;

根据所述测试件源代码的测试规则,确定所述测试件能够测试的第二应用接口集合;

确定所述第一应用接口集合与所述第二应用接口集合的交集;

分析所述测试件的应用接口覆盖率,所述应用接口覆盖率=交集中应用接口的数目/第一应用接口集合中应用接口的数目。

可选的,确定所述第一应用接口集合与所述第二应用接口集合的交集,包括:

依次判断所述第一应用接口集合中的每个应用接口,是否在所述第二应用接口集合中查找到;

如果是,将所述应用接口加入至所述交集。

可选的,根据所述测试件源代码的测试规则,确定所述测试件能够测试的第二应用接口集合,包括:

扫描所述测试件的源代码,获得所述源代码中的多个单词;

根据所述测试件源代码的测试规则,依次判断所述单词是否标识所述测试件测试的应用接口;

如果是,将所述单词所标识的应用接口,加入至所述第二应用接口集合。

可选的,所述方法还包括:

确定所述第一应用接口集合中每个应用接口相关联的调用方法。

可选的,抽象语法树所述测试件能够测试的第二应用接口是从所述测试件的抽象语法树中获得的;根据所述测试件源代码的测试规则,确定所述测试件的抽象语法树,包括:

扫描所述测试件的源代码,获得所述源代码中的多个单词;

根据所述测试件源代码的测试规则,依次判断所述单词,是否标识所述测试件测试的应用接口;

如果是,将所述单词作为所述测试件的应用接口节点;

查找所述应用接口节点相关联的调用方法单词,且将所述单词作为调用方法节点;

根据所述应用接口节点和调用方法节点,构建所述测试件的抽象语法树。

可选的,确定所述第一应用接口集合与所述第二应用接口集合的交集,包括:

依次判断所述第一应用接口集合中的每个应用接口,是否在所述抽象语法树中查找到匹配的应用接口节点;

如果是,将所述应用接口加入至所述交集。

可选的,所述方法还包括:

依次判断所述第一应用接口集合中的每个应用接口相关联的调用方法,是否在所述抽象语法树中查找到匹配的调用方法节点;

如果是,将所述调用方法,作为所述测试件能够测试的调用方法;

分析所述测试件的调用方法覆盖率,所述调用方法覆盖率=能够测试的调用方法数目/第一应用接口集合中所有应用接口相关联的调用方法数目。

本申请还公开了一种测试件覆盖率的分析方法,包括:

获取测试件对应服务器发布的第一应用接口集合;

依次判断所述第一应用接口集合中的每个应用接口,是否能在所述测试件的抽象语法树中查找到匹配的应用接口节点;所述抽象语法树为预先根据所述测试件的源代码所构建的,所述抽象语法树中至少包括所述测试能够测试的应用接口节点;

如果是,将所述应用接口作为所述测试件能够测试的应用接口;

分析所述测试件的应用接口覆盖率,所述应用接口覆盖率=所述测试件能够测试的应用接口数目/第一应用接口集合中应用接口的数目。

可选的,所述抽象语法树中还包括所述测试件能够测试的调用方法节点,所述方法还包括:

获取所述测试件对应服务器发布的第一调用方法集合,所述第一调用方法集合为所述服务器在所述第一应用接口集合中的应用接口下发布的;

依次判断所述第一调用方法集合中的每个调用方法,能否在所述测试件的抽象语法树中查找到相匹配的调用方法节点;

如果能,将所述调用方法作为所述测试件能够测试的调用方法;

分析所述测试件的调用方法覆盖率,所述调用方法覆盖率=所述测试件能够测试的调用方法的数目/第一应用接口集合中应用接口的数目。

可选的,根据所述测试件的源代码构建所述测试件的抽象语法树,包括:

扫描所述测试件的源代码,获得所述源代码中的多个单词;

根据所述测试件源代码的测试规则,依次判断所述单词,是否标识所述测试件测试的应用接口;

如果是,将所述单词作为所述测试件的应用接口节点;

查找所述应用接口节点相关联的调用方法单词,且将所述单词作为调用方法节点;

根据所述应用接口节点和调用方法节点,构建所述测试件的抽象语法树。

可选的,所述方法还包括:

如果所述第一应用接口集合中的一应用接口,在所述测试件的抽象语法树中未能查找到匹配的应用接口节点,确定所述应用接口为所述测试件未能测试的应用接口。

可选的,所述方法还包括:

如果所述第一调用方法集合中的一调用方法,在所述测试件的抽象语法树中未能查找到匹配的调用方法节点,确定所述调用方法为所述测试件未能测试的调用方法。

本申请还公开了一种测试件覆盖应用接口的分析方法,包括:

获取测试件对应服务器发布的一应用接口;

判断所述应用接口,是否能在所述测试件的抽象语法树中查找到匹配的应用接口节点,所述抽象语法树为预先根据所述测试的源代码所构建的,所述AST中至少包括所述测试件能够测试的应用接口节点;

如果是,确定所述测试件覆盖所述应用接口,否则,确定所述测试件未能覆盖所述应用接口。

本申请还公开了一种测试件覆盖率的分析装置,包括:

第一获取模块,用于获取测试件对应服务器发布的第一应用接口集合;

第一确定模块,用于根据所述测试件源代码的测试规则,确定所述测试件能够测试的第二应用接口集合;

第二确定模块,用于确定所述第一应用接口集合与所述第二应用接口集合的交集;

第一分析模块,用于分析所述测试件的应用接口覆盖率,所述应用接口覆盖率=交集中应用接口的数目/第一应用接口集合中应用接口的数目。

15、根据权利要求14所述的装置,其特征在于,所述第一确定模块包括:

第一判断单元,用于依次判断所述第一应用接口集合中的每个应用接口,是否在所述第二应用接口集合中查找到;

第一加入单元,用于当在所述第二应用接口集合中查找到所述应用接口时,将所述应用接口加入至所述交集。

可选的,所述第二确定模块包括:

扫描单元,用于扫描所述测试件的源代码,获得所述源代码中的多个单词;

第二判断单元,用于根据所述测试件源代码的测试规则,依次判断所述单词是否标识所述测试件测试的应用接口;

第二加入单元,用于将所述单词所标识的应用接口,加入至所述第二应用接口集合。

可选的,所述装置还包括:

第三确定模块,用于确定所述第一应用接口集合中每个应用接口相关联的调用方法。

可选的,所述测试件能够测试的第二应用接口是从所述测试件的抽象语法树中获得的;所述第二确定模块包括:

扫描单元,用于扫描所述测试件的源代码,获得所述源代码中的多个单词;

第二判断单元,用于根据所述测试件源代码的测试规则,依次判断所述单词,是否标识所述测试件测试的应用接口;

第二加入单元,用于当所述单词标识所述测试件的应用接口时,将所述单词作为所述测试件的应用接口节点;

查找单元,用于查找所述应用接口节点相关联的调用方法单词,且将所述单词作为调用方法节点;

构建单元,用于根据所述应用接口节点和调用方法节点,构建所述测试件的抽象语法树。

可选的,所述第一确定模块,包括:

第三判断单元,用于依次判断所述第一应用接口集合中的每个应用接口,是否在所述抽象语法树中查找到匹配的应用接口节点;

第三加入单元,用于当所述应用接口,在所述抽象语法树中查找到匹配的应用接口节点时,将所述应用接口加入至所述交集。

可选的,所述装置还包括:

第四判断单元,用于依次判断所述第一应用接口集合中的每个应用接口相关联的调用方法,是否在所述抽象语法树中查找到匹配的调用方法节点;

第一设定单元,用于当查找到匹配的调用方法节点时,将所述调用方法作为所述测试能够测试的调用方法;

分析单元,用于分析所述测试件的调用方法覆盖率,所述调用方法覆盖率=能够测试的调用方法数目/第一应用接口集合中所有应用接口相关联的调用方法数目。

本申请还公开了一种测试件覆盖率的分析装置,包括:

第一获取模块,用于获取测试件对应服务器发布的第一应用接口集合;

构建模块,用于根据所述测试件的源代码构建抽象语法树,所述抽象语法树中至少包括所述测试能够测试的应用接口节点;

第一判断模块,用于依次判断所述第一应用接口集合中的每个应用接口,是否能在所述测试件的抽象语法树中查找到匹配的应用接口节点;

第二设定单元,用于当一应用接口在所述抽象语法树中查找到匹配的应用接口节点时,将所述应用接口作为所述测试件能够测试的应用接口;

第二分析模块,用于分析所述测试件的应用接口覆盖率,所述应用接口覆盖率=所述测试件能够测试的应用接口数目/第一应用接口集合中应用接口的数目。

可选的,所述抽象语法树中还包括所述测试件能够测试的调用方法节点,所述装置还包括:

第二获取模块,用于获取所述测试件对应服务器发布的第一调用方法集合,所述第一调用方法集合为所述服务器在所述第一应用接口集合中的应用接口下发布的;

第二判断模块,用于依次判断所述第一调用方法集合中的每个调用方法,能否在所述测试件的抽象语法树中查找到相匹配的调用方法节点;

第三设定单元,用于当一调用方法在所述抽象语法树中查找到匹配的调用方法节点时,将所述调用方法作为所述测试件能够测试的调用方法;

第三分析模块,用于分析所述测试件的调用方法覆盖率,所述调用方法覆盖率=所述测试件能够测试的调用方法的数目/第一应用接口集合中应用接口的数目。

可选的,所述构建模块包括:

扫描单元,用于扫描所述测试件的源代码,获得所述源代码中的多个单词;

第二判断单元,用于根据所述测试件源代码的测试规则,依次判断所述单词,是否标识所述测试件测试的应用接口;

第四设定单元,用于当所述单词标识所述测试件的应用接口时,将所述单词作为所述测试件的应用接口节点;

查找单元,用于查找所述应用接口节点相关联的调用方法单词,且将所述单词作为调用方法节点;

构建单元,用于根据所述应用接口节点和调用方法节点,构建所述测试件的抽象语法树。

可选的,所述装置还包括:

第四确定模块,用于当所述第一应用接口集合中的一应用接口,在所述测试件的抽象语法树中未能查找到匹配的应用接口节点时,确定所述应用接口为所述测试件未能测试的应用接口。

可选的,所述装置还包括:

第五确定模块,用于当所述第一调用方法集合中的一调用方法,在所述测试件的抽象语法树中未能查找到匹配的调用方法节点时,确定所述调用方法为所述测试件未能测试的调用方法。

本申请还公开了一种测试件覆盖应用接口的分析装置,包括:

第三获取模块,用于获取测试件对应服务器发布的一应用接口;

构建模块,用于根据所述测试件的源代码构建抽象语法树,所述抽象语法树中至少包括所述测试能够测试的应用接口节点;

第三判断模块,用于判断所述应用接口,是否能在所述测试件的抽象语法树中查找到匹配的应用接口节点;

第六确定模块,用于当所述应用接口能在所述测试件的抽象语法树中查找到匹配的应用接口节点时,确定所述测试件覆盖所述应用接口;

第七确定模块,用于当所述应用接口未能在所述测试件的抽象语法树中查找到匹配的应用接口节点时,确定所述测试件未覆盖所述应用接口。

本申请的有益效果包括:在本申请实施例中,首先获取一测试件对应服器发布的第一应用接口集合;然后根据所述测试件源代码的测试规则,确定所述测试件能够测试的第二应用接口集合;再然后确定所述第一应用接口集合与所述第二应用接口集合的交集;最后,分析所述测试件的应用接口覆盖率,所述应用接口覆盖率=交集中应用接口的数目/第一应用接口集合中应用接口的数目。由上可见,在本申请实施例中,可分析一测试件覆盖其对应服务器所发布应用接口的比例。

附图说明

为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,对于本领域普通技术人员而言,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。

图1为本申请实施例提供的远程调用平台的示意图;

图2为本申请实施例提供的测试件测试应用接口的示意图;

图3为本申请实施例提供的测试件覆盖率的分析方法的一流程图;

图4为本申请实施例提供的测试件覆盖率的分析方法的另一流程图;

图5为本申请实施例提供的测试件覆盖率的分析方法的又一流程图;

图6为本申请实施例提供的测试件覆盖率的分析方法的另一流程图;

图7为本申请实施例提供的测试件覆盖率的分析方法的又一流程图;

图8为本申请实施例提供的测试件的抽象语法树的示意图;

图9为本申请实施例提供的测试件覆盖率的分析方法的另一流程图;

图10为本申请实施例提供的测试件覆盖率的分析方法的又一流程图;

图11为本申请实施例提供的测试件覆盖率的分析方法的另一流程图;

图12为本申请实施例提供的测试件覆盖率的分析装置的一结构示意图;

图13为本申请实施例提供的测试件覆盖率的分析装置的又一结构示意图;

图14为本申请实施例提供的测试件覆盖率的分析装置的另一结构示意图;

图15为本申请实施例提供的测试件覆盖率的分析装置的又一结构示意图;

图16为本申请实施例提供的测试件覆盖率的分析装置的另一结构示意图;

图17为本申请实施例提供的测试件覆盖率的分析装置的又一结构示意图;

图18为本申请实施例提供的测试件覆盖率的分析装置的另一结构示意图;

图19为本申请实施例提供的测试件覆盖率的分析方法的另一流程图;

图20为本申请实施例提供的测试件覆盖应用接口的分析方法的一流程图;

图21为本申请实施例提供的测试件覆盖率的分析装置的另一结构示意图;

图22为本申请实施例提供的测试件覆盖应用接口的分析装置的一结构示意图。

具体实施方式

本申请实施例提供一种测试件覆盖率及覆盖应用接口的分析方法、装置,以分析一测试件覆盖其对应服务器所发布应用接口的比例。

首先对本申请实施例的测试件覆盖率的分析方法进行说明,如图3所示,所述方法至少包括:

步骤S31:获取测试件对应服务器发布的第一应用接口集合;

在本申请实施例中,可首先在远程调用平台的注册中心,获取该测试件对应服务器的应用接口发布数据;然后,在所述应用接口发布数据中,确定所述服务器发布的第一应用接口集合。

在本申请实施例中,所述远程调用平台可具体为阿里巴巴内部所研发的HSF(High-Speed Service Framework)平台;所述测试件可包括多个测试用例,用于测试一服务器所发布的所有应用接口。

步骤S32:根据所述测试件源代码的测试规则,确定所述测试件能够测试的第二应用接口集合;

在本申请实施例中,当所述测试件源代码采用JAVA语言编写时,所述测试规则至少包括满足Spring注入的服务,以及,全路径名称可在远程调用平台的注册中心查找到。

步骤S33:确定所述第一应用接口集合与所述第二应用接口集合的交集;

在本申请实施例中,例如,第一应用接口集合包括应用接口A、应用接口B、应用接口C以及应用接口D;而第二应用接口集合包括应用接口A、应用接口B以及应用接口C;那么,所述第一应用接口集合与所述第二应用接口集合的交集为应用接口A、应用接口B以及应用接口C;

步骤S34:分析所述测试件的应用接口覆盖率,所述应用接口覆盖率=交集中应用接口的数目/第一应用接口集合中应用接口的数目。

在本申请实施例中,仍沿用上述举例,所述交集中的应用接口分别为应用接口A、应用接口B以及应用接口C,可见,交集中应用接口的数目为3个;而第一应用接口集合中的应用接口分别为应用接口A、应用接口B、应用接口C以及应用接口D,可见,第一应用接口集合中应用接口的数目为4个;所述测试件的应用接口覆盖率=交集中应用接口的数目/第一应用接口集合中应用接口的数目=3/4=75%。

在本申请实施例中,首先获取一测试件对应服器发布的第一应用接口集合;然后根据所述测试件源代码的测试规则,确定所述测试件能够测试的第二应用接口集合;再然后确定所述第一应用接口集合与所述第二应用接口集合的交集;最后,分析所述测试件的应用接口覆盖率,所述应用接口覆盖率=交集中应用接口的数目/第一应用接口集合中应用接口的数目。由上可见,在本申请实施例中,可分析一测试件覆盖其对应服务器所发布应用接口的比例。

在本申请的另一可行实施例中,如图4所示,上述所有实施例中的步骤S33可至少包括:

步骤S41:依次判断所述第一应用接口集合中的每个应用接口,是否在所述第二应用接口集合中查找到;如果是,执行步骤S42;否则,结束流程。

在本申请实施例中,仍沿用上述举例,第一应用接口集合包括应用接口A、应用接口B、应用接口C以及应用接口D,第二应用接口集合包括应用接口A、应用接口B以及应用接口C;那么,在本申请实施例中,上述所有实施例中的步骤S41可具体为:依次判断所述第二应用接口集合中的应用接口A、应用接口B、应用接口C以及应用接口D是否在所述第二应用接口集合中查找到;可见,应用接口A、应用接口B以及应用接口C可在所述第二应用接口集合中查找到,因此,将所述应用接口A、应用接口B以及应用接口C加入至所述交集中。

在本申请具体实施例中,可具体在所述第一应用接口集合中,获取每个应用接口的名称;然后判断所述名称能否在所述第二应用接口集合中查找到;如果可查找到,将所述名称所对应的应用接口,加入至所述交集中。

步骤S42:将所述应用接口加入至所述交集。

由上可见,在本申请实施例中,可确定所述交集中的应用接口。

在本申请的又一可行实施例中,如图5所示,上述所有实施例中的步骤S32可具体包括:

步骤S51:扫描所述测试件的源代码,获得所述源代码中的多个单词;

在本申请实施例中,例如一测试件的源代码用JAVA语言编写,其具体的程序代码,如下所示:

当对上述源代码执行步骤S51时,可得到源代码中的“HelloWorldService”以及“strMessage”等单词。

步骤S52:根据所述测试件源代码的测试规则,依次判断所述单词是否标识所述测试件测试的应用接口;如果是,执行步骤S53;否则,结束流程。

在本申请实施例中,当所述源代码采用JAVA语言编写,所述测试规则可包括:满足Spring注入服务,以及,全路径名称可在远程调用平台的注册中心查找到。

在本申请实施例中,仍沿用上述举例,可得到,上述源代码中的“HelloworldService”单词满足Spring注入的服务;此时需进一步查找“HelloworldService”单词的全路径名称“com.alibaba.test.HelloworldService”能否在远程调用平台的注册中心查找到;如果可以查找到,表示“HelloworldService”可标识所述测试件测试的一应用接口;

在本申请具体实施例中,“HelloworldService”可具体为一应用接口的名称。

步骤S53:将所述单词所标识的应用接口,加入至所述第二应用接口集合。

由上可见,在本申请实施例中,可确定一测试件可测试的第二应用接口集合。

在本申请的另一可行实施例中,如图6所示,上述所有实施例中的方法,还可包括:

步骤S61:确定所述第一应用接口集合中每个应用接口相关联的调用方法。

在本申请实施例中,可在所述测试件对应服务器的应用接口发布数据中,确定所述服务器发布的第一应用接口集合后;再确定所述第一应用接口集合中的每个应用接口下所发布的调用方法,即每个应用接口相关联的调用方法。

由上可见,在本申请实施例中,可确定第一应用接口集合中每个应用接口相关联的调用方法。

在本申请的又一可行实施例中,上述所有实施例中的所述测试件能够测试的第二应用接口集合是从所述测试件的AST(Abstract Syntax Tree,抽象语法树)中获得的;如图7所示,上述所有实施例中的步骤S32可包括:

步骤S71:扫描所述测试件的源代码,获得所述源代码中的多个单词;

在本申请实施例中,仍沿用上述举例,一测试件的源代码,如下所示:

同样,如上述,通过扫描所述源代码,可得到源代码中的“HelloWorldService”以及“strMessage”等单词。

步骤S72:根据所述测试件源代码的测试规则,依次判断所述单词,是否标识所述测试件测试的应用接口;如果是,执行步骤S73;否则,结束流程;

在本申请实施例中,当所述源代码采用JAVA语言编写时,所述测试规则可包括:满足Spring注入服务,以及,全路径名称可在远程调用平台的注册中心查找到。可得到,上述源代码中的“HelloworldService”单词满足Spring注入的服务,此时需进一步查找“HelloworldService”单词的全路径名称“com.alibaba.test.HelloworldService”能否在远程调用平台的注册中心查找到;如果可以查找到,表示“HelloworldService”可标识所述测试件测试的一应用接口。

步骤S73:将所述单词作为所述测试件的应用接口节点;

步骤S74:查找所述应用接口节点相关联的调用方法单词,且将所述单词作为调用方法节点;

在本申请实施例中,可具体在所述测试例的源代码中查找所述应用接口节点相关联的调用方法单词;也可在扫描获得的多个单词中,查找所述应用接口相关联的调用方法单词。

在本申请实施例中,从上述源代码中,可以看出,与所述“HelloworldService”单词相关联的调用方法单词为“say hello”。

步骤S75:根据所述应用接口节点和调用方法节点,构建所述测试件的AST。

在本申请实施例中,利用所述应用接口节点““HelloworldService”,以及,调用方法节点“say hello”构建的AST可具体如图8所示。

由上可见,采用本申请实施例,可构建一测试件的AST。

在本申请的又一可行实施例中,如图9所示,上述所有实施例中的步骤S33可包括:

步骤S91:依次判断所述第一应用接口集合中的每个应用接口,是否在所述AST中查找到匹配的应用接口节点;如果是,执行步骤S92;否则,结束流程。

在本申请实施例中,可具体在确定第一应用接口集合中的每个应用接口后,判断在所述AST中,能否查找到与所述应用接口名称相一致的应用接口节点;

步骤S92:将所述应用接口加入至所述交集。

由上可见,采用本申请实施例,可确定所述交集中的应用接口。

在本申请的又一可行实施例中,如图10所示,上述所有实施例中的方法,还包括:

步骤S101:依次判断所述第一应用接口集合中的每个应用接口相关联的调用方法,能否在所述AST中查找到匹配的调用方法节点;如果能,执行步骤S102;否则,结束流程;

在本申请实施例中,调用方法与所述调用方法节点相匹配包括:所述调用方法相关联的应用接口与所述调用方法节点相关联的应用接口节点相匹配、所述调用方法的名称、输入参数个数以及输入参数类型与所述调用方法节点的名称、输入参数个数以及输入参数类型均一致;

仍沿用上述举例,从所述源代码中可以得出:所述调用方法的名称为“sayHello”,输入参数类型为“String”,输入参数值为“strMessage”,输入参数个数为1。

同样,结合图8的AST,可以得出,该AST中的调用方法名称为“sayHello”输入参数类型为“String”,输入参数值为“strMessage”,输入参数个数为1(即所述AST中String的个数)。

步骤S102:将所述调用方法,作为所述测试能够测试的调用方法;

步骤S103:分析所述测试件的调用方法覆盖率,所述调用方法覆盖率=能够测试的调用方法数目/第一应用接口集合中所有应用接口相关联的调用方法数目。

在本申请实施例中,可具体将第一应用接口集合中所有应用接口相关联的调用方法加入一集合中;将所述测试件能够测试的调用方法加入另一集合中;所述测试件的调用方法覆盖率为两个集合中应用接口数目的比值。

由上可见,在本申请实施例中,可分析出一测试件覆盖调用方法的比例。

在本申请的另一可行实施例中,公开了另一种测试件覆盖率的分析方法,具体如下:

针对一测试件,构建所述测试件的AST,如图11所示,其具体构建过程如下:

将一测试件的源代码,输入至语法分析器;语法分析器从左至右逐个字符的对源代码进行扫描,产生多个单词,将多个单词发送至单词分析器;所述单词分析器会依据应用接口测试文法决定所述单词是否加入AST,如果满足测试文法,则输出;如果不满足,则加入单词上下文,而满足文法的单词,将在所述单词上下文中查找相关联的单词。最后,根据所输出的单词,以及单词上下文中相关联的单词,构建AST。

在构建完成所述AST后,分析一测试件覆盖率的具体过程如下:

步骤A:在远程调用平台的注册中心,查找一测试件对应服务器发布的应用接口发布数据Si,以及每个接口下发布的方法集合Mi;

步骤B:遍历集合Si,取集合中的每个接口名去构建好的AST中查找该单词,如果找到则转到步骤3,否则计算下一个接口;

步骤C:在AST中取该节点对应接口下的所有方法节点加入集合mi,比较Mi和mi中的每个方法的方法名以及方法的输入参数个数和输入参数类型,如果一致则转到步骤4,否则计算下一个方法;

步骤D:将满足条件的方法和对应接口名加入集合Ci,如果Ci中已存在该接口和方法则不加入;

步骤E:计算该测试件的接口覆盖率:Ci中的接口数/Si的接口数,该测试件的方法覆盖率:Ci中的方法数/Si*Mi中所有的方法数。

目前,本申请的测试件覆盖率的分析方法,已应用于150多个测试件,2000多个应用接口,上万个调用方法,覆盖率统计准确性高达98%以上。

在本申请的另一可行实施例中,还公开了一种测试件覆盖率的分析方法,如图19所示,所述方法至少包括:

步骤S191:获取测试件对应服务器发布的第一应用接口集合;

步骤S192:依次判断所述第一应用接口集合中的每个应用接口,是否能在所述测试件的抽象语法树中查找到匹配的应用接口节点;所述抽象语法树为预先根据所述测试件的源代码所构建的,所述抽象语法树中至少包括所述测试能够测试的应用接口节点;如果是,执行步骤S193,否则结束流程;

步骤S193:将所述应用接口作为所述测试件能够测试的应用接口;

步骤S194:分析所述测试件的应用接口覆盖率,所述应用接口覆盖率=所述测试件能够测试的应用接口数目/第一应用接口集合中应用接口的数目。

在本申请实施例中,首先获取一测试件对应服器发布的第一应用接口集合;然后依次判断所述第一应用接口集合中的每个应用接口,是否能在所述测试件的抽象语法树中查找到匹配的应用接口节点;如果是,确将所述应用接口作为所述测试件能够测试的应用接口;最后,分析所述测试件的应用接口覆盖率,所述应用接口覆盖率=所述测试件能够测试的应用接口数目/第一应用接口集合中应用接口的数目;由上可见,在本申请实施例中,可分析一测试件覆盖其对应服务器所发布应用接口的比例。

在本申请的另一可行实施例中,所述方法还包括:

A1:获取所述测试件对应服务器发布的第一调用方法集合,所述第一调用方法集合为所述服务器在所述第一应用接口集合中的应用接口下发布的;

B1:依次判断所述第一调用方法集合中的每个调用方法,能否在所述测试件的抽象语法树中查找到相匹配的调用方法节点;

C1:如果能,将所述调用方法作为所述测试件能够测试的调用方法;

D1:分析所述测试件的调用方法覆盖率,所述调用方法覆盖率=所述测试件能够测试的调用方法的数目/第一应用接口集合中应用接口的数目。

由上可见,在本申请实施例中,还可分析一测试件覆盖调用方法的比例。

在本申请的又一可行实施例中,上述所有实施例中的“根据所述测试件的源代码构建所述测试件的抽象语法树”,包括:

A2:扫描所述测试件的源代码,获得所述源代码中的多个单词;

B2:根据所述测试件源代码的测试规则,依次判断所述单词,是否标识所述测试件测试的应用接口;

C2:如果所述单词标识所述测试件的应用接口,将所述单词作为所述测试件的应用接口节点;

D2:查找所述应用接口节点相关联的调用方法单词,且将所述单词作为调用方法节点;

E2:根据所述应用接口节点和调用方法节点,构建所述测试件的抽象语法树。

由上可见,在本申请实施例中,可构建一测试件的抽象语法树。

在本申请的又一可行实施例中,上述所有实施例中的方法,还可包括:

如果所述第一应用接口集合中的一应用接口,在所述测试件的抽象语法树中未能查找到匹配的应用接口节点,确定所述应用接口为所述测试件未能测试的应用接口。

如果所述第一调用方法集合中的一调用方法,在所述测试件的抽象语法树中未能查找到匹配的调用方法节点,确定所述调用方法为所述测试件未能测试的调用方法。

由上可见,在本申请实施例中,还可确定一测试件未能测试的应用接口或调用方法。

本申请还公开了一种测试件覆盖应用接口的分析方法,如图20所示,所述方法至少包括:

步骤S200:获取测试件对应服务器发布的一应用接口;

步骤S201:判断所述应用接口,是否能在所述测试件的抽象语法树中查找到匹配的应用接口节点,所述抽象语法树为预先根据所述测试的源代码所构建的,所述AST中至少包括所述测试件能够测试的应用接口节点;如果能,执行步骤S202,否则,执行步骤S203;

步骤S202:确定所述测试件覆盖所述应用接口;

步骤S203:确定所述测试件未能覆盖所述应用接口。

由上可见,在本申请实施例中,可确定一应用接口是否被测试件覆盖。

在本申请的另一可行实施例中,所述AST中还包括所述测试件能够测试的调用方法节点,上述所有实施例中的方法还可包括:

A4:获取测试件对应服务器发布的一调用方法;

B4:判断所述调用方法,是否能在所述测试件的抽象语法树中查找到匹配的调用方法节点;

C4:如果所述调用方法能在所述抽象树中查找到匹配的调用方法节点,确定所述测试件覆盖所述调用方法;

D4:如果所述调用方法未能在所述抽象树中查找到匹配的调用方法节点,确定所述测试件未能覆盖所述调用方法。

由上可见,在本申请实施例中,可确定一调用方法是否被测试件覆盖。

在本申请的另一可行实施例中,上述所有实施例中的方法,还可包括:确定所述测试件对应服务器发布的所有应用接口;

分析所述测试件的应用接口覆盖率,所述应用接口覆盖率=所述测试件覆盖的应用接口的数目/所述服务器发布的所有应用接口的数目;

和/或,

确定所述测试件对应服务器发布的所有调用方法;

分析所述测试件的调用方法覆盖率,所述调用方法覆盖率=所述测试件覆盖的调用方法的数目/所述服务器发布的所有调用方法的数目;

由上可见,采用本申请实施例所公开的方法,可确定一测试件的应用接口覆盖率和/或调用方法覆盖率。

通过以上的方法实施例的描述,所属领域的技术人员可以清楚地了解到本申请可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:只读存储器(ROM)、随机存取存储器(RAM)、磁碟或者光盘等各种可以存储程序代码的介质。

与本申请提供的测试件覆盖率的分析方法实施例相对应,本申请还提供了一种测试件覆盖率的分析装置,如图12所示,至少包括:

第一获取模块121,用于获取测试件对应服务器发布的第一应用接口集合;

第一确定模块122,用于根据所述测试件源代码的测试规则,确定所述测试件能够测试的第二应用接口集合;

第二确定模块123,用于确定所述第一应用接口集合与所述第二应用接口集合的交集;

第一分析模块124,用于分析所述测试件的应用接口覆盖率,所述应用接口覆盖率=交集中应用接口的数目/第一应用接口集合中应用接口的数目。

在本申请实施例中,第一第一获取模块121,用于获取一测试件对应服器发布的第一应用接口集合;第一确定模块122,用于根据所述测试件源代码的测试规则,确定所述测试件能够测试的第二应用接口集合;第二确定模块123,用于确定所述第一应用接口集合与所述第二应用接口集合的交集;第一分析模块124,用于分析所述测试件的应用接口覆盖率,所述应用接口覆盖率=交集中应用接口的数目/第一应用接口集合中应用接口的数目。由上可见,在本申请实施例中,可分析一测试件覆盖其对应服务器所发布应用接口的比例。

在本申请的另一可行实施例中,如图13所示,上述所有实施例中的第一确定模块122可包括:

第一判断单元131,用于依次判断所述第一应用接口集合中的每个应用接口,是否在所述第二应用接口集合中查找到;

第一加入单元132,用于当所述应用接口在所述第二应用接口集合中查找到时,将所述应用接口加入至所述交集。

由上可见,在本申请实施例中,可确定第一应用接口集合和第二应用接口集合的交集。

在本申请的又一可行实施例中,如图14所示,上述所有实施例中的第二确定模块123可包括:

扫描单元141,用于扫描所述测试件的源代码,获得所述源代码中的多个单词;

第二判断单元142,用于根据所述测试件源代码的测试规则,依次判断所述单词是否标识所述测试件测试的应用接口;

第二加入单元143,用于将所述单词所标识的应用接口,加入至所述第二应用接口集合。

由上可见,采用本申请的装置,可确定所述测试件能够测试的第二应用接口集合。

在本申请的另一可行实施例中,如图15所示,上述所有实施例中的装置还可包括:

第三确定模块151,用于确定所述第一应用接口集合中每个应用接口相关联的调用方法。

由上可见,采用本申请的装置,可确定第一应用接口集合中每个应用接口相关联的调用方法。

在本申请的又一可行实施例中,如图16所示,上述所有实施例中的测试件能够测试的第二应用接口是从所述测试件的抽象语法树中获得的;第二确定模块123可包括:

扫描单元141,用于扫描所述测试件的源代码,获得所述源代码中的多个单词;

第二判断单元142,用于根据所述测试件源代码的测试规则,依次判断所述单词,是否标识所述测试件测试的应用接口;

第二加入单元143,用于当所述单词标识所述测试件测试的应用接口时,将所述单词作为所述测试件的应用接口节点;

查找单元144,用于查找所述应用接口节点相关联的调用方法节点;

构建单元145,用于根据所述应用接口节点和调用方法节点,构建所述测试件的AST。

由上可见,采用本申请的装置,可构建一测试件的AST。

在本申请的另一可行实施例中,如图17所示,上述所有实施例中的第一确定模块122,可包括:

第三判断单元171,用于依次判断所述第一应用接口集合中的每个应用接口,是否在所述AST中查找到匹配的调用方法节点;

第三加入单元172,用于当所述应用接口查找到匹配的调用方法节点时,将所述应用接口加入至所述交集。

由上可见,可确定所述交集中的应用接口。

在本申请的又一可行实施例中,如图18所示,上述所有实施例中的所述装置还包括:

第四判断单元181,用于依次判断所述第一应用接口集合中的每个应用接口相关联的调用方法,能否在所述AST中查找到匹配的调用方法节点;

第一设定单元182,用于当所述调用方法查找到匹配的调用方法节点时,将所述调用方法,作为所述测试能够测试的调用方法;

分析单元183,分析所述测试件的调用方法覆盖率,所述调用方法覆盖率=能够测试的调用方法数目/第一应用接口集合中所有应用接口相关联的调用方法数目。

由上可见,采用本申请的装置,还可分析一测试件覆盖调用方法的比例。

本申请还公开了一种测试件覆盖率的分析装置,如图21所示,所述装置至少包括:

第一获取模块211,用于获取测试件对应服务器发布的第一应用接口集合;

构建模块212,用于根据所述测试件的源代码构建抽象语法树,所述抽象语法树中至少包括所述测试能够测试的应用接口节点;

第一判断模块213,用于依次判断所述第一应用接口集合中的每个应用接口,是否能在所述测试件的抽象语法树中查找到匹配的应用接口节点;

第二设定单元214,用于当一应用接口在所述抽象语法树中查找到匹配的应用接口节点时,将所述应用接口作为所述测试件能够测试的应用接口;

第二分析模块215,用于分析所述测试件的应用接口覆盖率,所述应用接口覆盖率=所述测试件能够测试的应用接口数目/第一应用接口集合中应用接口的数目。

在本申请实施例中,首先获取一测试件对应服器发布的第一应用接口集合;然后依次判断所述第一应用接口集合中的每个应用接口,是否能在所述测试件的抽象语法树中查找到匹配的应用接口节点;如果是,确将所述应用接口作为所述测试件能够测试的应用接口;最后,分析所述测试件的应用接口覆盖率,所述应用接口覆盖率=所述测试件能够测试的应用接口数目/第一应用接口集合中应用接口的数目;由上可见,在本申请实施例中,可分析一测试件覆盖其对应服务器所发布应用接口的比例。

在本申请的另一可行实施例中,所述抽象语法树中还包括所述测试件能够测试的调用方法节点,所述装置还包括:

第二获取模块,用于获取所述测试件对应服务器发布的第一调用方法集合,所述第一调用方法集合为所述服务器在所述第一应用接口集合中的应用接口下发布的;

第二判断模块,用于依次判断所述第一调用方法集合中的每个调用方法,能否在所述测试件的抽象语法树中查找到相匹配的调用方法节点;

第三设定单元,用于当一调用方法在所述抽象语法树中查找到匹配的调用方法节点时,将所述调用方法作为所述测试件能够测试的调用方法;

第三分析模块,用于分析所述测试件的调用方法覆盖率,所述调用方法覆盖率=所述测试件能够测试的调用方法的数目/第一应用接口集合中应用接口的数目。

由上可见,在本申请实施例中,可分析一测试件的调用方法覆盖率。

在本申请的又一可行实施例中,所述构建模块212包括:

扫描单元,用于扫描所述测试件的源代码,获得所述源代码中的多个单词;

第二判断单元,用于根据所述测试件源代码的测试规则,依次判断所述单词,是否标识所述测试件测试的应用接口;

第四设定单元,用于当所述单词标识所述测试件的应用接口时,将所述单词作为所述测试件的应用接口节点;

查找单元,用于查找所述应用接口节点相关联的调用方法单词,且将所述单词作为调用方法节点;

构建单元,用于根据所述应用接口节点和调用方法节点,构建所述测试件的抽象语法树。

由上可见,在本申请实施例中,可构建一测试件的AST。

在本申请的又一可行实施例中,所述装置还包括:

第四确定模块,用于当所述第一应用接口集合中的一应用接口,在所述测试件的抽象语法树中未能查找到匹配的应用接口节点时,确定所述应用接口为所述测试件未能测试的应用接口。

第五确定模块,用于当所述第一调用方法集合中的一调用方法,在所述测试件的抽象语法树中未能查找到匹配的调用方法节点时,确定所述调用方法为所述测试件未能测试的调用方法。

由上可见,在本申请实施例中,可确定一测试件未能测试的应用接口或调用方法。

本申请还公开了一种测试件覆盖应用接口的分析装置,如图22所示,所述装置还包括:

第三获取模块221,用于获取测试件对应服务器发布的一应用接口;

构建模块212,用于根据所述测试件的源代码构建抽象语法树,所述抽象语法树中至少包括所述测试能够测试的应用接口节点;

第三判断模块223,用于判断所述应用接口,是否能在所述测试件的抽象语法树中查找到匹配的应用接口节点;

第六确定模块224,用于当所述应用接口能在所述测试件的抽象语法树中查找到匹配的应用接口节点时,确定所述测试件覆盖所述应用接口;

第七确定模块225,用于当所述应用接口未能在所述测试件的抽象语法树中查找到匹配的应用接口节点时,确定所述测试件未覆盖所述应用接口;

在本申请的又一可行实施例中,上述所有实施例中的装置,还可包括:

第八确定模块,用于确定所述测试件对应服务器发布的所有应用接口;

第四分析模块,用于分析所述测试件的应用接口覆盖率,所述应用接口覆盖率=所述测试件覆盖的应用接口的数目/所述服务器发布的所有应用接口的数目;

和/或,

第九确定模块,用于确定所述测试件对应服务器发布的所有调用方法;

第五分析模块,用于分析所述测试件的调用方法覆盖率,所述调用方法覆盖率=所述测试件覆盖的调用方法的数目/所述服务器发布的所有调用方法的数目;

由上可见,采用本申请实施例所公开的方法,可确定一测试件的应用接口覆盖率和/或调用方法覆盖率。

需要说明的是,在本文中,诸如“第一”和“第二”等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。

以上所述仅是本申请的具体实施方式,使本领域技术人员能够理解或实现本申请。对这些实施例的多种修改对本领域的技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本申请的精神或范围的情况下,在其它实施例中实现。因此,本申请将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。

以上所述仅是本申请的具体实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本申请原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本申请的保护范围。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号