概述
代码覆盖率,是一种依靠计算测试过程中被执行源码占全部代码行的比例,进而度量测试用例对程序覆盖的情况,从而查漏补缺,完善软件质量的方法。
那么做代码覆盖率统计的意义是什么呢?通过研究代码覆盖率报告,一方面我们可以直观的发现没有被测试用例测试过的代码,另一方面也能发现开发人员在新版本中新增/修改了哪些代码,从而及时的更新测试用例来增加覆盖率:保证程序功能的覆盖度。
在具体的实施过程中,中通是如何将代码覆盖率运用到实践中的呢?本文将对此展开详细讨论。
中通代码覆盖率实现方案
在开始介绍具体的实现方案之前,我们先了解一下目前使用的代码覆盖率工具Jacoco。作为一款开源的覆盖率工具,它能够应用在java服务端项目,并直观的给出整个项目的测试覆盖情况。此外我们采用其无需改动源码的On-The-Fly插桩模式进行部署,可以在系统无感知的情况下,实时的收集代码覆盖率信息。
基于此方案,中通的代码覆盖率服务执行流程大致如下图所示:
如上图所示:
1. 项目发布时,Jacoco会将探针插桩入项目jvm中(用来记录测试人员在执行测试用例(手动/自动化用例)时的代码运行情况);
2. 项目发布完成后,发布平台(stellar)会将本次发布的版本相关信息(比如:git地址、分支信息、commitid等)推送给质控平台进行保存;