写点什么

介绍行为驱动开发

  • 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:534483
用户头像

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

关注

评论

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

数据分析的尽头不是可视化,而是行动!行动!行动!

Kyligence

数据分析 指标洞察

SEO 已死,LLMO 万岁

Jina AI

人工智能 搜索引擎 SEO 谷歌 ChatGPT

会议室怎么添加预约功能?快速解决会议室使用效率问题

天天预约

小程序 SaaS 线上预约 会议室 预约工具

Databend 借助对象存储帮你实现降本增效

Databend

用 SQL 慢死了,还是 Java Stream 快啊

风铃架构日知录

Java MySQL sql 后端 IT

MySql树形结构(多级菜单)查询设计方案

风铃架构日知录

Java MySQL 程序员 后端 IT

火山引擎DataTester升级:降低产品上线风险,助力产品敏捷迭代

字节跳动数据平台

大数据 AB testing实战

新书赠送丨《中国金融科技发展概览:创新与应用前沿》

Kyligence

数据分析 金融行业

谈谈在 select for update 中到底加了什么锁

风铃架构日知录

Java 数据库 IT 隔离级别

助力 100+ 家企业实现 CentOS 平滑迁移,OpenCloudOS「千百双扶计划」重磅上线

OpenCloudOS

Linux centos

手把手教您在PyCharm中连接云端资源进行代码调试

华为云开发者联盟

人工智能 华为云 企业号 1 月 PK 榜

2022转转技术年货发布啦

转转技术团队

转转 技术年货

2022年总结:责任驱动开源

李孟聊AI

开源 总结

融云再添多项荣誉!产品、服务获多方认可

融云 RongCloud

即时通讯 即时通讯IM

Nerdctl 原生支持 Nydus 加速镜像

SOFAStack

资源中心里的图片裁切如何使用?

Towify

TiDB 中标杭州银行核心系统数据库项目

PingCAP

#TiDB

TiDB 底层存储结构 LSM 树原理介绍

京东科技开发者

技术 算法 LSM树 TiDB 企业号 1 月 PK 榜

HarmonyOS智能座舱体验是怎样炼成的?立即查看

HarmonyOS开发者

HarmonyOS

【带你读论文】向量表征经典之DeepWalk

华为云开发者联盟

人工智能 华为云 企业号 1 月 PK 榜 向量表征

云图说 | 勒索病毒防治解决方案

华为云开发者联盟

云计算 后端 华为云 企业号 1 月 PK 榜

消息服务 + Serverless 函数计算如何助力企业降本提效?

Serverless Devs

【FAQ】推送服务常见问题及解决方案

HarmonyOS SDK

HMS Core

达摩院2023十大科技趋势发布,生成式AI将进入应用爆发期

阿里技术

云计算 AI 芯片 科技趋势

技术分享| anyRTC 视频监控融合方案

anyRTC开发者

监控 音视频 指挥调度 快对讲 GB28181

阿里云Imagine Computing创新技术大赛决赛启幕!

阿里云CloudImagine

云计算 阿里云 视频云 边缘云

为测试管理正名,华为云CodeArts TestPlan的守护之道

华为云开发者联盟

云计算 测试 华为云 华为CodeArts 企业号 1 月 PK 榜

解决高基数难题,云原生时序数据库 TDengine 3.0 荣获 IT168 2022 年度技术卓越奖

TDengine

数据库 tdengine 时序数据库

如何发布组件模板?

Towify

开源工具系列2:Trivy

HummerCloud

云原生安全

乐信集团刘志诚:构建可观测、可管、可控的数据安全体系

极盾科技

数据安全

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