什么是代码覆盖?

时间:2009-07-21 11:02:06

标签: language-agnostic code-coverage definition

我有3个问题:

  • 什么是CodeCoverage?
  • 有什么好处?
  • 使用什么工具 分析代码覆盖率?

9 个答案:

答案 0 :(得分:13)

您可以从 SO WEB SITE

获取非常好的信息

Free code coverage tools

What is Code Coverage and how do YOU measure it?

代码覆盖率衡量自动化测试运行时代码执行的行/块/弧数。通过使用专用工具来检测二进制文件以添加跟踪来收集CC调用并针对仪表产品运行一整套自动化测试。一个好的CC工具不仅可以为您提供执行代码的百分比,还可以深入了解数据并查看在特定测试期间执行的代码行。

首先创建代码覆盖算法,以通过直接查看源代码来解决评估源代码的问题。代码覆盖属于结构测试类别,因为在程序的内部部分而不是在系统输出上进行断言。因此,代码覆盖旨在找到不值得测试的代码部分。

http://www.stickyminds.com/sitewide.asp?Function=edetail&ObjectType=ART&ObjectId=7580 alt text http://www.codecoveragetools.com/images/stories/software_lifecycle.jpg

有利于

  1. 旨在找出执行了多少功能或程序的功能覆盖范围。

  2. 已执行标识源代码中行数的语句或行覆盖率。

  3. 条件覆盖率或决策覆盖率回答了有关在程序中执行循环条件数量的问题。

  4. 路径覆盖范围专注于查找代码中给定起点的所有可能路径。

  5. 进入和退出覆盖范围,查找从开始到结束执行了多少函数(C / C ++,Java)或过程(Pascal)。

  6. 工具

    http://www.codecoveragetools.com/

    http://java-source.net/open-source/code-coverage

    http://www.codecoveragetools.com/index.php/coverage-process/code-coverage-tools-java.html

    http://open-tube.com/10-code-coverage-tools-c-c/

    http://csharp-source.net/open-source/code-coverage

    http://www.kdedevelopers.org/node/3190

答案 1 :(得分:4)

来自wikipedia article

  

代码覆盖率是用于的一种衡量标准   软件测试。它描述了   一个程度的源代码   程序已经过测试。这是一种形式   检查代码的测试   直接,因此是一种形式   白盒测试1。目前,   使用代码覆盖范围扩展到   数字硬件领域   当代设计方法论   这取决于硬件描述   语言(HDL)。

Advocating the use of code coverage

  

代码覆盖工具只是保留   跟踪代码的哪些部分   已执行,哪些部分没有。

     

通常情况下,结果会逐渐减少   到每行代码的级别。所以   在典型的情况下,你启动   您的应用程序具有代码覆盖率   配置为监视它的工具。什么时候   退出应用程序,该工具   将生成代码覆盖率报告   它显示了哪行代码   已执行,哪些不是。如果   你计算总行数   被执行并被分割的   可能有的总行数   被执行后,你得到一个百分比。   如果您相信代码覆盖率,那么   百分比越高越好。在   实践,达到100%是极端的   罕见的。

     

使用代码覆盖工具   通常结合使用一些   一种自动化测试套件。没有   自动化测试,代码覆盖   工具只是告诉你哪些功能   人类用户记得使用。这样的   工具在它有用时更有用   衡量你的测试套件的完整程度   就你所拥有的代码而言   写入。

相关文章

The Future of Code-Coverage Tools

The effectiveness of code coverage tools in software testing

<强> 工具

Open Source Code Coverage Tools in Java

答案 2 :(得分:3)

代码覆盖率是一个指标,显示了测试源代码的“好”程度。有几种类型的代码覆盖:线覆盖,功能覆盖,分支覆盖。

为了测量覆盖率,您应手动或通过自动测试运行该应用程序。

工具可分为两类: - 在修改的环境(如调试器)中运行已编译代码的那些,计算所需的点(函数,行等); - 需要特殊编译的那些 - 在这种情况下,生成的二进制文件已经包含实际进行计数的代码。

有几种工具可用于测量和可视化结果,它们取决于平台,源自源代码的语言。

请阅读Wikipedia

上的文章

为了向您提供工具,请定义您使用的操作系统和语言。

答案 3 :(得分:2)

  

代码覆盖率是软件测试中使用的一种度量。它描述了程序源代码的测试程度。

http://en.wikipedia.org/wiki/Code_coverage

维基百科的定义非常好,但就我个人而言,代码覆盖率会告诉您已经考虑了多少自动化测试。 100%意味着您的应用程序中的单行代码将被单元测试覆盖。

NCover是.NET的应用程序

答案 4 :(得分:1)

该术语指的是您的计划覆盖您的计划的程度。有关详细信息,请参阅以下维基百科文章:

http://en.wikipedia.org/wiki/Code_coverage

答案 5 :(得分:0)

其他答案已涵盖代码覆盖范围。我想强调的是,你需要注意不要将高覆盖率视为隐含意味着你已经测试了所有场景。它并不一定说明你已经测试了代码或测试质量 well ,只是你在测试运行过程中达到了一定比例的代码。

高代码覆盖率并不一定意味着高测试质量,但高测试质量确实意味着高代码覆盖率

在实践中,我通常的目标是90-95%的代码覆盖率,这通常是可以实现的。最后几个百分比通常太昂贵而不值得尝试。

答案 6 :(得分:0)

开发应用程序的方法有很多种。其中之一是“极限编程”或“测试驱动设计(TDD)”。它声明应该测试所有代码。代码覆盖率是衡量测试数量的一种方法。

我想对此做一个小小的评论:我认为不应该测试所有代码,也不应该设置特定百分比的代码覆盖率。我也不认为代码不应该使用单元测试(代码测试代码)进行测试。我认为应该决定测试的意义。由于这个原因,我通常不使用代码覆盖。

某些工具提供的一件事是突出显示已测试的部件。这样你可能遇到一些未经测试但实际应该是的代码,这是我唯一使用它的代码。

答案 7 :(得分:0)

好的答案。

我的两分钱是没有测试的方法可以捕获所有错误,但是更少的测试将永远不会捕获更多错误,因此任何测试都是好的。在我看来,覆盖率测试并不是要显示已经运行的代码,而是要显示哪些代码已被执行,因为这是错误潜伏的地方。< / p>

如果将它与单步执行相结合,则可以非常好地查看代码并捕获错误。 Here's an example.

答案 8 :(得分:0)

确保我最近使用的代码质量(包括代码覆盖率)的另一个有用工具是Sonar。 这是链接http://www.sonarqube.org/