写点什么

六种方式改进行为驱动开发

  • 2015-08-06
  • 本文字数:1000 字

    阅读完需:约 3 分钟

行为驱动开发(BDD)的做法经常与常用的推荐做法相矛盾。在分享自己的经验以及同BDD 思想领袖进行讨论的过程中, Joe Colantonio 阐述了他注意到的六个常见问题以及如何进行改进。

保持BDD 实现独立。包含实现细节,如GUI 中的按钮,会使维护更加困难。应该重点关注用户做什么,而不是怎么做。一种实现方式是,在编写场景时,保持一种声明式风格而不是一种命令式风格。Colantonio 认为,团队在BDD 实现中包含实现细节的一个原因是,他们试图将BDD 当作一个自动化测试框架使用,而不是按照它的初衷当作协作工具。

自动化是额外收益,而不是BDD 的初衷。Colantonio 提到了 Seb Rose ,后者曾表示,同业务或客户那边的人协作失败就是一个将 BDD 工具当作自动化测试工具使用的反模式。2008 年, Aslak Hellesøy 创建了 BDD 工具 Cucumber 。他强调,Cucumber 首先是一个协作工具,旨在使所有的团队成员有一个共同的认识。Cucumber 特性应该在编码实现该特性之前编写。当使用BDD 编写示例时,回归测试是一个副产品,测试并不是活动本身。

一切均关乎对话。在Colantonio 看来,BDD 的优点在于,提供了一个避免错误假设和误解的机会,使人能够在编写代码之前发现潜在的Bug。虽然他认为,对于某些团队而言,专注于对话而不是写下需求可能会成为一个新的现实,但他同时指出,转而采用BDD 和敏捷的团队应该注意,不要将场景当作需求。

一个场景不是一项需求。它们有关系,但是,一个场景集合对应一项需求。Colantonio 发现,将一个场景视为一项需求会导致各种各样的问题,他倾向于在同产品经理讨论的过程中创建小型示例,比如, Gojko Adzic Specification by Example 上所描述的技术。

不要把什么都当作 UI 测试。场景是以用户的视角编写的,但 Colantonio 指出,这并不是说功能一定要通过 UI 进行测试,应用程序 UI 的内部测试组件又快又稳定。今年早些时候,Konstantin Kudryashov阐述了如何将BDD 同领域驱动设计(DDD)一起使用,减少面向UI 的场景的数量。首先检查工作域,只增加对UI 而言非常关键的场景。

实施Scrum 并不等于说实施敏捷。通过实施Scrum,团队常常会认为,他们自然而然地也在实施敏捷,但Colantonio 认为,这常常是不对的。在代码编写完成后编写单元测试,或者事后编写某种验收或集成测试,可能由一个单独的团队编写,在他看来,这些都表明团队没有采用一种敏捷方法。

查看英文原文: Six Ways of Improving Behaviour-Driven Development

2015-08-06 08:002643
用户头像

发布了 1008 篇内容, 共 437.2 次阅读, 收获喜欢 346 次。

关注

评论

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

告别研发痛点!群核科技靠 “自动化左移” 重构质量效能,效能飙升有何秘诀?

杭州群核科技质量效能

Supersonic from Unity 深度剖析:大多数游戏测试可能毫无意义,出海手游开发者该如何破局?

极客天地

打开CAD图纸提示缺少外部参照是什么原因?怎么解决?

在路上

cad cad看图 CAD看图王

技术文档 | 使用 Spring AI 实现一个简单的 Pulsar MCP Server

AscentStream

MCP

昆仑万维「Matrix-Game 2.0」发布,国产开源的Genie 3来啦!

新消费日报

MyEMS:重塑能源管理,驱动高效节能新变革

开源能源管理系统

开源 能源管理系统

开源能源管理系统应用前景:以 MyEMS 为例

开源能源管理系统

开源 能源管理系统

全球社交媒体监控背后的AI技术革命

沃观Wovision

社交媒体 舆情监控 沃观Wovision

跨文化冲突下的品牌舆情管理

沃观Wovision

出海企业 舆情监控 沃观Wovision 海外舆情监测

一文吃透 Promise 与 async/await,异步编程也能如此简单!建议收藏!

左诗右码

一文教你Docker自建Jupyter Notebook,并用内网穿透实现远程访问

科技热闻

【新模型速递】PAI-Model Gallery云上一键部署gpt-oss系列模型

阿里云大数据AI技术

人工智能 大数据 大模型 模型部署 gpt-oss

非凸科技受邀参加Community Over Code Asia 2025 Rust分论坛

非凸科技

主流自动化测试框架的技术解析与实战指南

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

人工智能 智能体 测试开发 playwright selenium

英伟达被约谈?国产替代迎来新机遇

禅道项目管理

软件开发 信创 软件安全 国产化替代 禅道项目管理软件

7 月 SeaTunnel 社区狂飙:新特性、强优化、贡献者满分输出

白鲸开源

开源 数据同步 数据集成 Apache SeaTunnel

金蝶云•星辰基于 SLS 构建稳定高效可观测系统

阿里巴巴云原生

阿里云 云原生 日志服务 sls

Apache SeaTunnel 新定位!迈向多模态数据集成的统一工具

白鲸开源

大数据 开源 数据集成 多模态 Apache SeaTunnel

动态化开发范式跃迁:AI驱动应用架构的敏捷重构

xuyinyin

MyEMS 开源能源管理系统:双碳时代的能源革命引擎

开源能源管理系统

开源 能源管理系统

2025 App开发降本范式重构:技术杠杆撬动效能革命

xuyinyin

超融合架构 “破壁”:从企业到数据中心的全能应用版图

智驱前线

超越预算,打开企业预算管理新思维

智达方通

全面预算管理 财务管理 成本预算管理

Rust 性能提升“最后一公里”:详解 Profiling 瓶颈定位与优化|得物技术

得物技术

rust Profile rust语言

通过Milvus内置Sparse-BM25算法进行全文检索并将混合检索应用于RAG系统

阿里云大数据AI技术

全文检索 Milvus 混合检索 RAG应用 Sparse-BM25算法

VS Code Server本地Docker部署+贝锐花生壳内网穿透远程访问教程

科技热闻

CAD中如何绘制圆弧?详细教程来了

在路上

cad cad看图 CAD看图王

跨国办公设备分散难管理?ManageEngine卓豪统一IT服务台

ServiceDesk_Plus

ManageEngine卓豪

Prometheus 告警时为何无法获取现场值

巴辉特

Prometheus 监控告警 夜莺监控 运维监控 开源监控

Java干货分享

codemonkey

#java #并发

CST帮助文档:SIMULIA网格处理软件---PowerDELTA

思茂信息

cst cst电磁仿真 CST Studio Suite

六种方式改进行为驱动开发_研发效能_Jan Stenberg_InfoQ精选文章