尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

行为驱动开发—BDD

行为驱动开发—BDD 一、什么是 BDDBDD Behavior‑Driven Development行为驱动开发是从 TDD 测试驱动开发 演进而来的敏捷开发方法论。核心思想用业务人员、产品、开发、测试都看得懂的自然语言描述系统行为再把这份描述直接变成可执行测试打通需求‑开发‑测试。1.1 BDD 解决什么痛点传统模式痛点产品写需求文档语言模糊、有歧义开发按自己理解实现代码测试按自己理解写用例最后上线发现大家理解的不是同一个东西TDD 痛点TDD 是开发者视角写单元测试代码业务人员看不懂测试用例。BDD 做法所有人用统一的语言描述当发生什么事情、做什么操作、应该得到什么结果。这份文档既是需求说明又是自动化测试脚本。1.2 BDD 核心关键词行为 Behavior系统对外表现出来能做什么而不是内部怎么实现通用语言 Ubiquitous Language业务、开发、测试共同认可的术语Gherkin自然语言脚本格式用来描述场景Given‑When‑ThenBDD 标准句式二、Given‑When‑Then 模型这是 BDD 场景标准三段式结构关键字含义Given前置条件、初始状态系统处于什么环境When触发动作用户 / 外部做了什么操作Then预期结果系统应该产生什么行为可选关键字And / But用来拼接多条 Given / When / Then举一个最简单业务例子用户登录不用 BDD 口语描述用户输错密码不能登录。BDD 标准场景写法 GherkinFeature:用户登录功能 As一个用户 I want能够登录系统 So that可以访问个人中心 Scenario:密码错误时登录失败 Given 用户账号是admin And 用户密码是错误密码123456 When 用户提交登录请求 Then 返回登录失败提示 And 不能进入首页这份 Gherkin 文件普通人都看得懂同时可以被 BDD 框架解析自动跑测试。三、BDD 和 TDD 的区别维度TDD 测试驱动开发BDD 行为驱动开发视角开发者视角函数、方法、类业务视角、系统对外行为语言Java/Python 代码写测试自然语言 Gherkin 代码实现受众开发人员产品、测试、开发、业务方全员粒度偏向单元、方法级别偏向业务功能、用户场景关注点代码是否正确业务行为是否符合需求关系BDD ≠ 取代 TDDBDD 高层场景TDD 底层单元简单一句话TDD先写测试代码再写业务代码BDD先用自然语言定义业务行为再开发 自动化验证这个行为四、Java 生态主流 BDD 框架Java 最常用两套Cucumber-JVM业界最标准 BDD 框架支持 GherkinSpockGroovy偏向单元层面 BDD 本文选用Cucumber JUnit5 Maven完整可运行 DemoCucumber 原理整体流程编写.feature文件使用 Gherkin 自然语言描述场景编写步骤定义 Step DefinitionJava 代码把每一句 Gherkin 语句绑定到一段 Java 执行代码运行测试Cucumber 解析 feature逐条执行对应的 Java 代码校验结果生成测试报告feature 文件 和 Java 代码通过注解绑定文字匹配方法。五、BDD 完整开发流程标准 BDD 开发流程俗称3 个朋友讨论产品、开发、测试三方一起开会梳理业务场景示例梳理 Example Mapping 示例映射讨论这个功能有哪些场景正常场景、异常场景使用 Gherkin 编写 Feature、Scenario用 Given‑When‑Then 写出清晰行为评审 feature 脚本所有人确认需求理解一致开发人员编写业务代码 实现 Step 步骤代码运行 Cucumber 测试验证行为如果失败修复代码直到场景全部通过feature 文件长期维护成为活文档Living Documentation
返回列表