Module 02 · DevOps & CI/CD开发运维与持续集成·持续交付
Behavior Driven Development (BDD)行为驱动开发(BDD)简介
学习目标
观看本视频后,你将能够:
- 解释什么是 行为驱动开发(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 测试的适当层级是 集成测试、系统测试 和 用户验收测试。