BDD - BDD with Agile 敏捷 BDD

  • 引言
  • Agile 敏捷开发
    • Agile 概括
    • Agile 原则
    • BDD 和 Agile 的关系
  • BDD 和 Acceptance Tests 验收测试
  • Shift Left 左移
  • BDD 适合所有人
    • The Three Amigos 三个好朋友
  • 不同 Sprint 下 Story 的发展进程
    • 传统 Sprint 周期
    • behavior-driven 行为驱动 Sprint 周期
    • 进一步 Shift Left 左移 的 Srpint 周期

引言

有关 BDD 概念,请参考 BDD - 介绍 Behavior-Driven Development 行为驱动开发,本文主要结合 Agile,发挥 BDD 在整个团队的作用。

Agile 敏捷开发

Agile 概括

Agile 敏捷开发是一个增量的,迭代的,协作的软件开发过程。Team 团队计划一个 Sprint 周期的 User Stories 用户故事,这些 Story 都有验收标准,团队围绕 Story 的工作(开发,测试,自动化)都必须完成。

Agile 原则

来自 the Agile Manifesto 敏捷开发宣言

Individuals and interactions over processes and tools
Working software over comprehensive documentation
Customer collaboration over contract negotiation
Responding to change over following a plan

个体和交互胜过过程和工具
可运行的软件胜过详尽的文档
客户参与协作胜过合同谈判
响应变化胜过遵循计划

BDD 和 Agile 的关系

BDD 通过协作和简化流程来提高质量。有助于规范验收测试。

  • 补充 Agile
  • 是 Agile 的一个改进
  • 不是 Agile 的翻修和改造
  • 由 QA 驱动

BDD 和 Acceptance Tests 验收测试

Acceptance Criteria 验收标准是一系列用来接收和检验 Story 完成必须满足的条件。Acceptance Tests 验收测试是覆盖验收标准的场景测试。

例如: 一个行为驱动的用户故事 A Behavior-Driven User Story

User Story
As a Baidu user
I want to search for some terms
So that I can get info for my search

Acceptance Criteria
Given a user is on Baidu home page
When the user searches for “BDD”
Then the results page shows document links for “BDD”

我们可以得出:
Requirements 需求 = Acceptance Criteria 验收标准 = Tests 测试!

BDD 帮助团队方便将验收测试转换成自动化测试。Acceptance criteria 验收标准往往被忽略,它可能缺失或漏写,导致团队误解,从而引发浪费时间,Story 的不完整,无效的 features. Gherkin 语言规范化验收标准来提高沟通,规范化也使得测试方便被自动化。

Shift Left 左移

Shift Left 左移是在软件开发生命周期尽早开展测试和 QA 工作。尽早发现问题意味着后面花更低的成本.
BDD 就是左移,因为验收标准可以在一个 Spring 早期用 Gherkin 编写,开发在实现功能的同时,QA 可以准备测试。

BDD 适合所有人

因为 BDD Scenario 场景是用直白的语言写的,所以每个人都能理解。
对 PO (product owners) 来说,它们是需求
对开发来说,它们是验收标准
对自动化工程师来说,它们是脚本
对其它 stakeholders 利益相关人员,它们是描述,说明规格

The Three Amigos 三个好朋友

Agile 的三个主要角色,PO(Product Owner), Developer 开发, 和 Tester 测试,他们是三个好朋友。
他们定期开会:

  • 讨论 Story 和 验收标准
  • 澄清任何不确定性
  • 将验收标准翻译成 Gherkin 示例(QA-Lead)

这三个好朋友的目的就是为了让所有人都达成一致 on the same page !

不同 Sprint 下 Story 的发展进程

传统 Sprint 周期


在一个传统 Sprint 周期,Story 的各阶段进程是顺序的。测试行为通常是在 Sprint 的后期进行,如果有问题,将造成 Story 不能完成的风险。

behavior-driven 行为驱动 Sprint 周期


在一个行为驱动 Sprint 周期,三个好朋友在开始时就会面,QA 可以领先将验收标准翻译成 Gherkin Scenario,然后自动化跟开发并行执行。

进一步 Shift Left 左移 的 Srpint 周期


理想情况下,当一个团队非常擅长 BDD,在提交 Story 到一个 Sprint 之前,将验收标准 Gherkin 化在梳理 Grooming Story 时期进行。PO 也可以帮助 QA 开始用粗略的 Gherkin 写验收标准。

