我有3个问题:
- 什么是代码覆盖率?
- 它有什么用途?
- 用于分析代码覆盖率的工具有哪些?
我有3个问题:
目标在于发现执行了多少个函数或过程的功能覆盖率。
语句或行覆盖率,以确定源代码中的行数是否已经执行。
条件或决策覆盖率回答了程序中有多少循环条件被执行的问题。
路径覆盖着眼于查找从给定起始点在代码中执行的所有可能路径。
入口和出口覆盖查找从开始到结束执行了多少个函数(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-c-c/
来自维基百科文章
代码覆盖率是软件测试中使用的一个度量。它描述了程序源代码被测试的程度。这是一种直接检查代码的测试,因此属于白盒测试的一种形式1。目前,代码覆盖率的使用已扩展到数字硬件领域,这种领域的现代设计方法依赖于硬件描述语言 (HDLs)。
代码覆盖工具只是跟踪您的代码哪些部分被执行,哪些部分没有被执行。
通常,结果可以精确到每行代码的水平。所以在一般情况下,您会使用配置为监控应用程序的代码覆盖工具启动您的应用程序。当您退出应用程序时,该工具将生成一个代码覆盖报告,显示哪些代码行被执行,哪些代码行没有被执行。如果您统计所有被执行的代码行并除以可能被执行的总代码行数,则得到一个百分比。如果您信任代码覆盖率,那么百分比越高,就越好。实际上,达到100%是非常罕见的。
使用代码覆盖工具通常与某种自动化测试套件相结合。没有自动化测试,代码覆盖工具仅告诉您人类用户记得使用哪些功能。当它测量您编写的代码与测试套件相比的完整程度时,这种工具要更有用。
相关文章
工具
http://en.wikipedia.org/wiki/Code_coverage
维基百科的定义已经很好了,但用我的话来说,代码覆盖率告诉你有多少自动化测试已经涵盖到了你的代码。100%意味着你应用程序中的每一行代码都被单元测试覆盖了。 NCover 是一个针对 .NET 的应用程序。其他答案已经涵盖了代码覆盖率的含义。我想强调的是,你需要小心不要将高覆盖率视为隐含意味着你已经测试了所有情况。它并不能说明你测试代码的质量或测试的质量有多好,只是说明你在测试运行中达到了一定百分比的代码。
高代码覆盖率并不一定意味着高测试质量,但高测试质量确实意味着高代码覆盖率。
在实践中,我通常会以90-95%的代码覆盖率为目标,这通常是可以实现的。最后几个百分点往往太昂贵了,不值得去追求。
有很多开发应用程序的方法。其中之一是“极限编程”或“测试驱动设计(TDD)”。它指出所有代码都应该经过测试。代码覆盖率是衡量测试程度的一种手段。
我想对此做一个小小的评论:我不认为所有的代码都应该被测试,也不认为应该设置特定的代码覆盖率百分比。我也不认为代码不应该通过单元测试进行测试(代码测试代码)。我认为应该决定什么值得测试。因此,我通常不使用代码覆盖率。
一些工具提供的一件事是突出显示已经测试过的部分。这样,您可能会遇到一些未经测试但实际上应该被测试的代码,这是我使用它的唯一原因。
好答案。
我个人认为,并没有一种测试方法可以捕捉到所有的错误,但是测试越少也不能捕捉到更多的错误,所以任何形式的测试都是有益的。在我看来,覆盖率测试不是为了展示代码已经被执行了哪些部分,而是为了展示哪些代码还没有被执行过,因为那些未被执行的部分往往是漏洞喜欢藏匿的地方。
如果结合单步调试,这是一个非常好的检查代码和发现漏洞的方式。这里有一个例子。