【问题标题】:In Android projects, what's the reasonable code coverage that can be achieved by Unit Testing?在Android项目中,单元测试能达到的合理代码覆盖率是多少?
【发布时间】:2019-04-16 09:14:48
【问题描述】:

在我最近的 Android 项目中,我被要求为单元测试覆盖率设定一个目标。我想知道可实现的合理覆盖率是多少,30%、50% 或 70%?

【问题讨论】:

  • 这取决于它自己的代码。但当然最好的做法是尽可能多地覆盖
  • 与什么是质量相同的问题。不同的客户有不同的答案。您可以考虑使用 Pareto 原则 - 只覆盖 20% 的代码库会造成最大的影响。
  • 补充@ror 所说的——另一个因素是团队规模。您必须在平衡测试和功能实现方面保持实际。很多代码都是样板文件,不需要测试
  • 正如上面所暗示的,取决于代码,无论如何 JVM JUnit 高达 60%(不准确)和检测高达 25%(不准确)

标签: android unit-testing


【解决方案1】:

正如在 cmets 中所写,没有单个数字,因为它取决于代码。

  • 对于自动生成的代码,百分比甚至可以是 0% - 当然,必须测试代码生成器(以及生成器使用的代码 sn-ps),以及控制发电机。但是,如果这一切都完成了,对生成的代码进行单元测试可能不会带来任何额外的价值。

  • 有时会引入包装代码以将组件与其依赖项分开。包装器是用来模拟的,但不是用来进行单元测试的。

  • 稳健性代码(例如,已明确涵盖所有情况的 switch 语句中的默认情况)不能明智地进行单元测试,因为它无法访问。

  • 一些代码只包含交互,因此应该进行集成测试而不是单元测试。

  • 某些代码(可以争论)在单元测试时太琐碎了,无法带来任何价值。

设定覆盖目标也会带来一些风险:

    1234563 20% 的代码不是。而且,80% 的覆盖率会给您的管理层一种低风险的错误印象。
  • 即使是被覆盖的代码也可能没有经过很好的测试。它甚至可能根本不进行测试——只执行,而不评估结果。

不幸的是,质量组织很少会接受这样的论点。另一方面,这是可以理解的,因为开发通常会推迟质量活动,以便能够满足客户的最后期限。

最好的方法是在项目中拥有一个或多个质量工程师(不是质量经理),他们受到质量组织的信任,但另一方面不要只看覆盖范围百分比,但测试套件的真实质量。

【讨论】:

    猜你喜欢
    • 2021-12-14
    • 2020-10-29
    • 2023-04-07
    • 1970-01-01
    • 2010-10-14
    • 2012-01-18
    • 1970-01-01
    相关资源
    最近更新 更多