11

我有 3 个问题:

  • 什么是代码覆盖?
  • 到底有什么好处呢 ?
  • 哪些工具用于分析代码覆盖率?
4

9 回答 9

13

您可以从SO WEB SITE获得非常好的信息

免费的代码覆盖工具

什么是代码覆盖率以及如何衡量它?

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

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

http://www.stickyminds.com/sitewide.asp?Function=edetail&ObjectType=ART&ObjectId=7580 替代文字 http://www.codecoveragetools.com/images/stories/software_lifecycle.jpg

它对

  1. 功能覆盖旨在找出执行了多少功能或过程。

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

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

  4. 已执行路径覆盖,其重点是从代码中的给定起点查找所有可能的路径。

  5. 进入和退出覆盖率,它找出从头到尾执行了多少函数(C/C++、Java)或过程(Pascal)。

工具

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-cc/

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

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

于 2009-07-21T11:09:37.340 回答
4

来自维基百科文章

代码覆盖率是软件测试中使用的一种度量。它描述了程序的源代码经过测试的程度。它是一种直接检查代码的测试形式,因此是一种白盒测试形式1。目前,代码覆盖的使用已扩展到数字硬件领域,其现代设计方法依赖于硬件描述语言 (HDL)。

提倡使用代码覆盖率

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

通常,结果细化到每一行代码的级别。因此,在典型情况下,您会使用配置为监控它的代码覆盖率工具来启动应用程序。当您退出应用程序时,该工具将生成一个代码覆盖率报告,其中显示哪些代码行已执行,哪些未执行。如果计算已执行的总行数并除以可能已执行的总行数,则得到一个百分比。如果您相信代码覆盖率,那么百分比越高越好。在实践中,达到 100% 是极其罕见的。

代码覆盖工具的使用通常与某种自动化测试套件的使用相结合。如果没有自动化测试,代码覆盖率工具只会告诉您人类用户记得使用哪些功能。这样的工具在衡量测试套件相对于您编写的代码的完整性时要有用得多。

相关文章

代码覆盖工具的未来

代码覆盖工具在软件测试中的有效性

工具

Java 中的开源代码覆盖工具

于 2009-07-21T11:08:11.617 回答
3

代码覆盖率是一个指标,显示源代码测试的“好”程度。代码覆盖有几种类型:行覆盖、函数覆盖、分支覆盖。

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

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

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

请阅读维基百科上的文章

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

于 2009-07-21T11:16:05.330 回答
2

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

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

维基百科的定义非常好,但用我自己的话来说,代码覆盖率告诉你你已经考虑了多少自动化测试。100% 意味着您的应用程序中的任何一行代码都被单元测试覆盖。

NCover是 .NET 的应用程序

于 2009-07-21T11:09:27.527 回答
1

该术语是指您的程序被测试覆盖的程度。有关更多信息,请参阅以下维基百科文章:

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

于 2009-07-21T11:07:49.167 回答
0

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

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

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

于 2009-07-21T11:22:05.007 回答
0

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

我想对此发表一点评论:我认为不应测试所有代码,也不应设置特定的代码覆盖率百分比。我也不认为不应使用单元测试(代码测试代码)来测试代码。我确实认为应该决定什么是有意义的测试。由于这个原因,我通常不使用代码覆盖率。

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

于 2009-07-21T11:32:08.900 回答
0

很好的答案。

我的两分钱是没有一种测试方法可以捕获所有错误,但是更少的测试永远不会捕获更多的错误,所以任何测试都是好的。在我看来,覆盖测试并不是要显示哪些代码已经被执行,而是要显示哪些代码没有被执行,因为那是 bug 最喜欢潜伏的地方。

如果将它与单步执行结合起来,这是一个非常好的查看代码和捕获错误的方法。这是一个例子。

于 2009-10-12T21:02:08.900 回答
0

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

于 2014-03-03T22:47:18.370 回答