功能测试代码覆盖率统计

简介

Jacoco是一款开源的覆盖率工具,可以嵌入Ant,Maven中,也可以使用JavaAgent技术监控Java程序,。可以很方便的收集测试过程中代码覆盖情况,能够很直观展现哪些代码已经测试过,哪些没有被测试,帮助我们有针对性地增加用例,提升测试质量

原理

配置步骤

  1. 安装ant和jacoco(现在betaD已经下载,直接将192.168.49.139服务器上三个文件夹copy到自己的应用服务器上即可)
  • /home/codeCov/apache-ant-1.10.1
  • /home/codeCov/jacoco

        –上面两个目录直接复制,不需要修改

  • /home/codeCov/report

         这个目录是我们要生成的覆盖率报告的路径,在该目录下创建一个被测应用的目录,将coreaccount_service目录下build.xml和run.sh复制过来

     2. 在/home/codeCov/jacoco目录下创建source目录,将开发代码拉到该目录下

     3. 修改build,xml文件

        该文件中每一行都有注释只需要修改以下几个个参数:

修改图中标注的地方,将其改成自己的路径,其中ip地址是tomcat所在服务的ip,端口号任意一个跟其它服务不冲突的值

4.修改run.sh

a)打通跟192.168.49.139的通道

b)修改以下命令:

cp -r /home/codeCov/report/coreaccount_service/coreaccount_report /opt/soft/tengine/html/mljr/

目的是将生成的报告放到139机器上,将路径改成自己的目录,目标路径:192.168.49.139:/opt/soft/tengine/html/mljr/

5.修改tomcat中catalina.sh文件

在JAVA_OPTS配置项中增加:

-javaagent:/home/codeCov/jacoco/lib/jacocoagent.jar=includes=*,destfile=/home/codeCov/report/coreaccount_service/jacoco.exec,append=true,output=tcpserver,port=1249,address=192.168.49.139

注意修改地址,ip和端口号

报告生成

第一步:重启tomcat服务: 目的是每次测试时,能准确统计本次测试的覆盖率

第二步:执行自动化或功能测试

第三步:执行sh run.sh

自动化测试部分目前已经配置到jenkins上了,可以自动下载代码=>构建被测试工程=>执行自动化用例=》生成覆盖率报告,具体配置参考“自动化执行”=>”生成代码覆盖率”

人工测试:需要构建工程,人工测试完成后,手动执行run.sh生成报告

测试报告

进入http://192.168.49.139/路径名/index.html如:账户报告地址:http://192.168.49.139/coreaccount_report/index.html

  • 指令覆盖:计数单元是单个java二进制代码指令,指令覆盖率提供了代码是否被执行的信息,度量完全 独立源码格式。
  • 分支覆盖率:度量if和switch语句的分支覆盖情况,计算一个方法里面的总分支数,确定执行和不执行的 分支数量。
  • 圈复杂度:在(线性)组合中,计算在一个方法里面所有可能路径的最小数目,缺失的复杂度同样表示测 试案例没有完全覆盖到这个模块。
  • 行覆盖率:度量被测程序的每行代码是否被执行,判断标准行中是否至少有一个指令被执行。
  • 方法覆盖率:度量被测程序的方法执行情况,是否执行取决于方法中是否有至少一个指令被执行。
  • 类覆盖率:度量计算class类文件是否被执行。

代码展示

  • 红色代码:代表从没有被任何测试执行过
  • 黄色代码:一般都是条件语句,一般都会有true、false两种情况,黄色代表只执行过一种情况,另一种没有被执行过
  • 绿色代码:表示该代码至少被执行过一次

注意事项:

1.我们在测试的时候,如果增加了用例,覆盖率如果没有变化,就要看一下新的用例是不是重复的,如果没用要去掉

2.如果某些代码没有覆盖到,说明我们测试用例不全,需要增加用例

3.并不是所有代码一定要覆盖到,比如某些异常处理的代码不好模拟

4.当增加测试用例后,覆盖率提升,需要看一下覆盖的代码是不是我们计划要走的分支

This entry was posted in 测试开发. Bookmark the permalink.