测试驱动开发不仅仅是测试优先

发表于:2017-05-08来源:未知作者:翻译:雁惊寒点击数: 标签:tdd
让我来告诉你是什么让我能够写出灵活度高,可读性强,并且容易维护的代码。这即不是一个新的框架,也不是一个新的强大的IDE,而是一个更好的东西,与技术无关,与你正在使用的

让我来告诉你是什么让我能够写出灵活度高,可读性强,并且容易维护的代码。这即不是一个新的框架,也不是一个新的强大的IDE,而是一个更好的东西,与技术无关,与你正在使用的编程工具也无关。这是一个被称为测试驱动开发(Test Driven Development,简称TDD)的软件开发过程。

这可能不是你第一次听说TDD。这是一个现在很受欢迎的开发过程,不是因为每个人都在使用它,而是因为每个人对它都有一定的想法。今天我将和你一起分享我对它的一些观点。

什么是TDD?

当我在和某些人探讨TDD时,他们告诉我说“TDD就是先做测试”,我知道,他们弄错了。如果你正在做的唯一一件事情只是编写测试用例,那么你实际上并不是在做TDD。提前编写测试用例虽然是是构成TDD过程的其中一部分,但它并不是TDD。请注意,我把TDD称之为一个过程,因为它就是一个真正的软件开发过程

为什么需要有这么一个软件开发的过程呢?类似的,医生需要有一个做手术的过程,以确保能顺利完成手术!虽然遵循这个过程并不能保证一直都表现良好,但是如果没有这个过程,那你迟早会把工作搞砸。而这种单次失败可能会对你的声誉造成很大的影响。请记住,你应该始终保持良好的表现,而不是偶尔的表现伟大一次。

你可能会说“我已经有一个开发过程了,而且我每次开发软件都是遵循的这个过程,而不是TDD”。那很好,虽然我是TDD的倡导者,但我并不是狂热地相信TDD是编写好软件的唯一途径。有很多开发人员即使不使用TDD,也可以始终如一地生产出高品质的软件。他们有自己的开发过程。然而,我还没有看到有一个过程能像TDD那样产生这么好的结果。因此,我坚信每个软件开发人员都可以从TDD中受益。如果你知道一个比TDD更棒的方案,请在此博客文章后面发表评论或给我发消息,我很乐意听到它!

TDD的关键力量

在开发高质量的软件时,这三件事是开发者需要重复进行的:设计,测试和重构。你首先必须要对软件做一些设计,以确定如何实现该软件。然后做一些测试来验证它是否按照设计的要求来运行。同时,你还必须重构一些代码,以使其保持简洁,并易于维护。

TDD的好处在于将这三件事情合并到只需要几分钟就能完成的小周期里。这实际上意味着你的工作由一个个的小的迭代组成,每次迭代结束后,都会产生一份干净并且可测试的代码。因此,当你使用TDD时,你的代码不会长时间的保持丑陋,或者无法运行。下面,让我们进一步地分析,为什么小周期中的设计、测试和重构会让你受益匪浅?

  • 设计

设计软件本身就是一个迭代的过程。不可能100%的设计都在软件运行之前完成。为什么?因为有些信息要达到了某些开发关键点时才能够发现。因此,在软件开发过程中,只要获得了一点信息,你都可以做一些小小的设计,这样能使你更好地做出决定。

原文转自:http://geek.csdn.net/news/detail/195645