TDD和Test First Development(或testing优先编程)之间有区别吗?

这两个想法听起来都非常类似于我,但是可能存在细微的差异或完全相同的东西,用不同的方式解释。 TDD和Test First Development / Programming之间有什么关系?

驱动因素是有差别的。

你对这个类(或者系统 – 当然可能发生在不同的尺度上)是什么样子应该是什么样的模糊的想法,然后想一想给出它的实际形状的testing? 这是TDD。

你是否确切地知道类的公共API应该是什么,并且在实现之前写testing呢? 这是testing优先发展。

我的风格往往是两者的混合体。 有时,在编写任何testing之前,很明显API应该是什么 – 在其他情况下,可testing性确实是驱动devise的原因。

换句话说,TDD从“我想问什么问题?”开始。 而非TDD(无论是否先testing)开头是“我想给什么答案?

他们基本上是用不同的名字来描述同样的事情 – 呃,实际上是五个名字,因为最后一个D可以代表devise和开发。

testing首先是testing代码重构周期中最初使用的术语,特别是在极限编程环境中。 “testing驱动开发”(Test Driven Development)这个名字后来被提出并被迅速采用,强调TFD是 – 而且一直是 – 更多的是devise策略而不是testing策略。

显然今天有些人对这两个术语有不同的含义,但这不是他们存在的意图,我不会依赖它作为常识(因为不是)。 事实上,我宁愿将TFD这个术语看作是弃用的。

这里有很多类似的术语,如testing优先编程,testing优先开发,testing驱动开发甚至testing驱动devise。 澄清几点很重要:

1.testing优先编程(TFP)

术语“testing优先编程”是编程的最佳实践。 Kent Beck在其“极限编程解释”一书中重新介绍了(如果不是创造的话):“在编程之前编写unit testing,并保持所有testing始终运行”。 所以,当谈到testing优先编程时,我们正在讨论编写自动化unit testing的开发人员,他们将编写代码来满足这些testing。 unit testing堆积并build立一个可以定期运行的自动回归testing套件。

2.testing驱动开发(TDD)

testing驱动开发(TDD)是Kent Beck在他的书“Test Driven Development by Example”中介绍的一种方法的名称。 这是一个软件开发过程,不仅是编写代码之前的testing。 整本书试图通过模式,工作stream程,文化等来解释它。 其中一个重要方面是重构重点。

有些人使用“testing先行开发”,“testing驱动devise”或“testing驱动编程”等术语。有一件事是肯定的:完善的方法是testing驱动开发,编程技术是testing优先编程。 其余的通常是指在代码之前编写testing的想法,或者错误地指代testing驱动开发或testing优先编程。

TDD = TFD +重构。

当你做TFD的时候,你应用一些重构来使代码更加通用和健壮。

他们是完全一样的东西。 先写参考书写testing,然后编写通过testing的代码

TDD(testing驱动开发)是testing的第一个开发/编程,尽pipe我已经看到并且听说TDD的意思是创build持久的,可重复的unit testing(甚至在代码之后),但是这实际上意味着testing是在他们testing的代码之前编写的。