写点什么

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

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

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

关注

评论

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

深入探索阿里巴巴关键字搜索商品API的返回值

技术冰糖葫芦

API 接口 API 文档 API 测试 API 性能测试

查找大量时序遥感文件缺失、不连贯的成像日期:Python代码

快乐非自愿限量之名

Python GIS

DeFi复兴:让DeFi再次伟大

区块链软件开发推广运营

交易所开发 dapp开发 链游开发 NFT开发 公链开发

阿里巴巴1688商品详情API返回值:未来发展趋势与无限可能

代码忍者

2024后量子区块链峰会:连接Web3、安全与后量子密码学的未来

区块链软件开发推广运营

交易所开发 dapp开发 链游开发 NFT开发 公链开发

解读Kuasar多沙箱容器技术,带来更强隔离性和安全性

华为云开发者联盟

Kubernetes 容器 沙箱

90年程序员,失业了应该继续找工作吗?

高端章鱼哥

SD-WAN与传统WAN的区别

Ogcloud

SD-WAN 企业组网 SD-WAN组网 SD-WAN服务商 SDWAN

供应链PC实操落地实践|得物技术

得物技术

#供应链

独占鳌头!望繁信科技三大流程挖掘项目入选中国信通院优秀案例

望繁信科技

数字化转型 流程挖掘 流程资产 流程智能 望繁信科技

通过Forcebot压测实践简述“并发模式”与“RPS模式”两种模式的区别

京东科技开发者

90后程序员的职业成长漫谈

京东科技开发者

从混乱到可控:非结构化数据在远程监造中的作用

奇点云

人工智能 软件 IT 制造业

IT服务管理三重奏:SLA、SLO、SLI

ServiceDesk_Plus

SLA IT服务管理

什么是低代码(Low-Code)?我们需要低代码吗?

优秀

低代码 低代码平台 低代码平台比较

QCA9880 3x3 MIMO Wi-Fi Solution: Backward Compatible, High Power Output, and RoHS Compliant

wallyslilly

QCA9880 QCA9882

第三届OpenHarmony技术大会开发框架分论坛成功举行

科技热闻

软件测试学习笔记丨接口自动化框架

测试人

软件测试

测试聊并发-入门篇

京东科技开发者

技术干货|企业如何通过创建可持续能源的数字孪生,实现即时洞察

Altair RapidMiner

人工智能 汽车 数字孪生 仿真 altair

海外专线:提升国外网站访问效率的方法

Ogcloud

企业组网 企业网络 海外网络专线 海外网络访问

软件测试学习笔记丨Selenium—执行javascript脚本

测试人

软件测试

Spring 实现 3 种异步流式接口,干掉接口超时烦恼

不在线第一只蜗牛

Java spring 后端

Vite打包碎片化,如何化解?

不在线第一只蜗牛

Java 前端 服务器

看不懂来打我!让性能提升56%的Vue3.5响应式重构

快乐非自愿限量之名

JavaScript vue.js 性能优化 前端

【IoTDB 线上小课 08】时序数据库融合 AI,带来的效果竟然是?

Apache IoTDB

第二届OpenHarmony竞赛训练营颁奖 ——创新驱动,培育未来科技人才

科技热闻

深入理解Java并发读写锁——ReentrantReadWriteLock

EquatorCoco

Java spring 开发语言

OpenTiny 邀你一起参与线下技术交流茶话会!

OpenTiny社区

低代码 OpenTiny Vue组件库 前端开源

PostgreSQL 可观测性最佳实践

观测云

postgresql

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