关于代码覆盖率测试

开始听到代码覆盖率这个词的时候只觉得不陌生但是至于是怎么个意思在哪看到过就不太记得了,当我开始去研究代码覆盖率测试工具时才进一步的去查,这才明白代码覆盖率是指:代码覆盖程度的一种度量方式,是描述程序中源代码被测试的比例和程度。可能这样说还是有些抽象。下面通过代码覆盖率的常用指标和测试工具上具体展示一下代码覆盖率:

一、常用指标

1、语句覆盖:被测试代码中的每一个可执行语句是否被执行到,语句覆盖是为“最弱的覆盖”,对一些控制结构的代码他不能真正表示是否完全覆盖到。

2、判定覆盖:度量程序中每一个判定的分支是否都被测试到。

3、条件覆盖:度量判定中的每个子表达式结构true和false是否被测试到。

注:由于判定覆盖和条件覆盖理解起来很不形象,就简单比较一下判定覆盖和条件覆盖:

int foo(int a, int b)

{

if (a < 10 || b < 10) // 判定

{

return 0; // 分支一

}

else

{

return 1; // 分支二

}

}

判定覆盖只需要考虑判定结果为true和false两种情况:

TestCaes1: a = 5, b=任意数字 覆盖了分支一

TestCaes2:a = 15, b = 15         覆盖了分支二

条件覆盖只需要考虑判定中的每一个条件表达式结果:

TestCase3: a = 5, b = 5       true, true

TestCase4: a = 15, b= 15   false, false

通过实例可以知道判定覆盖和条件覆盖的差别:判定覆盖是要求覆盖到每一个分支语句,而条件覆盖只是将条件表达式的结果true和false都测试到了就可以了。

4、路径覆盖:度量是否方法的每一个分支都被执行到了,也就是要求所有可能的分支都执行一遍。路径覆盖也被称作是最强的覆盖。

其实还有很多种覆盖方式,这里就不再详细介绍了。

二、代码覆盖率测试报告

由于项目是用maven管理的,自己对maven只是略知一二,对单元测试的工具也只是知道一点点儿皮毛,所以都是慢慢摸索,记得在看maven视频的时候听到过关于测试工具的使用,所以又回去看了看,最终选择了先用cobertura测试工具试一试:Cobertura是一种开源工具,通过检测基本地的代码,并观察在测试包运行时执行了哪些代码和没有执行哪些代码,来测量测试覆盖率,除了找出位测试到的代码并发现bug外,Cobertura还可以通过标记无用的。执行不到的代码来优化代码。

在maven中使用起来其实很方便,只需要在pom文件正添加相应的引用即可:

<!-- 代码覆盖率测试版本号控制******陈丽娜**start**** -->
	<cobertura.version>2.6</cobertura.version>
    <!-- 代码覆盖率测试版本号控制******陈丽娜**end***** -->

           <!-- 执行单元测试的插件*********陈丽娜******start***2015-2-10***** -->
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-surefire-plugin</artifactId>
				<version>${maven-surefire-plugin.version}</version>
				<configuration>
					<forkCount>3</forkCount>
					<reuseForks>true</reuseForks>
					<testFailureIgnore>true</testFailureIgnore>
				</configuration>
			</plugin>
            <!-- 执行单元测试的插件*********陈丽娜******end***2015-2-10***** -->

               <!-- 代码生成覆盖率报告*******陈丽娜****start*******2015-2-10************ -->
               <plugin>
			        <groupId>org.codehaus.mojo</groupId>
			        <artifactId>cobertura-maven-plugin</artifactId>
			        <version>${cobertura.version}</version>
			         <configuration>
					          <formats>
					            <format>html</format>
					            <format>xml</format>
					          </formats>
			        </configuration>

			    <executions>

                <execution>
                    <id>cobertura</id>
                    <phase>test</phase>
                    <goals>
                        <goal>cobertura</goal>
                    </goals>
                </execution>
            </executions>

           </plugin>
      <!-- 代码生成覆盖率报告*******陈丽娜****end********2015-2-10************ -->

这样在执行完test之后就可以在生成测试报告的时候同时在target的site中同时生成代码覆盖率测试报告:

打开index可以看到代码股概率报告:

点进去可以看到具体的代码覆盖情况:

在一篇博客中看到这样一句话:Cobertura是敏捷程序员工具箱中新增的一个重要工具。通过生成代码覆盖率的具体数值,Cobertura将单元测试从一种艺术转变为一门科学。它可以寻找测试覆盖中的空隙,直接找到 bug。测量代码覆盖率使您可以获得寻找并修复 bug所需的信息,从而开发出对每个人来说都更健壮的软件。

时间: 2024-10-12 05:10:17

关于代码覆盖率测试的相关文章

数据库代码覆盖率测试功能测试建模压测profiling;

