写点什么

行为驱动开发:通过协作传递价值

  • 2014-01-02
  • 本文字数:1086 字

    阅读完需:约 4 分钟

软件项目的目的是向利益干系人交付价值,而行为驱动开发(BDD)正是为此而生。在阐述对于BDD 的看法时, Viktor Farcic 表示:BDD 能够确保在整个项目过程中,项目聚焦于为利益干系人提供的价值。

作为一位从事从瀑布模型向敏捷过程转型方面工作的软件开发者,Viktor 继续补充道:BDD 的一条准则是必须用每个人都能理解的方式来撰写需求。作为对比,在传统的瀑布式项目中,许多情况下人们都不知道或是忘记了要向利益干系人交付价值。参与此类项目的大部分人关心的是“完成各自部分的工作”,然后将工作“抛给墙那边”负责下一阶段任务的人。

在 BDD 中描述需求的关键是故事,Viktor 将故事的形式概括为两部分组成元素:介绍描述(Narrative)以及随后出现的一个或多个情形(Scenario)。介绍描述是从提出新功能要求的某个人或某个角色的角度,对功能所做的一段简短的叙述。它恰到好处地为所有涉及到的人(业务分析师、开发者、测试者等待)提供了沟通的基础,并且是以对话而不是编写描述为中心。其目的在于回答这样三个问题:价值是什么?对谁来说它是有价值的?实际特性是什么?回答这些问题后,团队就可以开始与利益干系人协作,定义最佳解决方案。

介绍描述将通过情形来进一步定义——这些情形提供了对完成的定义以及接收的标准,用来确认针对介绍描述进行的开发,其输出的成果能够满足预期。

对 Viktor 来说,尽管介绍描述拥有某些传统需求的特性,但他相信依旧存在一些非常重要的不同。其中之一在于以下二者之间的区别:重视口语化和持续沟通,与使用可能非常不精确的语言。另外一点不同则是重视使用特性来描述功能,而不是使用大量如下形式的文字陈述:“该系统应该……”——后者往往会妨碍读者理解项目的整体视图和真正的目标。

最后,Viktor 介绍了让 BDD 向着自动化方向前进的内容——可以通过许多不同框架来执行 BDD 中的情形,例如 JBehave Cucumber SpecFlow Jasmine 。他的建议是分三步走来实现 BDD 自动化:

  • 创建标准化步骤的库,以帮助将情形从实际代码中分离,从而简化非开发人员编写故事的工作。
  • 在更高的业务层面将这些步骤整合,以便分析师和其他类似角色更好地理解。
  • 使用实例表(example table),以便同一个情形可以被执行若干次,并在每次执行中配备不同的参数集。

Victor 的建议是,从第一阶段入手,直到采取足够的措施以支持创建第一个情形后,再继续落实后面两阶段的内容。

Dan North 在 2006 年开发了 BDD,并撰写了一份入门简介,以及在BDD 中如何编写故事

实例化需求(specification by example)是一种与BDD 密切相关的需求定义方法。

查看英文原文: Behaviour-Driven Development: Value through Collaboration

2014-01-02 07:361664
用户头像

发布了 256 篇内容, 共 77.3 次阅读, 收获喜欢 10 次。

关注

评论

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

软件测试 | 测试开发 | Thinkphp5 集成 Swoole

测吧(北京)科技有限公司

测试

软件测试 | 测试开发 | Tornado 异步性能分析

测吧(北京)科技有限公司

测试

软件测试 | 测试开发 | 提高Android云真机稳定性的方法

测吧(北京)科技有限公司

测试

一文读懂TDengine的三种查询功能

TDengine

数据库 tdengine 时序数据库 企业号九月金秋榜

软件测试 | 测试开发 | TorchServe搭建codeBERT分类模型服务

测吧(北京)科技有限公司

测试

软件测试 | 测试开发 | 用模拟器实现视频流的音画分离

测吧(北京)科技有限公司

测试

史上最全499道Java面试题:JVM+分布式+算法+锁+MQ+微服务+数据库

Geek_0c76c3

Java 数据库 开源 架构 面试

软件测试 | 测试开发 | 分布式锁的实现方案

测吧(北京)科技有限公司

测试

软件测试 | 测试开发 | ThinkPHP 接口开发过程

测吧(北京)科技有限公司

测试

软件测试 | 测试开发 | 一种基于视频帧差异视频卡顿检测方案

测吧(北京)科技有限公司

测试

软件测试 | 测试开发 | 堆排序原理及实现

测吧(北京)科技有限公司

测试

Ribbon都有哪些负载均衡的策略?

想要飞的猪

Ribbon

hystrix熔断器的工作流程与它的舱壁模式

想要飞的猪

Hystrix hystrix名词概念

软件测试 | 测试开发 | 基于NSQ搭建高可用分布式消息队列

测吧(北京)科技有限公司

测试

我与CI流水线的羁绊,任谁也无法斩断!

极狐GitLab

DevOps 持续集成 jenkins CI/CD 极狐GitLab

IDC发布《中国边缘云市场解读(2022)》:阿里云蝉联中国公有云市场第一

阿里云CloudImagine

边缘计算 公有云 边缘云

软件测试 | 测试开发 | Pandas数据分析及可视化应用实践

测吧(北京)科技有限公司

测试

软件测试 | 测试开发 | Android App 保活服务的配置与禁用

测吧(北京)科技有限公司

测试

禅道的工时管理

禅道项目管理

项目管理 工时 禅道

软件测试 | 测试开发 | Aiomysql 与 Sqlalchemy 的使用

测吧(北京)科技有限公司

测试

阿里面试官内部题库!阿里发布2022年Java社招岗(正式版)面试题

Geek_0c76c3

Java 数据库 开源 程序员 架构

软件测试 | 测试开发 | GraphQl:让你的接口所得即所要

测吧(北京)科技有限公司

测试

软件测试 | 测试开发 | code2vec 代码的连续分布式矢量表示

测吧(北京)科技有限公司

测试

软件测试 | 测试开发 | UI遍历中页面定义和动作事件筛选方法

测吧(北京)科技有限公司

测试

软件测试 | 测试开发 | 相似图像的检测方法

测吧(北京)科技有限公司

测试

ESP32-C3 学习测试 蓝牙 篇(二、蓝牙调试APP、开发板手机连接初体验)

矜辰所致

ESP32-C3 9月月更 蓝牙APP

喜迎华诞!10月月更伴随着国之盛庆向你走来!

InfoQ写作社区官方

热门活动 10月月更

软件测试 | 测试开发 | Lambda表达式介绍和底层实现分析

测吧(北京)科技有限公司

测试

字节跳动基于Doris的湖仓分析探索实践

字节跳动数据平台

数据仓库 数据湖 Doris Hudi 湖仓一体

探究MYSQL之索引

C++后台开发

MySQL 中间件 后端开发 C++开发 数据库索引

8万字208道Java经典面试题总结(附答案)

Geek_0c76c3

Java 数据库 开源 程序员 开发

行为驱动开发:通过协作传递价值_语言 & 开发_Jan Stenberg_InfoQ精选文章