请善用覆盖率度量

发表于:2008-11-19 13:34

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:Mike Bria    来源:InfoQ

  Christian Gruber就TDD的代码覆盖率度量方面阐明了其态度。他谈到了代码覆盖率度量会告诉你什么以及不会告诉你什么,TDD是如何适应它的,同时还提到了我们如何能更好地使用代码覆盖率度量。

  对于采用良好的TDD开发的应用来说,其代码覆盖率通常都会很高(>80-90%)。但另一方面,代码覆盖率高并不意味着应用构建在良好的TDD上,甚至可能都没有采用TDD。再进一步,代码覆盖率高就表示你的应用经过了彻底的测试么?

  Christian Gruber对此进行了讨论,这很大程度上是由Kevin Pang就该主题所发表的另一篇博文引起的。打开天窗说亮话,Gruber的主要观点是TDD的支持者们并不建议将代码覆盖率作为“一个真正的度量”,它在一定程度上是有用的,但只有与其他反馈结合使用时其作用才能发挥出来。他抨击了Pang的观点:“(Pang)100%的代码覆盖率是测试爱好者的终极追求”,他说:“(Gruber)高代码覆盖率是经过良好测试的系统的想要拥有的一个属性,但其目标却是打造一个经过完全和充分测试的系统”。

  他就代码覆盖率、TDD及“充分的测试”提出了以下6点主张:

  1.代码覆盖率只在编写良好的测试中才有意义。如果测试没有价值,那么它也不会对你有什么帮助。

  2.如果测试通过,我们应该根据行/分支来统计代码覆盖率。

  3.代码覆盖率可以指出测试不充分的地方,但无法保证测试的充分性。

  4.测试驱动的代码最可能拥有良好的覆盖率。

  5.测试驱动的代码将会得到充分的测试,因为代码编写者编写了构成代码需求的所有测试。

  6.覆盖充分的代码不一定是得到充分测试的代码。

  接下来Gruber简要概述了TDD(已经成为一种设计技术,而不仅仅是一个测试工具)如何有助于彻底的测试。他进一步强调“代码覆盖率(在TDD的上下文中)有助于你发现某些遗漏的东西,但仅此而已”,在这一点上他与Pang已经达成了共识。

  早就有人对滥用代码覆盖率度量提出了警告,但我们仍然要不断重复这种警告,因为有越来越多的公司开始采用TDD(恭喜啊!),他们很容易陷入“覆盖率圣经”这种反模式中。

 

《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号