写点什么

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

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

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

关注

评论

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

硬核化解ISV四大痛点,华为云智联生活行业加速器助力伙伴实现商业成功

华为云开发者联盟

华为云 HarmonyOS 智联生活 华为云IoTDA 云云协同

Postman 使用教程 - 手把手教你 API 接口测试

蒋川

Postman 接口测试

61 K8S之日志系统部署

穿过生命散发芬芳

k8s 28天写作 12月日更

2022 让我们登上更大的舞台

坚果

28天写作 12月日更 2021年终总结 盘点 2021

大型购物平台的系统设计与架构

恒生LIGHT云社区

平台搭建 构架 平台架构

当MySQL执行XA事务时遭遇崩溃,且看华为云如何保障数据一致性

华为云开发者联盟

MySQL 华为云

一个cpp协程库的前世今生(四)协程上下文ctx

SkyFire

c++ cocpp

祝大家元旦快乐,分享一些知识演讲

石云升

28天写作 12月日更

元宇宙很好,但VR开发者不准备停留在这里

脑极体

五天玩转EMAS Serverless训练营

移动研发平台EMAS

阿里云 #Serverless #EMAS

CentOS 停服,龙蜥社区已上线解决方案专区

OpenAnolis小助手

centos 国产操作系统 龙蜥社区

建木持续集成平台v2.1.1发布

Jianmu

DevOps CI/CD 开源软件

盘点 2021|一个 SAP 成都研究院开发工程师的2021年度总结:既没有厚积,也未能薄发

汪子熙

程序员 28天写作 12月日更 盘点2021 盘点 2021

Java 数据持久化系列之 HikariCP (一)

程序员历小冰

持久化 HikariCP 28天写作 12月日更

一个cpp协程库的前世今生(五)协程执行环境env

SkyFire

c++ cocpp

瞰见|即将上市的云明星 HashiCorp 走过的开源之路

OpenTEKr

开源 狄安瞰源

皮皮APP x 武汉市社会心理服务指导中心 联合开展社交讲座

联营汇聚

『征文精选』ShardingSphere-Proxy:Base 事务基于 Seata 验证

SphereEx

数据库 架构 开源社区 ShardingSphere SphereEx

如何打造一个云原生背景下的可观测平台?

淡泊明志、宁静致远

最好的 6 个免费天气 API 接口对比测评

蒋川

API 天气api

LabVIEW图像分割算法(基础篇—6)

不脱发的程序猿

机器视觉 图像处理 LabVIEW 图像分割算法

回顾 2021,拥抱 2022~

阿策小和尚

盘点2021

向未来飞驰:武汉推开了AI产业化和产业AI化的三重门

脑极体

腾讯云数据库2021年成绩单,请检阅!

腾讯云数据库

tdsql 国产数据库

一个cpp协程库的前世今生(三)cocpp的核心框架结构

SkyFire

c++ cocpp

.NET6新东西--Logging Source Generator

喵叔

28天写作 12月日更

关于内核堆溢出漏洞的分析

网络安全学海

黑客 网络安全 信息安全 安全漏洞 渗透测试·

性能提升40%!阿里云神龙大数据加速引擎获TPCx-BB世界排名第一

阿里云弹性计算

阿里云 神龙

seata分布式事务TCC模式介绍及推荐实践

恒生LIGHT云社区

分布式 分布式事务 seata TCC

Hoo虎符研究院 | 币海寻珠最新一期的DAO生态

区块链前沿News

DAO Hoo 虎符交易所 虎符研究院

如何将List<Integer>转换为int[]数组

liuzhen007

Java 28天写作 12月日更

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