免费下载案例集|20+数字化领先企业人才培养实践经验 了解详情
写点什么

BDD 工具 Cucumber 并不是一种测试工具

  • 2015-04-02
  • 本文字数:1101 字

    阅读完需:约 4 分钟

如果你使用 Cucumber 的目的就是为了进行自动化测试,那么其实你还可以做得更好。你可以在 Cucumber 中编写用户场景,让它表现出业务规则而不仅仅是 UI 功能。这样你就能够让业务分析师加入这个过程,在编码工作开始前编写场景。程序员们就能够按照这个清晰的规范进行编码工作了。这种方式就是行为驱动开发(BDD)。 Aslak Hellesøy 表示,他总是看到使用者对Cucumber 的错误用法和错误理解。

Hellesøy 在 2008 年时创建了 Cucumber,在头三年之内下载量就达到了 5 百万。他始终强调,Cucumber 首先是一种协作工具,它旨在让团队中的所有成员之间达成共识。Cucumber 的特性编写应当早于具体用代码实现这些特性。当你使用 BDD 方式编写实例的时候,回归测试会自然地成为一种副带的结果,但测试本身并不是这个活动的目的。

随着 Cucumber for JavaScript 项目的出现, Julien Biezemans 看到了 BDD 在 web 开发中带来的好处,但他也同时表示,Hellesøy 所提到的那种误解,即将 Cucumber 作为一种纯粹的测试工具的想法在这个项目的应用中也是屡见不鲜。此外,对于 Biezemans 来说,BDD 也是一种鼓励所有参与者进行交流的方式,他们通过编写实例的方式让工作目标变得更清晰,并减少歧义,让每个人对于他们所创建的产品达成共识。将这些交流对话所产生的场景进行自动化,只是一种可选的步骤。

Hellesøy去年曾经表示:为了充分利用Cucumber,你必须遵循某种流程,并且让软件团队中的大多数人加入其中。这个流程就是BDD,而 Gojko Adzic 之后将这一方式重新命名为实例化需求(Specification by Example)。将这个流程稍微简化一下的话,那么它主要包括这两项活动:

  • 需求工作间,此时业务分析师要对需求负责,同时与程序员与测试人员一起讨论要开发的特性(这三种角色也通常称为三个好朋友),与此同时,他们共同编写软件应该如何表现的实例,把它作为 Cucumber 中的场景。
  • 由外而内的开发,程序员会增量式地进行代码编写,并且使用 Cucumber 运行场景,直到特性通过测试为止。程序员通常会从最接近用户的功能开始,然后逐步接近核心领域,这也是这一活动命名的由来。

Liz Keogh 则提示,定义BDD 是一件困难的事,因为这种方法学是从其它许多方法和哲学中派生出来的,因此她发现很难划分一个明确的边界,以确定哪些方法和哲学不属于它。Keogh 转而认为,BDD 其实是一种术语,它的核心是对话、协作与场景,以及通过自动化的方式实现它们。在这个核心之外是一系列其它实践,包括Hellesøy 所提到的内容以及各种工具,包括Cucumber、 JBehave SpecFlow 。Keogh 用以下这段话表示了她对 BDD 的定义:

在对话中使用实例,以表现某种行为

查看英文原文 BDD Tool Cucumber is Not a Testing Tool

2015-04-02 08:465644
用户头像

发布了 428 篇内容, 共 176.8 次阅读, 收获喜欢 38 次。

关注

评论

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

2023 PlatformCon 平台工程大会回顾

杨振涛

平台工程 内部开发者平台 内部开发者门户 平台工程大会 平台团队

瓴羊Quick BI:企业数据分析的利器

夜雨微澜

深度学习应用篇-推荐系统[11]:推荐系统的组成、场景转化指标(pv点击率,uv点击率,曝光点击率)、用户数据指标等评价指标详解

汀丶人工智能

人工智能 深度学习 推荐系统 搜索推荐 6 月 优质更文活动

插件化工程R文件瘦身技术方案 | 京东云技术团队

京东科技开发者

企业号 6 月 PK 榜 R文件 文件瘦身 插件化工程

Dubbo负载均衡策略之 一致性哈希 | 京东云技术团队

京东科技开发者

dubbo 哈希算法 数据倾斜 企业号 6 月 PK 榜

领域建模之数据模型设计方法论 | 京东云技术团队

京东科技开发者

数据模型 建模 业务模型 企业号 6 月 PK 榜

Abaqus有限元分析技术应用于卫星强度校核

思茂信息

abaqus abaqus软件 abaqus有限元仿真 有限元仿真技术

SpringMVC框架适配模块及实现原理

互联网架构师小马

注解切面适配模块及实现原理

互联网架构师小马

openEuler 开源汇智赢未来|2023开放原子全球开源峰会 openEuler 论坛成功召开

openEuler

开源 操作系统 openEuler 资讯

理解 与 计算 物联网产品的电池使用寿命

矜辰所致

物联网 低功耗计算 电量计算 6 月 优质更文活动

DR6018 Routerboard: Unleashing Long-Distance Transfer Capabilities up 23Km!

Cindy-wallys

IPQ6010 ipq6018

安全问题我们需要重视,立刻升级fastjson2

源字节1号

开源 软件开发 后端开发 小程序开发

Wallys launches high-performance Tri-Band solutions/ipq4019+qca9882.

Cindy-wallys

IPQ4019 QCA9882 ipq4029

Spring Boot+Vite+Vue3二手商城

路北路陈

6 月 优质更文活动

微服务高并发:动态配置的实现原理搞懂了

互联网架构师小马

this 之谜揭底:从浅入深理解 JavaScript 中的 this 关键字(二)

Immerse

深度学习应用篇-推荐系统[12]:经典模型-DeepFM模型、DSSM模型召回排序策略以及和其他模型对比

汀丶人工智能

人工智能 深度学习 推荐系统 搜索算法 6 月 优质更文活动

一次性吃透基于Spring Cloud动态配置实现动态数据源

互联网架构师小马

瓴羊Quick BI:数据大屏的智能解决方案

流量猫猫头

Wallys DR9074 4x4 Wlan module work on X86 device/DR9074 应用在X86。

Cindy-wallys

QCN9074 QCN9024

啥?PCB拼版对SMT组装有影响!

华秋PCB

PCB SMT PCB设计 PCB拼版 贴片

OpenFeign框架适配模块及实现原理

互联网架构师小马

逐鹿AI+、论道沪上,华为云企业快成长AI+大数据技术创新论坛在上海举行

说山水

为世界第一大癌症高效研发首创新药,AI大模型助力药物研发叩开未来之门

飞桨PaddlePaddle

人工智能 paddle 飞桨

【有奖体验】叮!你有一张 3D 卡通头像请查收

Serverless Devs

Serverless 函数计算FC

Junit执行器Runner探索之旅 | 京东云技术团队

京东科技开发者

单元测试 JUnit runner 源码解读 企业号 6 月 PK 榜

AI 大战高考作文!实测 ChatGPT、文心一言、通义千问等 8 款“神器”

博文视点Broadview

豫园股份×奇点云:集团统一战略的数据平台这样炼成

科技热闻

Dubbo框架适配模块及实现原理

互联网架构师小马

BDD工具Cucumber并不是一种测试工具_语言 & 开发_Jan Stenberg_InfoQ精选文章