在 2025 收官前,看清 Data + AI 的真实走向,点击查看 BUILD 大会精华版 了解详情
写点什么

介绍行为驱动开发

  • 2015-02-16
  • 本文字数:950 字

    阅读完需:约 3 分钟

当定义了新项目的期望结果后,行为驱动开发 (BDD)有助于克服开发人员对构建产品需求的理解与业务人员对需求引起的技术困难理解之间的差距。其原因是两组之间的沟通得到了改善,Alistair Stead 和 Konstantin Kudryashov 两人都在Inviqa 工作,在他们的 BDD 入门指南中针对业务和技术人员做了解释。

Stead 和 Kudryashov 把 BDD 分成了两个主要的实践:用通用语言写用例来描述行为,以及用这些用例作为自动化测试的基础。结合这两个实践就可以为用户验证其功能性,以及在整个项目周期中系统的行为与所定义的一致。

Stead 和 Kudryashov 指出的 BDD 的关键元素包括:

  • 创建目标,最好在项目开始的时候从业务的角度定义具体的,以及可衡量的目标。
  • 影响地图( Impact Mapping),是找到一种可以达到设定目标的、对业务最重要的那些功能的方法。影响地图可视化了为什么这些功能是需要的,以及为达到目标需要改变的那些行为。
  • 复杂度分析,找到一种最适合开发与合作方法的方式,例如 Cynefin
  • 用用例做计划,通过用例来描述业务规则,以及提供上下文来避免误解。这些用例接下来还应该转化成开发阶段所使用的测试用例。
  • 通用语言( Ubiquitous language,这是来自于领域驱动设计(Domain-Driven Design(DDD)) 方法的术语,指的是开发人员和业务人员为某个领域中的术语达到共同的理解,而使用的一种共享语言。
  • 通过用例开发。通过一种形式语言和类似于 Cucumber 的自动化工具实现,用例可以转化成可执行的规范,从而验证实现的功能。
  • BDD**** 循环。能够提供对系统大变更的支持。使用可执行的规范,并将单元测试作为系统的各个部分应该如何表现的对象规范,就能够获得可以处理任意大小规模变更的能力。

在一次对 Dan North (他在 2006 年左右开发了 BDD)的采访中,他强调 BDD 不是关于测试的,它是在应用程序存在之前,写出用例与期望,从而描述应用程序的行为,并且促使在项目中的人们彼此互相沟通。North 说明了保持人们互相亲近的重要性,分离式结构或跨地域团队是成功实施 BDD 一大障碍。

查看英文原文: Introducing Behaviour-Driven Development


感谢邵思华对本文的审校。

给InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家通过新浪微博( @InfoQ )或者腾讯微博( @InfoQ )关注我们,并与我们的编辑和其他读者朋友交流。

2015-02-16 09:534687
用户头像

发布了 55 篇内容, 共 16.4 次阅读, 收获喜欢 8 次。

关注

评论

发布
暂无评论
发现更多内容

NFTScan | 07.17~07.23 NFT 市场热点汇总

NFT Research

NFT\

可视化逻辑编排工具——低代码/无代码平台

互联网工科生

软件开发 低代码 无代码 JNPF

记一次容器环境下出现 Address not available

阿里巴巴云原生

阿里云 容器 云原生

第一批AIGC独角兽开始裁员了

Openlab_cosmoplat

人工智能

openGauss 5.0.0支持用户级全量审计解密

daydayup

opengauss

openGauss数据库源码解析系列文章——执行器解析(1.1)

daydayup

opengauss

openGauss数据库源码解析系列文章——执行器解析(1.2)

daydayup

opengauss

openGauss数据库源码解析系列文章——执行器解析(1.3)

daydayup

opengauss

openGauss数据库源码解析系列文章——执行器解析(2.2)

daydayup

opengauss

openGauss数据库源码解析系列文章——SQL引擎源码解析(1.1)

daydayup

opengauss

大模型,开源干不掉闭源

脑极体

开源 大模型

3种常见的测试自动化类型

汽车之家客户端前端团队

前端 单元测试 集成测试 自动化测试 端到端

活动回顾丨云原生技术实践营广州站回放 & PPT 下载

阿里巴巴云原生

阿里云 云原生

云和恩墨大讲堂 x 长江鲲鹏 x openGauss Meetup(武汉站)圆满落幕!

daydayup

opengauss

安卓快速启动,启动速度 285 毫秒的实时安卓操作系统(RTAndroid)或 实时 Linux

winfredy

android Linux 快速启动

MobPush Android SDK 厂商推送限制

MobTech袤博科技

消息推送 Android; 智能推送 推送 推送系统

k8s+containerd安装

tiandizhiguai

k8s

如何理解 Next.js中的 SSR、CSR、SSG 、ISR以及DPR技术

汽车之家客户端前端团队

前端 SSR React服务端渲染原理

openGauss数据库源码解析系列文章——执行器解析(2.1)

daydayup

opengauss

openGauss数据库源码解析系列文章——SQL引擎源码解析(1.2)

daydayup

opengauss

TE智库|《2023中国营销+AIGC市场研究报告》,解读首个被AIGC深度影响的场景

TE智库

Nautilus Chain 主网上线,Zepoch 持有者将获第三轮 POSE 空投

鳄鱼视界

Docker学习路线10:容器安全

小万哥

Java c++ Python Go Docker

絮语2023

IT民工大叔

【SPS人物志】安艺:永不服输是电竞选手最大的魅力

极客天地

介绍行为驱动开发_语言 & 开发_Jan Stenberg_InfoQ精选文章