行覆盖率和分支覆盖率的关系

今天和同事讨论代码测试覆盖率时候想到一个问题 – “覆盖率到底多少时候才合理?”

其实没有简单的答案。比较赞同这篇文章作者的观点。

极端情况下,如果行覆盖率达到100%,那意味着分支覆盖率/路径覆盖率都达到了100%了。

但事实上,只要行覆盖率没达到100%,你永远不知道分支/路径覆盖率达到多少了。但至少可以通过对代码复杂度(分支密度)估计这两个比例。

二者的关系应该是这样的:

所以,最简单的答案:代码覆盖率不可能保证不出bug,也无法作为衡量生产力的指标。覆盖率尽可能保持在80%,才可能保证一定比例的分支覆盖率。举个简单的例子:你创造了一片森林,用户每天从里面进出,森林里的路如迷宫一般复杂,那就有50%的路是我们没有检查过,但用户天天都在经过的。