2天时间,聊今年最热的 Agent、上下文工程、AI 产品创新等话题。2025 年最后一场~ 了解详情
写点什么

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

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

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

关注

评论

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

Altair HyperWorks仿真案例:通过设计优化最大化发挥增材制造的潜力

智造软件

仿真 Hypermesh hyperworks

KWDB 一库多用:当多模遇上分布式

KaiwuDB

Chain-of-Draft:新一代提示技术之王

俞凡

人工智能 提示工程

重大技术转向:LinkedIn 抛弃自家创造的 Kafka ,又重新造了个 Pulsar 的轮子?

AscentStream

kafka pulsar linkedin

三级等保在哈尔滨智慧城市建设中的战略价值

等保测评

TRAE cue 体验提升之 Latency 篇

北京中暄互动广告传媒有限公司

苹果电脑怎么在虚拟机里安装office办公软件?Mac怎么运行Windows版的office365?

凡凡不烦

Office Parallels Desktop下载 虚拟机软件 Mac效率办公软件 如何在Mac运行win

BeeWorks私有化即时通讯,局域网办公安全可控

BeeWorks

即时通讯 IM 私有化部署

Coze开源了!意味着什么?

禅道项目管理

#开源 #人工智能 AI智能体 Coze开源 #字节跳动

合合信息AI 鉴伪检测技术,揪出 “难察觉” 的虚假源头

袁袁袁袁满

人工智能、

三级等保测评流程优化实践

等保测评

闭源精密战与开源敏捷性:能源管理系统的双线引领

开源能源管理系统

开源 能源管理系统

CST怎样安装补丁?CST Studio Suite 2022 SP2补丁包

思茂信息

电磁仿真 CST软件 CST Studio Suite

工厂工地如何利用MyEMS实现安全绿色生成,助力企业节能减排,降本增效

开源能源管理系统

开源 能源管理系统

局部注意力机制提升Transformer长序列时间预测

qife122

机器学习 Transformer

本地IntelliJ IDEA连接开发者空间-云开发环境,进行小游戏开发

华为云开发者联盟

云主机 IntelliJ IDEA 华为开发者空间

播放器音频后处理实践(一)

百度Geek说

2025年最佳加密软件精选

qife122

数据保护 加密技术

如何实现专业技术教学与思政教育的有机融合|北京理工大学医工交叉教学实践分享(4)

ModelWhale

AI教育 医工融合 北京理工大学

小白也可以只用 2 轮 prompt 生成你的“哈利波特测试器”

北京中暄互动广告传媒有限公司

私有化即时通讯有什么优势,推荐BeeWorks聊天工具

BeeWorks

即时通讯 IM 私有化部署

可视化抽取指南:用图形语言解码视频抽取

数由科技

人工智能 低代码 数据科学 视频处理 语音处理

3节点集群带宽突破513GB/s,焱融存储再度登顶MLPerf Storage全球榜单

焱融科技

人工智能 全闪存储 AI存储 MLPerf 焱融存储

大数据-60 Kafka 消息消费与心跳机制详解:原理、流程及参数调优

武子康

Java 大数据 kafka 分布式

基于开发者空间编写ODBC应用程序操作OpenGauss数据库

华为云开发者联盟

GaussDB(for openGauss) ODBC C++ API 接口 华为开发者空间

哈尔滨二级等保设备选型指南

等保测评

区块链Web3项目开发的进度管理

北京木奇移动技术有限公司

区块链开发 软件外包公司 web3开发

Conc,一个神奇的Go语言并发利器!

左诗右码

IDE 革命:超越自动完成

俞凡

人工智能

HarmonyOS 5 应用拉起系列(二):如何拉起微信小程序

鸿蒙魔法师

微信 HarmonyOS

如何通过Python SDK新建一个DashVector Client

DashVector

人工智能 大数据 AI 数据库 大数据

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