Unit testing TDD是基于单元测试的吗?

Unit testing TDD是基于单元测试的吗?,unit-testing,testing,integration-testing,tdd,acceptance-testing,Unit Testing,Testing,Integration Testing,Tdd,Acceptance Testing,我搜索了很多,但找不到这个问题的正确答案。 有些文章定义了TDD,您可以在其中进行任何类型的测试。 一些文章只是说TDD只是关于功能测试,当涉及到验收测试时,它将是BDD而不是TDD。 所以 TDD真的只是单元测试吗?单元测试的定义没有被普遍接受的,因此,这个问题不可能有一个被普遍接受的答案 现代TDD是肯特·贝克的发明。如果你读过他的书《测试驱动开发:举例来说》,你会发现他使用的是没有依赖关系的小型确定性测试。这是进行TDD的一种常见方法,似乎符合大多数人对单元测试的定义 另一方面,仅仅因为K

我搜索了很多,但找不到这个问题的正确答案。 有些文章定义了TDD,您可以在其中进行任何类型的测试。 一些文章只是说TDD只是关于功能测试,当涉及到验收测试时,它将是BDD而不是TDD。 所以


TDD真的只是单元测试吗?

单元测试的定义没有被普遍接受的,因此,这个问题不可能有一个被普遍接受的答案

现代TDD是肯特·贝克的发明。如果你读过他的书《测试驱动开发:举例来说》,你会发现他使用的是没有依赖关系的小型确定性测试。这是进行TDD的一种常见方法,似乎符合大多数人对单元测试的定义

另一方面,仅仅因为Kent Beck最初使用单元测试来演示TDD技术,它并不排除其他类型的测试。另一个使用稍微广泛一点的测试的伟大资源是不断增长的面向对象软件,由Nat Pryce和Steve Freeman的测试指导。虽然他们不使用小黄瓜,但你可以认为这种方法与BDD是一致的——至少,我称之为一种由外而内的TDD

我曾经有机会与Dan North(BDD的发明者)谈过这些技术的总体目的,我认为我们一致认为,总体动机是获得快速反馈。使用单元测试,您可以在中运行测试套件。这几乎为您提供了有关API设计和实现的即时反馈

如果其他类型的测试可以给你类似的结果,那么它符合TDD的整体动机框架。确切地说,你所说的测试并不那么重要

但要回答这个明确的问题:

TDD真的只是单元测试吗


不,测试驱动开发(TDD)是一个过程,在这个过程中,您编写(单元)测试,并让您从这些测试中收到的反馈指导您确定下一步要做什么。一个常见的TDD工作流是。

对于单元测试是什么没有一个普遍接受的定义,因此对于这个问题不可能有一个普遍接受的答案

现代TDD是肯特·贝克的发明。如果你读过他的书《测试驱动开发:举例来说》,你会发现他使用的是没有依赖关系的小型确定性测试。这是进行TDD的一种常见方法,似乎符合大多数人对单元测试的定义

另一方面,仅仅因为Kent Beck最初使用单元测试来演示TDD技术,它并不排除其他类型的测试。另一个使用稍微广泛一点的测试的伟大资源是不断增长的面向对象软件,由Nat Pryce和Steve Freeman的测试指导。虽然他们不使用小黄瓜,但你可以认为这种方法与BDD是一致的——至少,我称之为一种由外而内的TDD

我曾经有机会与Dan North(BDD的发明者)谈过这些技术的总体目的,我认为我们一致认为,总体动机是获得快速反馈。使用单元测试,您可以在中运行测试套件。这几乎为您提供了有关API设计和实现的即时反馈

如果其他类型的测试可以给你类似的结果,那么它符合TDD的整体动机框架。确切地说,你所说的测试并不那么重要

但要回答这个明确的问题:

TDD真的只是单元测试吗

不,测试驱动开发(TDD)是一个过程,在这个过程中,您编写(单元)测试,并让您从这些测试中收到的反馈指导您确定下一步要做什么。常见的TDD工作流是

TDD真的只是单元测试吗

没有

用小规模测试驱动开发的问题(我称之为“单元测试”,但它们与公认的单元测试定义不太匹配)肯特·贝克,2003年

迈克尔·费瑟

…对于试图感染测试的团队来说,存在一个失败案例;您可能会编写非常慢的测试,这些测试运行时间太长,以至于它们基本上开始感觉像是行李,尽管它们可以帮助您捕获错误

重要的想法是测试应该快速可靠(这样它们就不会妨碍“重构”任务)。但这并不一定意味着测试对象需要小

也就是说,我们谈论的测试是程序员测试:它们是用来支持产品代码的生成的。支持其他涉众的测试是另一回事,受到不同的约束

TDD真的只是单元测试吗

没有

用小规模测试驱动开发的问题(我称之为“单元测试”,但它们与公认的单元测试定义不太匹配)肯特·贝克,2003年

迈克尔·费瑟

…对于试图感染测试的团队来说,存在一个失败案例;您可能会编写非常慢的测试,这些测试运行时间太长,以至于它们基本上开始感觉像是行李,尽管它们可以帮助您捕获错误

重要的想法是测试应该快速可靠(这样它们就不会妨碍“重构”任务)。但这并不一定意味着测试对象需要小

也就是说,我们谈论的测试是程序员测试:它们是用来支持产品代码的生成的。支持其他涉众的测试是另一回事,受到不同的约束