Language agnostic 您实际成功地使用了哪些技术来提高代码覆盖率?
我经常使用TDD实现100%的库覆盖率,但并不总是这样,而且似乎总是有一些应用程序的剩余部分未经测试和发现。Language agnostic 您实际成功地使用了哪些技术来提高代码覆盖率?,language-agnostic,code-coverage,Language Agnostic,Code Coverage,我经常使用TDD实现100%的库覆盖率,但并不总是这样,而且似乎总是有一些应用程序的剩余部分未经测试和发现。 还有一些情况是,您从很少测试和很少覆盖的遗留代码开始 请说明您的情况,以及至少提高了覆盖率的有效措施。 我假设您正在单元测试期间测量覆盖率,但请说明您是否正在使用其他技术。删除代码 这并不刺耳,但实际上很严重。每当我看到最小数量的代码重复,甚至是我无法执行的代码时,我都会删除它。这增加了覆盖范围和可维护性 我应该注意到,与新代码库相比,这更适用于增加旧代码库的覆盖率 我们使用Perl,因
还有一些情况是,您从很少测试和很少覆盖的遗留代码开始 请说明您的情况,以及至少提高了覆盖率的有效措施。
我假设您正在单元测试期间测量覆盖率,但请说明您是否正在使用其他技术。删除代码 这并不刺耳,但实际上很严重。每当我看到最小数量的代码重复,甚至是我无法执行的代码时,我都会删除它。这增加了覆盖范围和可维护性 我应该注意到,与新代码库相比,这更适用于增加旧代码库的覆盖率 我们使用Perl,因此它对我们非常有用。显示单元测试期间的每语句覆盖率、分支覆盖率和条件覆盖率,以及POD覆盖率等内容。我们使用易于识别的HTML输出,绿色表示“100%”,黄色和红色表示覆盖率较低 编辑:要稍微扩展内容:
- 如果条件覆盖不完整,请检查相互依存的条件。如果有,重构。如果不是,您应该能够扩展您的测试,以满足所有条件
- 如果条件覆盖率和分支覆盖率看起来完整,但语句覆盖率却不完整,则可能是条件覆盖率写错了(例如,在您无意的情况下,总是从sub提前返回),或者您有可以安全删除的额外代码
- 隐式分支位于同一行上
- 共享构造函数代码
- 由finally块导致的隐式分支
- 由于隐藏类.forName()而导致的隐式分支
使用这种方法,我们将代码覆盖率提高了几个百分点。一个额外的好处是,这些测试将跨越不同的版本:它们将测试遗留代码,但稍后会测试新代码。i、 e.从某种意义上说,它们可以作为回归测试。你说的是,覆盖率提高了吗?只是因为你在使用覆盖率工具吗?在编辑中扩展了我的答案,我误解了你所要求的详细程度。没有什么比删除100行其他人的坏消息更令人满意的了,未使用的代码。我理解代码覆盖和代码测试之间的区别——在单元测试中很容易作弊,通过调用其他方法而不进行任何测试来获得“改进”的覆盖。我同意,eclemma是一个很好的工具,而且它很容易使用。我从来没有想过在应用程序的未来版本中重新使用FIT测试——我会记住这一点。您是否已将FitNesse(www.FitNesse.org)作为适合测试的前端/维基进行了调查?我们正在调查FitNesse,但尚未报告任何内容。顺便说一下,我应该提到FIT是一个很酷的想法,但是框架本身很薄。我的团队仍在努力确定我们应该编写多少粘合代码。但它很简洁,帮助我们实现了代码覆盖。