关于测试:为什么我应该练习测试驱动开发?应该如何开始?

关于测试:为什么我应该练习测试驱动开发?应该如何开始?

Why should I practice Test Driven Development and how should I start?

在开始编写代码之前,许多人谈论为代码编写测试。 这种做法通常简称为"测试驱动开发"或TDD。 通过这种方式编写软件可以获得什么好处? 我如何开始这种练习?


有很多好处:

  • 您会立即获得有关代码是否正常工作的反馈,从而可以更快地发现错误
  • 通过查看测试从红色变为绿色,您知道您拥有有效的回归测试和有效的代码
  • 您将有信心重构现有代码,这意味着您可以清理代码而不必担心它会破坏什么
  • 最后,您可以在自动化构建过程中运行一套回归测试,以使您更加确信自己的代码库是可靠的

最好的开始方法是开始。肯特·贝克(Kent Beck)有一本关于测试驱动开发的好书。只是从新代码开始,不必担心旧代码……只要您需要重构某些代码,为现有功能编写测试,然后对其进行重构,并确保测试保持绿色。另外,请阅读这篇很棒的文章。


收益部分最近已涉及到,从何处开始。...在小型企业系统中,未知数不多,因此风险较低。如果您还不了解测试框架(例如NUnit),请从学习开始。否则首先编写您的第一个测试:)


好处

  • 您了解如何分隔代码
  • 您可以弄清楚您想要代码执行的操作
  • 您知道应该怎么做,并且在将来,如果重构无法解决任何问题
  • 使您养成确保您的代码始终知道它应该做什么的习惯
  • 入门

    去做就对了。为您要执行的操作编写一个测试用例,然后编写应通过测试的代码。如果您通过了测试,那就太好了,您可以继续编写代码总是会失败的案例(例如2 + 2不应等于5)。

    一旦所有测试通过,请编写实际的业务逻辑以执行您想做的任何事情。

    如果您是从头开始,请确保找到了易于使用的良好测试套件。我喜欢PHP,因此PHPUnit或SimpleTest可以很好地工作。几乎所有流行语言都提供了一些xUnit测试套件,以帮助构建和自动化测试。


    在我看来,最重要的一点是,它显然使您可以查看代码是否按预期执行。这看起来似乎很明显,但是正如我过去发现的那样,很容易将您的最初目标误入歧途:p


    推荐阅读