BDD-in-action
No related notes
Outlinks (0)
No outlinks found
Backlinks (0)
No backlinks found
1 · 读书笔记:BDD-in-action#
BDD in Action, Second Edition
一句话补充如下点:
- 是什么(What)— 理论/原则,建立认知模型
- 为什么(Why)— 背后的动机、约束与权衡
- 怎么做(How)— 技巧 + 实践 + 边界(该做与不该做)
1.1 · 核心观点:
BDD 不只是一种测试技术,而是一种协作式软件设计方法:通过结构化对话(业务目标→Feature→Example→可执行规格),让所有人(开发、测试、业务方)对”软件该做什么”达成共识,再将共识转化为可自动验证的活文档。
- What: BDD = 用具体示例(Example)描述期望行为,形成可执行规格(Executable Specification),既是需求文档又是验收测试。
- Why: 约一半的软件项目未能交付真正的需求。根因不是技术,而是沟通——需求理解不一致、假设未被暴露。BDD 通过”先对齐行为,再写代码”来降低这个风险。
- How: 自顶向下的三阶段循环:
- Speculate(发现):从业务目标出发,用 Feature Injection / Impact Mapping 找出高价值 Feature。
- Illustrate(具象化):用 Example Mapping 等协作会议,将 Feature 拆解为具体示例,暴露边界与假设。
- Automate(自动化):示例 → Given/When/Then 格式 → 自动化验收测试 → 活文档(Living Documentation)。
1.2 · 启发点(关键洞察):
- “Outside-In”开发:从业务行为(验收测试)向内驱动到单元测试,确保每一行代码都服务于已确认的行为,而非凭空设计。
- Deliberate Discovery(刻意发现):项目最大的风险是”不知道自己不知道什么”。BDD 的协作对话本质上是一个结构化的”发现无知”过程。
- Real Options(真实选项):推迟决策直到获得足够信息——选项有价值、选项会过期、了解了原因再行动。避免在信息不足时过早承诺方案。
- 分离 What 与 How:验收测试三层架构——业务规则层(Scenario 描述)/ 业务流程层(Step 实现)/ 技术层(UI/API 交互)。Scenario 应稳定不变,实现细节可随时替换。
- 活文档(Living Documentation):可执行规格自动产出的文档始终与代码同步,消灭”文档过期”问题,也让非技术人员能随时查看系统当前行为。
- BDD 建立在 TDD 之上:BDD 不替代 TDD,而是在更高层次(行为/需求层)补充 TDD,两者形成”外→内”的双层驱动。
1.3 · 行动:
- 在需求讨论中引入 Example Mapping 会议:用四色卡片(规则-示例-问题-故事)快速对齐理解,暴露假设。
- 尝试用 Given/When/Then 格式书写关键业务场景的验收标准,即使暂不自动化,也能改善沟通精度。
- 实践 Outside-In 开发流程:先写一个失败的验收测试描述行为,再向内补充单元测试和实现代码。
1.4 · 金句:
- “BDD is about conversations, not testing.” —— BDD 的核心在于对话,而非测试本身。
- “The biggest risk on most projects is not that we will build it wrong, but that we will build the wrong thing.” —— 最大风险不是做错,而是做了不该做的东西。
- “Examples are the unit currency of BDD.” —— 示例是 BDD 的基本货币。