Java 覆盖率测试相关实践总结

发表于:2018-4-28 22:55

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:Tester_Ella (小敏)    来源:51testing软件测试网采编

#
java
分享:
  最近接手的新项目需要使用代码覆盖率进行辅助测试,所以结合之前项目的实践笔记及经验,把Java代码覆盖率相关的知识做了一个回顾和总结。
  我们一般都是用jacoco+jenkins进行代码覆盖率的统计和展示。从实践来看,变更代码覆盖率分析更贴合我们日常的使用场景。在版本迭代及回归测试阶段,可以采用黑盒测试+变更覆盖分析(白盒测试)的灰盒测试方法,完善测试场景,减少测试遗漏,保证测试的充分性。
  具体的jacoco的配置及jenkins的配置可以参考以下文档:
  jenkins+jacoco配置代码覆盖率
  Jacoco Code Coverage
  附我们项目中使用的build.xml配置:
  <?xml version="1.0" ?>
  <project name="Example" xmlns:jacoco="antlib:org.jacoco.ant" basedir="." default="rebuild">
      <!--Jacoco文件路径-->
      <property name="jacocoantPath" value="/home/test/tools/jacoco-0.7.4/lib/jacocoant.jar"/>
      <!--最终生成.exec文件的路径,Jacoco根据这个文件生成最终的报告-->
      <property name="jacocoexecPath" value="/home/test/jenkins/workspace/Example-Coverage/jacoco_ci_report/exec/"/>
      <!--生成覆盖率报告的路径-->
      <property name="reportfolderPath" value="/home/test/jenkins/workspace/Example-Coverage/jacoco_ci_report/report/"/>
      <!--远程tomcat服务的ip-->
      <property name="server_ip" value="10.165.***.**"/>
      <!--jacocoagent服务打开的端口-->
      <property name="server_port" value="8035"/>
      <!--源代码路径-->
      <property name="checkOrderSrcpath" value="/home/test/jenkins/workspace/Example-Coverage/moduleName/src/main/java" />
      <!--.class文件路径-->
      <property name="checkOrderClasspath" value="/home/test/jenkins/workspace/Example-Coverage/moduleName/target/classes" />
      <tstamp>  
          <format property="stime" pattern="yyyy-MM-dd HH-mm-ss" locale="cn"/>  
      </tstamp> 
      <!--让ant知道去哪儿找Jacoco-->
      <taskdef uri="antlib:org.jacoco.ant" resource="org/jacoco/ant/antlib.xml">
          <classpath path="${jacocoantPath}" />
      </taskdef>
      <!--dump任务: 根据前面配置的ip地址和端口,访问目标tomcat服务,并生成.exec文件。-->
      <target name="dump">
          <jacoco:dump address="${server_ip}" reset="false" destfile="${jacocoexecPath}ExampleApiTest${stime}.exec" port="${server_port}" append="true" dump="true"/>
      </target>
      <!--merge指定的.exec文件-->
      <target name="merge_exec">
          <jacoco:merge destfile="${jacocoexecPath}ExampleApiTest-merge.exec">
              <fileset dir="${jacocoexecPath}" includes="ExampleApiTest*.exec" />
          </jacoco:merge>
      </target>
      <!--jacoco任务:根据前面配置的源代码路径和.class文件路径,及merge后生成的.exec文件,生成最终的html覆盖率报告-->
      <target name="report">
          <delete dir="${reportfolderPath}" />
          <mkdir dir="${reportfolderPath}" />
       <jacoco:report>
            <executiondata>
                <file file="${jacocoexecPath}ExampleApiTest-merge.exec" />
            </executiondata>
            <structure name="JaCoCo Report">
                <group name="Check Order related">           
                    <classfiles>
                        <fileset dir="${checkOrderClasspath}" />
                    </classfiles>
                    <sourcefiles encoding="gbk">
                        <fileset dir="${checkOrderSrcpath}" />
                    </sourcefiles>
                </group>
            </structure>
            <html destdir="${reportfolderPath}" encoding="utf-8" />         
            <_xml destfile="${reportfolderPath}/jacoco_report.xml" encoding="utf-8" />
      </jacoco:report>
      </target>
      <target name="rebuild" depends="dump,merge_exec,report"></target>
  </project>
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号