TDD、BDD、ATDD 都是什么、有什么区别?(下)

本贴最后更新于 319 天前,其中的信息可能已经天翻地覆

《TDD、BDD、ATDD 都是什么、有什么区别?(上)》中,我们探讨 TDD、BDD 和 ATDD 的概念。虽然 TDD、BDD 和 ATDD 都是软件开发中使用的测试方法,但它们在方法和重点上有所不同。

TDD、BDD 和 ATDD 之间的主要区别在于关注点、抽象层级和协作。

1、关注点

TDD 侧重于测试代码并确保它满足需求。BDD 关注软件的行为,并确保它满足业务需求。ATDD 关注于验收标准,并确保软件满足业务需求。

2、抽象层级

TDD 专注于代码级别,并使用单元测试来验证代码的功能。BDD 专注于功能级别,并使用场景来描述所需的行为。ATDD 专注于验收标准,并使用验收测试来验证软件是否满足要求。

3、协作

TDD 主要是一个以开发人员为中心的过程,包括编写测试和代码。BDD 和 ATDD 涉及开发人员、测试人员和涉众之间的协作,以确保软件满足业务需求。

虽然这三种方法有一些相似之处,但它们在方法、范围和目的上有所不同。

1、范围

TDD 专注于代码的开发和验证其行为的测试。这个过程从编写一个失败的测试用例开始,然后编写通过测试所需的最低数量的代码,然后重构代码。TDD 确保代码在发布之前经过彻底测试并满足要求。

BDD 将 TDD 的范围扩展到包括整个系统的行为。BDD 关注的是系统的行为,而不是它的实现细节。BDD 场景以一种称为 Gherkin 的特定格式编写,该格式使用 Given When Then 语法来描述系统行为的前提条件、操作和预期结果。这些场景作为系统的验收标准,确保团队正在构建正确的东西,并确保系统满足用户的需求。

ATDD 侧重于系统的验收标准。该团队合作以自动测试的形式定义系统的验收标准。测试以所有利益相关者都可以访问的特定格式编写,并使用 Given When Then 语法来描述系统的预期行为。ATDD 测试是系统的验收标准,确保团队正在构建正确的东西,并确保系统满足用户的需求。

2、术语

TDD 使用术语词汇表,并专注于代码的行为。TDD 测试是由开发人员编写的,旨在确保代码的行为符合预期。TDD 测试通常使用与测试代码相同的编程语言编写。

BDD 使用对业务友好的词汇表,并专注于系统的行为。BDD 场景以一种称为 Gherkin 的特定格式编写,该格式使用 Given When Then 语法来描述系统行为的前提条件、操作和预期结果。BDD 场景通常由业务分析师或产品所有者编写,他们对用户的需求和要求有深入的了解。

ATDD 使用对业务友好的词汇表,并专注于系统的验收标准。ATDD 测试以所有利益相关者都可以访问的特定格式编写,并使用 Given When Then 语法来描述系统的预期行为。ATDD 测试通常由对用户的需求和要求有深入了解的业务分析师或产品所有者编写。

3、目的

TDD 的目的是确保代码在发布之前经过彻底测试并满足要求。TDD 测试作为代码的规范,帮助开发人员在开发周期的早期发现 bug 和缺陷。

BDD 的目的是确保团队正在构建正确的东西,并且系统满足用户的需求。BDD 场景作为系统的验收标准,确保团队正在构建正确的东西,并确保系统满足用户的需求。

ATDD 的目的是确保团队正在构建正确的东西,并且系统满足用户的需求。ATDD 测试是系统的验收标准,确保团队正在构建正确的东西,并确保系统满足用户的需求。ATDD 测试还推动开发过程,确保代码在发布前经过测试并符合验收标准。

4、方法

TDD 遵循自上而下的软件开发方法。它首先编写一个测试用例,然后编写通过该测试的代码。重复该循环,直到满足所有要求。TDD 鼓励开发人员编写可测试和可维护的代码,从而获得更高质量的产品。

BDD 遵循行为驱动的软件开发方法。它首先以场景的形式定义系统的期望行为,描述系统在不同情况下的行为。这些场景是用一种名为 Gherkin 的特定格式编写的,该格式使用 Given When Then 语法来描述系统行为的前提条件、操作和预期结果。BDD 场景通常由业务分析师或产品所有者编写,他们对用户的需求和要求有深入的了解。

ATDD 遵循与 BDD 类似的方法,但侧重于系统的验收标准。该团队合作以自动测试的形式定义系统的验收标准。测试以所有利益相关者都可以访问的特定格式编写,并使用 Given When Then 语法来描述系统的预期行为。ATDD 测试通常由对用户的需求和要求有深入了解的业务分析师或产品所有者编写。

总结

测试驱动开发(TDD)、行为驱动开发(BDD)和验收测试驱动开发都是近年来流行的软件开发方法。虽然这三种方法都旨在提高软件质量和减少缺陷,但它们的方法、范围和目的各不相同。

  • 程序员

    程序员是从事程序开发、程序维护的专业人员。

    567 引用 • 3532 回帖

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...
zentao
15年倾全力打造开源项目管理软件 助力100万+团队构建研发管理平台 青岛