`

代码覆盖率

 
阅读更多

摘抄:

----------------------------------------------

EMMA 是一个用于检测和报告 JAVA 代码覆盖率的开源工具。它不但能很好的用于小型项目,很方便得得出覆盖率报告,而且适用于大型企业级别的项目。

EMMA 有许多优点,首先你能免费得到它,并把它用于自己项目的开发。它支持许多种级别的覆盖率指标:包,类,方法,语句块(basic block)和行,特别是它能测出某一行是否只是被部分覆盖,如条件语句短路的情况。它能生成 text,xml,html 等形式的报告,以满足不同的需求,其 html 报告提供下钻功能,我们能够从 package 开始一步步链接到我们所关注的某个方法。EMMA 能和 Makefile 和 Ant 集成,便于应用于大型项目。特别还须指出的一点是,EMMA 的效率很高,这对于大型项目来说很重要。

EMMA 是通过向 .class 文件中插入字节码的方式来跟踪记录被运行代码信息的。EMMA 支持两种模式:On the fly 和 Offline 模式。

On the fly 模式往加载的类中加入字节码,相当于用 EMMA 实现的 application class loader 替代原来的 application class loader。

Offline 模式在类被加载前,加入字节码。

On the fly 模式比较方便,缺点也比较明显,如它不能为被 boot class loader 加载的类生成覆盖率报告,也不能为像 J2EE 容器那种自己有独特 class loader 的类生成覆盖率报告。这时,我们能求助于 Offline 模式。

EMMA 也支持两种运行方式:Command line 和 Ant。

命令行一般和 On the fly 模式一起适用,对于简单的项目能够快速产生覆盖率报告。通过 Ant task 来运行 EMMA 的话,特别适用于大型的项目。

-----------------------------------------------

 

通常情况下,要求代码覆盖率达到80%以上,下面是几种常见的覆盖度量方式。

1. 语句覆盖,度量被测代码中每个可执行语句是否执行到了。

2. 条件覆盖,度量判定中的每个子表达式结果true 和false是否被执行到了。条件覆盖不是将判定中的每个表达式的结果进行排列组合,而是只要每个表达式的结果true和false测试到了就OK了。

3. 路径覆盖,度量每个分支都执行到了。

 

a. 覆盖率数据只代表你测试过哪些代码,不能代表你是否测试好这些代码。

b. 不要过于相信覆盖率数据

c. 不要只拿语句覆盖率来考核测试人员

d. 路径覆盖率 > 条件覆盖率 > 语句覆盖率

e. 测试人员不能盲目追求代码覆盖率,而应该想办法设计更多更好的用例,哪怕设计出来的案例对覆盖率一点影响也没有。

 

对于项目,通常需要我们设计出一个更好的测试计划,然后根据测试计划来写测试用例,而不是在写测试用例的时候,考虑有哪些代码没有覆盖到。

分享到:
评论

相关推荐

    windows平台下C/C++代码覆盖率检查工具

    在Windows平台上进行C/C++开发时,代码覆盖率检查是一个重要的质量保证步骤,它能帮助开发者了解测试用例对源代码的覆盖程度。代码覆盖率通常包括行覆盖率、分支覆盖率等指标,能够评估测试的有效性,确保代码的健壮...

    android工程JaCoCo代码覆盖率Demo

    在Android开发中,JaCoCo是一个非常重要的工具,它用于计算和分析代码覆盖率,帮助开发者了解测试用例对代码的覆盖程度。JaCoCo不仅适用于Java项目,而且在Android项目中同样发挥着关键作用,尤其是在确保测试质量、...

    代码覆盖率工具

    代码覆盖率工具是软件开发过程中的重要辅助手段,主要用于评估测试代码对源代码的覆盖程度。在Java开发环境中,为了确保代码质量,单元测试是必不可少的环节。而代码覆盖率工具则可以帮助开发者了解测试用例对程序...

    单元测试的代码覆盖率至少80%

    单元测试的代码覆盖率至少80%!一大早,一个年轻的程序员问大师:“我准备写一些单元测试用例。代码覆盖率应该达到多少为好?”大师回答道:“不要考虑代码覆盖率,只要写出一些好的测试用例即可。”  一大早,一个...

    测试代码覆盖率

    测试代码覆盖率是软件开发过程中的一个重要环节,它用于衡量测试用例执行时对源代码的覆盖程度。在标题中提到的“测试代码覆盖率”是指通过自动化测试来确定多少比例的代码被执行过,这对于确保软件质量、查找未被...

    代码覆盖率驱动的测试

    代码覆盖率驱动的测试是一种软件测试方法,其核心目标是通过测量代码执行过程中的覆盖率来指导测试活动,确保测试用例尽可能多地覆盖代码中的各种执行路径。代码覆盖率反映了在测试过程中执行到的代码行数与总代码...

    代码覆盖率eclipse插件

    **代码覆盖率Eclipse插件详解** 在软件开发过程中,代码覆盖率是衡量测试质量的一个重要指标。它能够帮助开发者了解测试代码对源代码的覆盖程度,从而确保代码的健壮性和可靠性。Eclipse作为一款广泛使用的Java集成...

    使用工具查看RTL代码覆盖率.docx

    "使用工具查看RTL代码覆盖率" 在数字芯片开发中,Verilog是一种常用的 Hardware Description Language(HDL),用于描述数字电路的行为。RTL(Register-Transfer Level)代码是Verilog的一个重要组成部分,用于描述...

    lcov测试代码覆盖率例程

    lcov是一种广泛使用的工具,主要用于收集和生成C和C++项目的代码覆盖率报告。它与genhtml工具一起工作,提供了一种直观的方式来理解程序中的哪些部分被执行了,以及哪些部分未被执行,这对于软件测试和质量保证至关...

    Android Native C++代码覆盖率统计 Demo(基于NDK 21)

    首先,代码覆盖率是衡量软件测试完整性的一个重要指标,它反映了测试用例执行时覆盖了多少源代码。对于C++代码,Android NDK提供了一种基于Clang的解决方案。Clang是LLVM项目的一部分,不仅是一个高效的C/C++/...

    基于Jacoco的代码覆盖率实时监控与精准测试实践-QECon深圳站2021年全球软件质量&效能大会.pdf

    【基于Jacoco的代码覆盖率实时监控与精准测试实践】 在软件开发过程中,代码覆盖率是评估测试有效性的重要指标,它能够帮助我们了解测试用例对代码的覆盖程度。Jacoco是一款广泛使用的Java代码覆盖率工具,它提供了...

    Super-jacoco应用统计代码覆盖率及问题处理

    在软件开发过程中,代码覆盖率是一个至关重要的指标,它反映了测试用例对源代码的覆盖程度。本文将深入探讨“Super-jacoco”工具如何应用于统计代码覆盖率,并解决在此过程中可能遇到的问题。 首先,我们需要理解...

    在实时服务器上生成代码覆盖率报告

    "在实时服务器上生成代码覆盖率报告"这一主题聚焦于一个实用的技术实践,即在服务器环境中实时监控和分析代码执行情况,从而获取代码覆盖率数据。这种做法有助于开发者了解测试覆盖的程度,发现未被测试到的代码区域...

    Java单元测试之代码覆盖率-JaCoCo

    而代码覆盖率则是衡量单元测试有效性的一个关键指标,它表示了被测试代码被执行的程度。JaCoCo是一款广泛使用的Java代码覆盖率工具,它可以方便地集成到各种构建工具和持续集成系统中,提供详细的覆盖率报告。 ...

    eclemma单元测试代码覆盖率工具

    EclEmma是一款强大的Java单元测试代码覆盖率工具,它为开发者提供了直观的方式来衡量和评估他们的单元测试的质量。在软件开发过程中,单元测试是确保代码正确性和可靠性的关键步骤,而EclEmma则帮助开发者确保测试...

    4-前端质量利器-马可代码覆盖率平台.pdf

    【马可代码覆盖率平台】是专门针对前端质量监控和优化的一款工具,旨在解决在互联网技术开发过程中遇到的挑战,如代码冗余、测试覆盖率不足、自动化测试成本高等问题。该平台在2021年vivo开发者大会上被提及,特别...

    Java代码覆盖率工具包Java代码覆盖率工具包

    Java代码覆盖率工具包Java代码覆盖率工具包Java代码覆盖率工具包Java代码覆盖率工具包Java代码覆盖率工具包Java代码覆盖率工具包Java代码覆盖率工具包Java代码覆盖率工具包Java代码覆盖率工具包Java代码覆盖率工具包...

    Emma进行代码覆盖率检查(命令行方式)

    Emma 进行代码覆盖率检查(命令行方式) Emma 是一款 Java 代码覆盖率检查工具,可以帮助开发者了解代码的覆盖率情况,从而提高代码的质量。在 Offline 模式下使用 Emma 进行代码覆盖率检查需要经过三个步骤:插桩...

    java代码覆盖率测试工具Clover3.0.365+Junit4.1

    Java代码覆盖率测试是软件开发过程中一个重要的质量保证环节,它能帮助开发者了解代码在测试中的执行情况,确保更多的代码被有效的测试覆盖。Clover是一款由Atlassian公司开发的高级代码覆盖率工具,它提供了详细的...

Global site tag (gtag.js) - Google Analytics