我正在开发几个应用程序,主要是遗留应用程序。当前,它们的代码覆盖率非常低:通常在10%到50%之间。
自几周以来,我们与班加罗尔团队进行了周期性讨论(开发的主要部分在印度境外进行),以排除Cobertura的软件包或类(我们的代码覆盖率工具,即使我们当前正在迁移到JaCoCo)也是如此。
他们的观点如下:由于他们不会在应用程序的某些层上编写任何单元测试(1),因此应将这些层简单地排除在代码覆盖率范围之外。换句话说,他们希望将代码覆盖率度量标准限制为已测试或应该测试的代码。
同样,当他们为复杂的类进行单元测试时,由于在大型应用程序中所带来的好处-仅在代码覆盖率方面-不会被注意到。减少代码覆盖范围的范围将使这种工作更加明显。
这种方法的好处是我们将有一个代码覆盖率度量,它指示我们认为可测试的应用程序部分的当前状态。
但是,我的观点是我们在某种程度上伪造了数字。该解决方案是轻松实现更高级别代码覆盖率的简便方法。令我困扰的另一点是:如果我们显示从一个星期到另一个星期的覆盖率增加,我们如何分辨这个好消息是由于开发人员的良好工作还是仅仅是由于新的排除因素?
此外,我们将无法确切知道代码覆盖率度量中考虑的内容。例如,如果我有10,000行代码应用程序,且代码覆盖率达到40%,则可以推断出40%的代码库已经过测试(2)。但是,如果我们设置排除条件会怎样?如果现在代码覆盖率达到60%,我该如何准确扣除?我的“重要”代码库中有60%经过测试了吗?我怎么能够
就我而言,即使我们对此不太满意,我还是希望保留“真实的”代码覆盖率值。此外,借助Sonar,我们可以轻松地在代码库中导航,并知道任何模块/包/类的代码覆盖范围。但是,当然,全球代码覆盖率仍然很低。
您对该主题有何看法?您如何处理项目?
谢谢。
(1)这些层通常与UI / Java bean等有关。
(2)我知道那不是事实。实际上,这仅意味着我的代码库的40%