代码覆盖率报告的生成方法及装置的制造方法

文档序号:9865396阅读:326来源:国知局
代码覆盖率报告的生成方法及装置的制造方法
【技术领域】
[0001]本发明涉及测试领域,特别是一种代码覆盖率报告的生成方法及装置。
【背景技术】
[0002]代码覆盖率(codecoverage)是反映测试用例对被测程序覆盖程度的重要指标,也是衡量测试完整性的一个参考值。无论是单元测试、API (Applicat1n ProgramInterface,应用程序接口)测试还是功能性测试,最终都是调用了程序的代码。测试结束后,通过代码覆盖率数据,可以知道测试是否充分,测试的弱点在哪些方面,进而可以指导开发者或测试者设计能够增加覆盖率的测试用例。
[0003]Java代码覆盖率的测试主要使用开源工具Jacoco( Java code coverage),其测试的流程为:1)构建android项目,同时插入用于生成覆盖率数据的代码;2)执行测试用例进行测试;3)在测试完成后,触发数据导出接口,导出覆盖率数据;4)生成覆盖率报告。
[0004]然而,目前生成覆盖率报告需要将Jacoco集成到第三方构建工具,在项目构建中做相应的环境配置。以android项目常用的构建工具Gradle为例,首先将获取的覆盖率数据文件存放到项目的build/outputs/code-coverage/connected路径下,然后在构建文件1311;[1(!.8作(116中创建1116作6(103七3和」3(30(30168七1^口01'1:任务,需要在这两个任务中注入项目源码、编译后文件(在源码中插入覆盖率统计的代码后,需要重新编译,并保存编译后的文件)、覆盖率数据合并文件和报告生成等路径信息。完成上述gradle配置后,执行gradlejacocoTestReport命令生成报告(这里,具体的过程是执行jacocoTestReport任务,调用Jacoco接口,由Jacoco工具接收覆盖率数据合并文件,并根据路径查找源码等信息,生成覆盖率报告),报告存放在项目根目录下的build/reports/ jacoco/jacocoTestReport目录中。图1所示为现有技术中依赖Gradle工具生成报告的过程,其中虚线框部分为Gradle工具代理部分。
[0005]除了Gradle工具,其它常用的第三方工具,如Ant、Maven等都可以集成Jacoco源码。通过它们生成覆盖率报告的过程,都是以第三方工具调用Jacoco提供的接口实现的,由于项目构建使用的第三方工具存在差异,每种工具在构建任务时需要编写的代码和配置文件都存在差异,依据工具的类型实现过程也各不相同,使其可重用性差。

【发明内容】

[0006]鉴于上述问题,提出了本发明以便提供一种克服上述问题或者至少部分地解决上述问题的代码覆盖率报告的生成方法及相应的装置。
[0007]依据本发明的一方面,提供了一种代码覆盖率报告的生成方法,应用于代码覆盖率工具,所述代码覆盖率工具集成有代码覆盖率数据合并的功能和代码覆盖率报告生成的功能,所述代码覆盖率数据合并的功能被封装为第一任务,所述代码覆盖率报告生成的功能被封装为第二任务,所述方法包括:
[0008]当接收到代码覆盖率报告的生成指令时,获取被测程序的源码、所述被测程序的代码以及在测试所述被测程序的过程中生成的一个或多个代码覆盖率数据文件;
[0009]调用并执行所述代码覆盖率工具中封装的所述第一任务,对所述一个或多个代码覆盖率数据文件进行合并处理,得到合并后的代码覆盖率数据文件;
[0010]调用并执行所述代码覆盖率工具中封装的所述第二任务,读取所述合并后的代码覆盖率数据文件,并根据所述合并后的代码覆盖率数据文件、所述被测程序的源码以及所述被测程序的代码,生成代码覆盖率报告。
[0011]可选地,所述获取被测程序的源码、所述被测程序的代码以及在测试所述被测程序的过程中生成的一个或多个代码覆盖率数据文件,包括:
[0012]获取资源路径配置文件,从所述资源路径配置文件中分别查找所述被测程序的源码、所述被测程序的代码以及在测试所述被测程序的过程中生成的一个或多个代码覆盖率数据文件的路径信息;
[0013]根据查找到的所述路径信息,对应获取所述被测程序的源码、所述被测程序的代码以及所述一个或多个代码覆盖率数据文件。
[0014]可选地,所述第一任务和所述第二任务被整合到所述代码覆盖率工具的源码中,通过封装生成可执行的Jar文件;
[0015]调用并执行所述代码覆盖率工具中封装的所述第一任务,包括:
[0016]调用所述Jar文件,执行所述Jar文件中封装的所述第一任务。
[0017]可选地,调用并执行所述代码覆盖率工具中封装的所述第二任务,包括:
[0018]调用所述Jar文件,执行所述Jar文件中封装的所述第二任务。
[0019]可选地,在得到合并后的代码覆盖率数据文件之后,所述方法还包括:将所述合并后的代码覆盖率数据文件存储至指定位置;
[0020]读取所述合并后的代码覆盖率数据文件,包括:
[0021]从所述指定位置处,读取所述合并后的代码覆盖率数据文件。
[0022]可选地,所述资源路径配置文件中还配置了所述代码覆盖率报告的生成格式;
[0023]根据所述合并后的代码覆盖率数据文件、所述被测程序的源码以及所述被测程序的代码,生成代码覆盖率报告,包括:
[0024]从所述资源路径配置文件中,获取所述代码覆盖率报告的生成格式;
[0025]对比分析所述合并后的代码覆盖率数据文件、所述被测程序的源码以及所述被测程序的代码,得到代码覆盖率的统计结果;
[0026]按照所述生成格式,对所述代码覆盖率的统计结果进行格式处理,生成所述代码覆盖率报告。
[0027]可选地,所述代码覆盖率的统计结果包括下列至少之一:
[0028]指令覆盖率、分支覆盖率、圈复杂度覆盖率、行覆盖率、方法覆盖率、类覆盖率。
[0029]依据本发明的另一方面,还提供了一种代码覆盖率报告的生成装置,应用于代码覆盖率工具,所述代码覆盖率工具集成有代码覆盖率数据合并的功能和代码覆盖率报告生成的功能,所述代码覆盖率数据合并的功能被封装为第一任务,所述代码覆盖率报告生成的功能被封装为第二任务,所述装置包括:
[0030]获取模块,适于当接收到代码覆盖率报告的生成指令时,获取被测程序的源码、所述被测程序的代码以及在测试所述被测程序的过程中生成的一个或多个代码覆盖率数据文件;
[0031]合并模块,适于调用并执行所述代码覆盖率工具中封装的所述第一任务,对所述一个或多个代码覆盖率数据文件进行合并处理,得到合并后的代码覆盖率数据文件;
[0032]生成模块,适于调用并执行所述代码覆盖率工具中封装的所述第二任务,读取所述合并后的代码覆盖率数据文件,并根据所述合并后的代码覆盖率数据文件、所述被测程序的源码以及所述被测程序的代码,生成代码覆盖率报告。
[0033]可选地,所述获取模块还适于:
[0034]获取资源路径配置文件,从所述资源路径配置文件中分别查找所述被测程序的源码、所述被测程序的代码以及在测试所述被测程序的过程中生成的一个或多个代码覆盖率数据文件的路径信息;
[0035]根据查找到的所述路径信息,对应获取所述被测程序的源码、所述被测程序的代码以及所述一个或多个代码覆盖率数据文件。
[0036]可选地,所述第一任务和所述第二任务被整合到所述代码覆盖率工具的源码中,通过封装生成可执行的Jar文件,所述合并模块还适于:
[°037 ]调用所述Jar文件,执行所述Jar文件中封装的所述第一任务。
[0038]可选地,所述生成模块还适于:
[0039]调用所述Jar文件,执行所述Jar文件中封装的所述第二任务。
[0040]可选地,所述装置还包括:
[0041]存储模块,适于在所述合并模块得到合并后的代码覆盖率数据文件之后,将所述合并后的代码覆盖率数据文件存储至指定位置;
[0042]所述生成模块,还适于从所述指定位置处,读取所述合并后的代码覆盖率数据文件。
[0043]可选地,所述资源路径配置文件中还配置了所述代码覆盖率报告的生成格式,所述生成模块还适于:
[0044]从所述资源路径配置文件中,获取所述代码覆盖率报告的生成格式;
[0045]对比分析所述合并后的代码覆盖率数据文件、所述被测程序的源码以及所述被测程序的代码,得到代码覆盖率的统计结果;
[0046]按照所述生成格式,对所述代码覆盖率的统计结果进行格式处理,生成所述代码覆盖率报告。
[0047]可选地,所述代码覆盖率的统计结果包括下列至少之一:
[0048]指令覆盖率、分支覆盖率、圈复杂度覆盖率、行覆盖率、方法覆盖率、类覆盖率。
[0049]本发明实施例提供的代码覆盖率工具集成有代码覆盖率数据合并的功能和代码覆盖率报告生成的功能,且代码覆盖率数据合并的功能被封装为第一任务,代码覆盖率报告生成的功能被封装为第二任务。当接收到代码覆盖率报告的生成指令时,获取被测程序的源码、被测程序的代码以及在测试被测程序的过程中生成的一个或多
当前第1页1 2 3 4 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1