BDD - BDD with Agile 敏捷 BDD相关推荐

  1. TDD和BDD的区别 (TDD vs BDD)

    前言 如果你关注软件开发最佳实践方面的话题,你肯定听说过测试驱动开发(TDD - Test Driven Development) 和行为驱动开发(BDD - Behavior Driven Deve ...

  2. java bdd 框架_常见的BDD框架

    常见的BDD框架: ?C – Cspec ?C++ – CppSpec, Spec-CPP ?.Net – NBehave, NSpecify, SpecFlow ?Groovy – GSpec, e ...

  3. CMMI与Agile敏捷开发比较之一:两者的本质区别

    作者:陈勇 出处:blog.csdn.net/cheny_com 这是CMMI与敏捷开发比较系列的第一篇(之一,之二,之三). 本来不需要比较的两样东西,因为总是被安排到企业的一个部门(EPG)去管理 ...

  4. Agile敏捷开发管理Salesforce项目(第一篇)- 4大核心价值观+12条原则

    [什么是敏捷开发?]资深程序员之路(5)--agile开发 敏捷开发(scrum, agile)相对于瀑布流开发(waterfull)更适合现在快节奏的商业模式需求,它将一整个项目拆分为相互独立的小块 ...

  5. CMMI与Agile敏捷开发比较之二:需求管理篇(兼谈用敏捷实现和满足CMMI的ReqM过程域)...

    作者:陈勇 出处:blog.csdn.net/cheny_com 这是CMMI与敏捷开发比较系列的第二篇(之一,之二,之三). CMMI 前面在提到CMMI与敏捷的根本差异时提到CMMI是美国用于筛选 ...

  6. Agile——敏捷开发方法

    Agile目前没有明确的定义,其特点是对软件生产率的重视,适用于需求模糊,快速变化下,小型项目的开发.核心理念为适应和以人为本. Agile方法的指导原则: (1) 在快速不断地交付用户可运行软件的过 ...

  7. 高效的敏捷测试第十课 BDD实践和深化

    第24讲:BDD 及其自动化实践 在第 20 讲,我介绍了 TDD.UTDD 和 ATDD,主要讨论了需求的可测试性,通过测试先行的敏捷开发理念,比如先建立用户故事的验收标准,来提升需求的质量.今天在 ...

  8. 多元概率密度_利用多元论把握事件概率

    多元概率密度 Humans have plenty of cognitive strengths, but one area that most of us struggle with is esti ...

  9. 实时操作系统与分时操作系统的含义、特征

    版权声明:本文为CSDN博主「嵌入式小胖」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明. 原文链接:https://blog.csdn.net/m0_3776566 ...

最新文章

  1. win10 android 登录,Microsoft现在允许您在Win10中运行Android应用程序
  2. android按钮随机数,Android随机数
  3. nginx 访问控制之deny allow
  4. POJ2299 树状数组求逆序对
  5. ubuntu 系统相关有用的配置
  6. Winform中使用NPOI实现Excel导入并赋值给DataTable
  7. SLAM学习--2D激光SLAM-圣经-概率机器人学各种扩展
  8. 2021.NET大会日程首发!行程亮点全曝光!
  9. Windows 下 Redis 的下载和安装
  10. 在kali Linux中搭建DVWA
  11. webworker应用场景_初始WebWorker
  12. python中seth是啥意思_python中的seth是什么意思
  13. 使用JMH做Java微基准测试(二)Hello2020!
  14. 令人震惊的电子邮件归档调查
  15. @RequestBody 的使用方法和注意事项
  16. 【线性系统理论】0.线性系统基本概念(1)
  17. 医学知识-骨密度以及骨密度测量
  18. 防火墙导致的VNC连接服务器超时10060错误问题解决
  19. 深度 | 蚂蚁金融科技全面开放战略背后的“硬实力”
  20. Photoshop教程|ps渐变如何使用?如何给图片制作出渐变效果?

热门文章

  1. C语言程序设计作业07
  2. Chrome浏览器地址栏显示完整网址 不隐藏http/https的设置方法 87版本可用
  3. 新版SEO按天扣费系统PHP源码
  4. SuperMap轨迹点数据模拟数据生成
  5. 爱心宠物诊所系统(实训)
  6. Sublime Text 显示菜单栏
  7. Asp.net 处理程序(第五篇)
  8. Bootstrap从入门到实战---巨幕和旋转图标
  9. 谭浩强c 语言程序设计
  10. 【原创】NES第二波:如何用VS Code,编写NES/FC游戏程序。