打破消极循环
  我想你已经想到有一个办法可以解决这种现象。让我们来绘制一幅不同的场景:

  我们可以从一个理想计划“项目按时完工”开始。我们开发代码,然后立即测试它。测试好是自动化(编码实现)的,这样我们可以轻松有效的去执行它们。我们把开发和测试紧密的结合在一起,每个开发测试循环可以很快速的执行。当一个开发测试循环结束时我们有信心保证代码质量是很高的,因为它已经通过了测试。而且用户因为发现缺陷(bug)的数目变少而对我们继续高度信任。即使他们发现了一个缺陷(这依然是有可能的),我们也可以扩充我们的测试集合,去避免相关缺陷的重现。
  如此下去,返工将不再是必须的,项目得有继续。
  如果我们的项目已经延期了,需要我们花些时间来采用这种方法论。对新功能的冻结也许是必须的。停止开发新的代码,取而代之去为严重的(恼人的-清晰的-高代价的)缺陷编写测试。
  项目延期的情况下再去为你完整的代码库编写测试是不可行的,只针对其中的一些部分可以,不要去浪费你的时间。但是要记住其它部分也还是需要编写测试的。我在这种情况下会去找出严重的问题(划分优先级),然后为它们编写测试。之后“快速”修改代码会变的更容易,并且可以保证在修改其他部分是它不会出错。自动化测试可以很频繁的执行,从而降低了缺陷(bug)重现的风险。好了,现在可以开始去有效的强健我们项目了
  上面这些通常会要求进行代码重构,从而使它可测试化。我会在另一篇文章里介绍它。
  总结
  大部分的项目中,会考虑测试和编码之间的平衡。不过我希望大家都能清楚,测试其实是项目的加速器,而不是在浪费时间。