写点什么

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

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

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

关注

评论

发布
暂无评论

爽面弹力胶浆、哑面弹力胶浆

C13713145387

爽面弹力胶浆

哑面防水尼龙胶浆Nylon printing paste

C13713145387

哑面防水尼龙胶浆

一文抽丝剥茧带你掌握复杂Gremlin查询的调试方法

华为云开发者联盟

调试 图数据库 Gremlin 遍历源 图遍历

架构实战营模块三作业

日照时间长

架构实战营

百分点大数据技术团队:政务数据安全管理实践

百分点大数据团队

OAuth 2.0 与 OIDC

Zhang

OAuth 2.0 OIDC

牛仔底色保护浆(喷砂工艺)

C13713145387

牛仔底色保护浆

华云大咖说 | 安超DCM给数据中心“做主”

华云数据

聊聊我的编程时如何入门的

C语言与CPP编程

c++ 编程 程序人生 C语言 数据结构与算法

展开说说,Spring Bean IOC、AOP 循环依赖

小傅哥

Java spring 小傅哥 ioc 循环依赖

采取有效云网络安全策略的5个基本步骤

云计算

MySQL数据迁移那些事儿

Simon

MySQL 数据迁移

Google官方关闭binary后,Android工程师怎么办?

Changing Lin

5月日更

4.2 Go语言从入门到精通:延迟函数 defer

xcbeyond

defer Go 语言 5月日更

postgresql数据库 timescaledb 时序库 超级表 块的压缩(compress_chunk()的应用)

Yang

数据库 postgresql

一次过透气浆、印一次透气浆

C13713145387

透气胶浆 一次过透气浆

INNOVATE 2021 圆满落幕,一起盘点那些 AI 前沿实例!

亚马逊云科技 (Amazon Web Services)

不反粘水性台板胶Waterborne table glue

C13713145387

不反粘水性台板胶

水性硅胶防滑透明浆

C13713145387

水性硅胶防滑透明浆

Flink on Zeppelin 系列之:Yarn Application 模式支持

Apache Flink

flink

负载均衡续:万亿流量场景下的负载均衡实践

Coder的技术之路

负载均衡 架构 高并发 负载均衡架构

NumPy之:结构化数组详解

程序那些事

Python 数据分析 Numpy 程序那些事

立体水性石头拉浆

C13713145387

弹力抗刮硅油布胶浆

C13713145387

弹力抗刮硅油布胶浆

Spring-技术专题-设计模式和研究分析

码界西柚

spring 设计模式 原理分析 5月日更

LiteOS内核源码分析:静态内存Static Memory

华为云开发者联盟

内存管理 LiteOS 静态内存 Static Memory Membox

夏季不塞网胶浆、夏季不堵网胶浆

C13713145387

夏季不塞网胶浆

【案例】新基建下星环科技城轨智能视频分析系统建设

星环科技

Java中用户线程和守护线程区别这么大?

王磊

Java 并发编程 多线程 5月日更

融云亮相 CDEC2021 上海站 全场景通信能力赋能企业数字升级

融云 RongCloud

哑面爽滑肤感胶浆

C13713145387

哑面爽滑肤感胶浆

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