报名参加CloudWeGo黑客松,奖金直推双丰收! 了解详情
写点什么

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

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

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

关注

评论

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

音视频同步!RTCP协议解析及代码实现

明儿

c++ 音视频 协议 Wireshark 流媒体

数据挖掘从入门到放弃(一):线性回归和逻辑回归

数据社

机器学习 5月日更

API网关关键技术

lenka

5月日更

这个世界不会欺负诚实的人,也绝对不会亏待努力的人

小天同学

5月日更 真诚 诚信 努力

今日学习小结

Nydia

学习

服务调用链相关基础知识

luojiahu

调用链

打破思维定式(十)

Changing Lin

5G Capital一年,“首都标准”初现

脑极体

就这?腾讯云高工熬夜手写'Java微服务学习笔记'也就让我月薪涨3k

Java 编程 程序员 架构 面试

Golang library source file 库源码文件

escray

学习 极客时间 Go 语言 5月日更

花一周整理!Python全系列学习资料,全是干货

Python研究者

APP透露的焦虑

wgc

杂谈

看完了蚂蚁金服年薪180万的大佬扔给我的“Java成长笔记”,差距不止一点点

Java 程序员 架构 面试 计算机

C++ & Linux 后端:进BAT的学习路线

赖猫

c++ Linux 后端 服务器端开发

Nginx通过split_client实现客户端分流

运维研习社

nginx 灰度发布 5月日更 分流

聊聊Spring的XML Schema扩展机制的使用方式

Hex

spring

谈谈企业的成本

石云升

创业 职场经验 5月日更

为什么突然谁都能造车了?

白洞计划

JavaScript 进阶——井字棋游戏智能AI搭建

空城机

JavaScript 大前端 5月日更 web游戏

不是会员不让复制粘贴?看我“三板斧”!

liuzhen007

使用技巧 5月日更

声网2020实时大会后的弱网对抗实践

Fenngton

音视频 网络环境 视频编解码 声网 弱网下的极限实时视频通信

飞书悄然开辟新战线,协同办公之外另有新动作?

ToB行业头条

飞书 协同办公

Netty整体架构学习笔记

风翱

Netty 5月日更

学生管理系统考试试卷存储方案

Simon

架构实战营

Python-XPath

若尘

Python编程 5月日更

数据续谈

顿晓

数据 5月日更

数据科学指南#基础篇 Bokeh入门

Lev

Python 学习 数据分析 数据科学

c++的并发操作(多线程)

赖猫

c++ Linux 多线程 服务端 并发

网络攻防学习笔记 Day14

穿过生命散发芬芳

5月日更 网络攻防

5分钟速读之Rust权威指南(二)

wzx

rust

打字员为什么要去看商业模式

ES_her0

5月日更

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