是否存在过多的单元测试?

Asc*_*ian 19 unit-testing

我试着查看有关单元测试的所有页面,但找不到这个问题.如果这是重复,请告诉我,我将删除它.

我最近的任务是帮助我公司实施单元测试.我意识到我可以对所有Oracle PL/SQL代码,Java代码,HTML,JavaScript,XML,XSLT等进行单元测试.

是否存在过多的单元测试?我应该为上述所有内容编写单元测试还是过度杀伤?

Aid*_*ell 18

这取决于项目及其对失败的容忍度.没有一个答案.如果您可以冒险,那么不要测试所有内容.

当你有大量的测试时,你的测试中也可能会有bug.加入你的头痛.

测试什么需要测试,留下什么不经常留下相当简单的东西.

  • 我们测试中的错误?也许我们应该为我们的测试编写单元测试. (8认同)
  • +1测试中的错误 - 它们与代码中的错误一样可能. (2认同)

LBu*_*kin 11

是否有太多单元测试的东西?

当然.问题是在足够的单元测试之间找到适当的平衡,以涵盖功能的重要领域,并专注于在系统功能方面为客户创造新价值.

单元测试代码与测试未覆盖的离开代码都有成本.

从单元测试中排除代码的成本可能包括(但不限于):

  • 由于修复问题导致开发时间增加,无法自动测试
  • 修复QA测试期间发现的问题
  • 修复代码到达客户时发现的问题
  • 由于客户对通过测试的缺陷不满意导致的收入损失

编写单元测试的成本包括(但不限于):

  • 编写原始单元测试
  • 随着系统的发展,维护单元测试
  • 在测试或生产中发现它们时,优化单元测试以涵盖更多条件
  • 重构单元测试作为测试中的底层代码被重构
  • 当您的应用程序进入市场需要更长时间时,收入会减少
  • 实施可以推动销售的功能的机会成本

您必须最好地判断这些成本可能是什么,以及您对吸收此类成本的容忍度.

通常,单元测试成本主要在系统的开发阶段吸收 - 有些在维护期间.如果您花费太多时间编写单元测试,您可能会错过将产品推向市场的宝贵机会之窗.如果您在竞争激烈的行业中运营,这可能会使您的销售成本甚至长期收入.

在生产过程中,系统的整个使用寿命期间都会吸收缺陷成本 - 直到缺陷得到纠正.而且,甚至可能超出这个范围,如果它们的缺陷足够严重,它会影响贵公司的声誉或市场地位.


Joh*_*lan 6

JUnit的 Kent Beck 和JUnitMax的名声回答了我的类似问题.这个问题的语义略有不同,但答案肯定是相关的