数据库管理系统(简称 DBMS)无疑是任何数据密集型应用程序当中最为重要的组成部分,其肩负着处理大量数据以及高复杂性工作负载的重任.然而,数据库管理系统本身却往往难于管理,因为其中通常包含数百种配置"旋钮",用于控制诸如缓存内存分配量以及存储介质数据写入频率等要素.各类企业一般需要聘请专业人士以协助相关调配工作,但对于大多数企业而言,此类专业人才的开价亦相当高昂.而实际上,DBA所面临的挑战还远不止这些. 而今天一则名为"OtterTune"的机器学习DBMS系统刷

iOS代码覆盖率测试工具

基于lcov-1.11的:CodeCoverage4iOS 阅读目录 环境准备 Xcode工程配置 构建并安装程序 收集代码覆盖率 过滤结果 合并多个Coverage.info?件?成覆盖率报告: 参考文献 iOS code coverage test tool. 基于lcov-1.11的iOS代码覆盖率测试工具,适用与iOS真机与模拟器. 环境准备 Mac OS X :10.8.5+ 建议10.9 Xcode :5.0+ 建议6.1 回到顶部 Xcode工程配置 拷贝CodeCoverage4

基于OpenCover进行代码覆盖率测试

最近开始接触白盒测试,开发同事对OpenCover(开源C#代码覆盖率统计工具).ReportGenerator(将XML报告转换成HTML的工具)二次开发出一个代码覆盖率的工具.下面基于该工具,记录对OpenCover.ReportGenerator等的理解. 未使用OpenCover时,被测程序的正常运行流程: 使用OpenCover.ReportGenerator后,被测程序的运行流程: OpenCover中的Profiler启动运行被测程序的程序或服务-->运行被测程序-->得到运行结

Cobertura代码覆盖率测试

优化代码结构,减少冗余代码: 提高测试质量,提升整体软件质量: 提高测试人员测试分析能力,提高测试设计质量: Cobertura 是一种开源测试工具,它通过检测基本的代码,并观察在测试包运行时执行了哪些代码以及哪些代码没有执行,来测量测试覆盖率.除了找出未测试到的代码并发现 BUG 外,Cobertura 还可以通过标记无用的.执行不到的代码来进行代码优化,还可以提供 API 实际操作的内部信息.

代码覆盖率测试

#!/bin/bashcd ${WORKSPACE}/${JOB_BASE_NAME}sudo ${MAVENHOME}/bin/mvn org.jacoco:jacoco-maven-plugin:prepare-agent -f pom.xml -s ${MAVENHOME}/tmp/settings.xml -gs ${MAVENHOME}/tmp/settings.xml clean test -Dautoconfig.skip=true -Dmaven.test.skip=false

MV*浏览器单元测试+代码覆盖率

好久没写BLOG了,最近弄了一个前端单元测试加代码覆盖率测试框架,使用起来非常简单,具体使用方法和介绍如下,先上图,结果如下: github地址:https://github.com/wf123537200/FeTestAndCov frontEnd-test-and-cov 这是一个便捷,快速的,浏览器友好的单元测试框架. 提供功能为: 1.提供实时前端单元测试结果. 2.提供单元测试覆盖率实时显示. 为什么有这个框架? 因为作为前端一直想实现tdd开发,之前受到几种限制: 1.使用jq的年代

测试、发布、质量保障,用户体验

在一款软件的整个开发过程中,软件的测试也占了很大的比重,软件测试按照测试设计的方法分类有两类方法:黑箱和白箱:黑箱指的是在设计测试的过程中,把软件系统当作一个“黑箱”,无法了解或使用系统的内部结构及知识.一个更准确的说法是行为设计测试,即从软件的行为,而不是从内部结构出发来设计测试.白箱指的是在设计测试的过程中,设计者可以“看到”软件系统的内部结构,并使用软件的内部结构和知识来选择测试数据及具体的测试方法.而按照测试的目的分类可以分为功能测试和非功能测试.至于测试方法种类很多,比如有单元测试和代

VCS 查看代码覆盖率

代码覆盖率 代码覆盖率测试一般包括行覆盖,条件覆盖,FSM覆盖,翻转覆盖率等.在不同的代码级别有不同的覆盖率,Behavioral code包含line+condition+path(branch)+FSM:在RTL code包含line+condition+path+toggle+FSM:Gate-level Code只包含Toggle覆盖率. What is Code Coverage? Have all the line of the RTL been stimulated? Have a

ThreadingTest(穿线测试)引领白盒测试进入工业界

ThreadingTest(穿线测试)引领白盒测试进入工业界 测试一直都有黑,白之分.由于白盒测试一般情况下需要有比较高的技术要求及比一般开发人员还要高的项目经验和缜密的逻辑思维能力,且测试时间较长,多用于单元测试,工具昂贵,所以一般国内的企业会忽略白盒测试,这也是为什么白盒测试诞生至今,在国内没有正式推广的原因.对于一个健康的测试团队来讲,必须要有一个或多个熟悉白盒测试的人员.让我们先分析下,一般情况下,要实施覆盖率测试,有几种完全不同的策略. 1 黑盒测试(功能测试) 黑盒测试是面向功能的测