使用测试覆盖度量标准衡量代码质量

代码质量和测试覆盖率指标是软件测试过程中的两个重要指标。这两个方面的测试是相互关联的,但没有直接的公式来相互评价。让我们理解什么是测试覆盖率,以及如何使用一般术语对其进行评估。

测试覆盖率

测试团队谈到特定项目的测试覆盖率百分比,但是他们是否以正确的方式评估测试覆盖率的这一百分比?测试团队根据功能需求文档设计测试用例,但这些测试用例实际上覆盖了代码行,换句话说,当测试团队执行这些测试用例时,系统确保给定程序的所有代码行都有在测试期间成功执行或覆盖。答案可能是无法确保,然而功能性的测试覆盖率是可靠的。因此,应该使用下面的公式,根据代码行来评估测试覆盖率

假设一个被测项目有10,000行代码。说X = 10,000。
执行的测试用例仅覆盖7500行代码。说Y = 7,500。
实际测试覆盖率为(7,500 / 10,000)* 100 = 75%。通常,如果测试覆盖率超过80%,则测试团队得出结论,他们有足够的测试覆盖率来确保代码质量。此测试覆盖率将与代码质量成正比,但测试团队仍应考虑许多其他方面。

使用测试覆盖度量标准衡量代码质量

测试团队应该考虑正面(正常)测试的数量,以及任何项目在测试覆盖率之外的负面(异常)测试的数量。当我们谈论测试覆盖率方面的代码质量时,这就变得非常有趣。因此,如果测试团队通过触摸所有代码行实现100%的测试覆盖率,则不能确保代码质量,但代码质量将取决于以下两个因素。

  • 足够的测试覆盖率,即80%或更多。100%的测试覆盖率可能是理想的情况。
  • 良好的功能测试测试用例。

如何实现项目的良好测试用例?

嗯,这不是什么大问题,对于经验丰富的测试人员来说,这应该so easy。在编写测试用例时,测试人员应该考虑正常测试用例,异常测试用例,应用流程的快乐和不愉快的测试场景。这可以通过需求与测试覆盖率的可追溯性矩阵来确保。可追溯性矩阵将始终确保你针对特定需求覆盖适当的测试场景,并有基本的测试用例,以覆盖测试的正负两个方面的功能测试。如果在可追溯性矩阵中100%覆盖功能方面的测试,那么可以说你在测试库中拥有良好的测试用例以覆盖功能测试。

我们可以通过使用可追溯性矩阵来获得最佳覆盖率,但实际上需求是否完整?谁将承担构建我们良好测试用例的不完整需求的责任,同时,我们的目标是测试代码质量。因此,详尽的需求是设计良好测试用例的先决条件之一,因为对代码质量的评估将受其影响。

如何根据测试覆盖率来总结代码质量?

我们已经讨论过,如果我们在代码行和基于可追溯性矩阵的良好测试用例方面有足够的测试覆盖率,那么我们可以根据测试结果确保项目的代码质量。在这里,我们只介绍了代码质量的一个方面,但实际上还有很多东西会影响代码质量。有许多代码扫描工具可以帮助我们从技术角度评估代码质量。开发人员编写了代码,该代码用于功能目的,但实际上功能可能以错误的方式编码,或者开发人员没有遵循要求的编码标准。代码中可能存在代码块已死或控制根本无法访问的事件。代码块可能有几率进入死循环。代码可能未得到适当优化,并且会降低整体系统性能。代码块成功执行后,可能存在内存泄漏或连接未正确关闭。软件模块的代码块可能存在不适当的垃圾回收。这些是直接或间接影响代码质量的一些性能警告,不容忽视。因此,建议对软件项目进行非功能性或性能测试,因为这些挑战只能通过代码扫描工具(如SONAR CUBE)或在进行适当的性能测试后才能发现。

安全测试是软件测试中影响代码质量的另一个方面。我们不希望在应用功能和性能方面都运行良好的情况下,未经授权的用户可以轻松突破系统并窃取关键业务相关信息。因此,应该对应用进行良好的安全性测试,这样可以确保应用程序代码在缓解安全漏洞方面的稳健性。

结论

足够的测试覆盖率指标有助于在一定程度上揭示代码质量。代码质量指标还取决于其他因素。这些因素是在可追溯性指标性能测试代码扫描安全测试的帮助下设计的优秀测试用例。当做到上面这些方面,对于确保代码质量有着无与伦比的好处,并且对整个项目团队的工作有益。

本文由 ruink 译自 《Measuring Code Quality with Test Coverage Metrics》一文



留言