Coursera 笔记

Module 02 · DevOps & CI/CD开发运维与持续集成·持续交付

Behavior Driven Development (BDD)行为驱动开发(BDD)简介

Coursera ↗

学习目标

观看本视频后,你将能够:

  • 解释什么是 行为驱动开发(BDD),
  • 确定在软件测试过程中,执行 BDD 的适当级别。

什么是行为驱动开发(BDD)?

行为驱动开发(BDD) 专注于从外部观察系统的行为,而不是像测试驱动开发(TDD)那样关注系统内部的工作原理。
它关注的是 系统的行为,就像系统的用户那样观察。BDD 使得 集成测试 变得非常有价值,因为它帮助我们判断系统各个组件是否能够有效协同工作。

BDD 的关键特点

  • 从外部到内部:BDD 强调从外部观察系统的行为,而不是深入内部工作。
  • 关注业务成果:它会帮助你实现对业务结果贡献最大的行为。
  • 易于理解的语法:BDD 使用的语法简单明了,领域专家、测试人员、开发人员和客户都能轻松理解。这大大改善了团队之间的沟通。

BDD 与 TDD 的区别

TDD(测试驱动开发)

  • 关注点:TDD 聚焦于 测试系统功能的内部实现,例如测试单元的工作原理。
  • 测试方式:TDD 从 内部到外部,通过测试代码的内部功能来确保系统按预期工作。
  • 测试层级:主要用于 单元测试,确保各个单元能正确执行。

BDD(行为驱动开发)

  • 关注点:BDD 更加关注系统的 外部行为,比如用户与系统的交互方式。
  • 测试方式:BDD 从 外部到内部,它的目的是测试系统在不同场景下的行为是否符合用户的预期。
  • 测试层级:主要用于 集成测试、系统测试 和 用户验收测试,测试的是系统整体行为而非单个组件。

BDD 的实际案例

例如,在在线购物时,当你将商品添加到购物车时,BDD 可能会问:

“当我将商品添加到购物车时,商品是否会出现在我的购物车中?”

对于这种测试,我们不关心调用了哪个 API,也不关心数据是如何传输的。我们关心的是:

  • “商品是否出现在购物车中?”

同样,当你从购物车中删除商品时,系统应该表现为:

“商品已经从购物车中移除。”

这里我们关注的是 系统的外部行为,例如点击“从购物车中删除”按钮后,商品是否从购物车中消失。我们不关心后台的 API 调用或其他实现细节。


软件测试过程回顾

为了更好地理解 BDD 在测试过程中的位置,先让我们快速回顾一下 软件测试的不同层级:

测试层级 描述 目标
单元测试 测试软件系统中的单个单元或组件。 验证每个单元是否按预期工作。
集成测试 测试组合后的各个单元,检查它们作为一个整体的行为。 发现单元间交互的缺陷。
系统测试 测试整个系统的端到端功能。 确保系统各部分能够协同工作,满足高层次需求。
用户验收测试 用户测试系统是否符合预期。 确认系统是否满足用户的需求并可以投入使用。

BDD 在软件测试过程中的位置

  • 执行时机:通常,BDD 在 集成测试、系统测试 或 用户验收测试 层级中执行。
  • 为什么是这些层级?:这些层级的测试通常已经有足够的系统功能在运行,能够对系统行为进行评估。

总结回顾

在本视频中,你学到了:

  • BDD 是从外部观察系统的行为,确保系统按预期运行。
  • 在软件测试过程中,进行 BDD 测试的适当层级是 集成测试、系统测试 和 用户验收测试。