写点什么

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

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

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

关注

评论

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

面试官:如何设计一个高并发系统?

了不起的程序猿

面试 高并发 架构师 java面试 八股文

SD-WAN企业智能物流网络解决方案

Ogcloud

SD-WAN 智能物流 SD-WAN组网 SD-WAN服务商 SD-WAN国际专线

加速数字化转型:运营商产品加载流程优化

鲸品堂

流程 运营商 优化工具 企业号 2024年12月PK榜

SD-WAN为企业国际业务提供坚实网络支持

Ogcloud

SD-WAN SD-WAN组网 SD-WAN国际专线 海外网络专线 海外网络访问

区块链钱包开发:全面功能设计方案解析

区块链软件开发推广运营

交易所开发 dapp开发 链游开发 公链开发 代币开发

淘宝天猫API接口探秘:解锁店铺商品与拍立淘搜索的无限可能

代码忍者

API 接口 pinduoduo API

不愧是自媒体人的黑科技,融媒宝让内容一键发布到多平台

编程猫

全链路解析如何构建数据资产管理框架及落地实践丨袋鼠云“数智基建+数智应用”赋能分享02期

袋鼠云数栈

明道云在生态环境领域的应用

明道云

使用Python开发获取商品销量详情API接口

科普小能手

跨境电商 Python开发 API 接口 API 开发 淘宝商品销量接口

探索1688阿里巴巴API接口:关键字搜索与拍立淘图片搜索的无限可能

代码忍者

API 接口 pinduoduo API

【拆解篇】CTO眼里的数据治理,其实就这三点!

Taylor

#数据治理框架 #数据治理 #数据质量 #数据标准

从模型到实际:人工智能项目落地的关键要素

天津汇柏科技有限公司

AI 人工智能

AWS数据合作伙伴|质变科技受邀分享Serverless AI-ready Data Cloud

AI数据云Relyt

Data Lake 云数据库 数据云 Data-Centric AI AI-ready Data Cloud

普通Java程序员如何跳槽去大厂?

了不起的程序猿

Java 程序员 架构师 大厂 八股文

一文了解 Conda(包教包会,不会留言)

快乐非自愿限量之名

conda

2025年,Web3开发学习路线全指南

chainwiseweb3

区块链 去中心化 DAPP系统开发 交易所源码 加密货币钱包

Vue最受欢迎的七大跨端框架,你都用过哪几个?

快乐非自愿限量之名

JavaScript Vue

实施模式变革,汉得实施HAP的最佳实践

明道云

【FAQ】HarmonyOS SDK 闭源开放能力 —Push Kit(7)

HarmonyOS SDK

harmoyos

HyperMesh CFD功能详解:后处理功能Part 2

Altair RapidMiner

汽车 仿真 altair Hypermesh CFD

认识Redis集群

不在线第一只蜗牛

数据库 redis Spring Boot

华为云云日志服务 HarmonyOS NEXT采集最佳实践

华为云开发者联盟

sdk HarmonyOS 日志采集 ArkTS

一行代码都不改,Golang 应用链路指标日志全知道!

阿里巴巴云原生

阿里云 开源 云原生

个人网盘领域首个获批!百度网盘获颁“个人信息保护认证证书”

百度安全

技术不好的Java程序员如何从容应对当下面试?

了不起的程序猿

Java 程序员 面试题 架构师 八股文

C++中的多线程及其之后的周边

EquatorCoco

Java c++

Java日志记录几种实现方案

不在线第一只蜗牛

Java Python

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