用Cucumber脚本做故事驱动开发

cucumberJS 行为驱动开发BDD JavaScript 中的 BDD : Cucumber 和 Gherkin 入门 每个人都听说过测试驱动开发(TDD),以及它将对整个产品和开发周期带来的好处。这些都是显而易见的。每次你为一段代码编写测试,你将知道代码是否正常运行。而且,更重要的是,以后你将第一时间知道代码是否发生中断。 行为驱动开发(BDD)是对此理念的扩展,但不同的是它并不是测试代码,而是测试产品,特别是产品是否按照你的期望行为去运行。(场景实例化) 在本文中,我将向你介绍如何搭建并运行Cucumber,该框架被用来运行以BDD风格编 阅读详情

原文:

http://www.infoq.com/cn/news/2009/03/bdd-with-cucumber


行为驱动开发(BDD)的流行已然无可逆转。它始创于2003年,由Dan North创立,与测试驱动开发相呼应。BDD鼓励软件项目中的各种角色相互协作:开发人员、QA、非技术角色或者业务分析师。

Ruby因其便于创建和使用DSL的特性,也带来了许多BDD框架的诞生,如RSpec。Aslak Hellesøy的作品Cucumber也是其中一例,它可以用来测试Java、.NET和Flex代码。也可以读取纯文本文件,执行自动化功能测试。

下面是一个典型的场景示例(来自于项目的Wiki):

Feature: Search courses
  In order to ensure better utilization of courses
  Potential students should be able to search for courses

  Scenario: Search by topic
    Given there are 240 courses where neither has the topic "biology" 
    And there are 3 courses A,B,C that each have "biology" as one of the topics
    When I search for "biology" 
    Then I should see a the following courses:
      | title |
      | A     |
      | B     |
      | C     |

然后就可以用真实的代码来实现这段话,在测试失败中不断迭代直至最后成功。Cucumber还支持把场景中失败或者成功的部分加以高亮显示(下面是Cucumber网站上的一张图片):

Tests failure

编写Cucumber文件的语言是Gherkin,它可以附着于各种自然语言之上,它的关键字就是“Given”、“And”等等这样的字眼,另外还可以用法语、德语等等语言来写。用户编写好每一步的定义以后,Cucumber就会一步一步的解析关键字右侧的自然语言并执行代码。

应用Cucumber的方式有很多,例如给系统管理员用作Web应用的集成测试,或者将分布式系统集成并测试消息机制,又或者编写PDF的测试。

Cucumber的0.1.16版本可以做为Ruby Gem下载,0.1.99.10版本可以在GitHub上获取。

查看英文原文:Story Driven Development Recipes with Cucumber

Java BDD实战指南:从Cucumber入门到Spring Boot集成 行为驱动开发(BDD)是一种以业务价值为核心的软件开发方法论,它通过定义可执行的、结构化的自然语言场景来弥合业务、开发和测试之间的沟通鸿沟。其核心原理在于将需求实例化,使用Gherkin这样的领域特定语言描述系统行为,并直接转化为自动化测试,从而形成活的、永不脱节的文档。在技术价值上,BDD不仅提升了自动化测试的可读性和覆盖率,更驱动了更清晰的软件设计和更高效的团队协作。在Java生态中,Cucumber-JVM是实践BDD的主流框架,它能与JUnit、Spring Boot等工具链深度集成,广泛应用于We 阅读详情

相关推荐

BDD实战:用Cucumber+Playwright搭建业务可读的自动化测试框架

行为驱动开发(BDD)是一种敏捷软件开发方法论,它通过定义可执行的行为规范来弥合业务需求与技术实现之间的鸿沟。其核心原理是使用一种近乎自然语言的领域特定语言(如Gherkin语法)来描述系统行为,形成业务、开发和测试团队都能理解的“活文档”。在工程实践中,BDD的价值在于将需求验证前置,通过自动化测试确保代码实现始终符合业务预期,从而提升软件质量、减少沟通误解和后期返工成本。典型的应用场景包括用户故事验收、回归测试和持续集成流程中的自动化验证。本文聚焦于如何结合Cucumber框架与Playwright浏览

congji3817的博客 455

cucumber介绍及简单使用

1、cucumber介绍   cucumber是一种可以使用文本描述语言来执行自动测试用例的工具,使用的语言叫做Gherkin .   Gherkin用于描述软件的行为而不需要了解具体的实现,的使用主要有两个目的文档和自动测试用例(我们希望能够和手工测试用例也统一)。 Gherkin支持超过40种语言,包括英文、中文。 Gherkin可以在任何地方新增注释,注释以#开头,每一个文件都是以.feat...

cz9025的博客 1万+

Cucumber-rust:Rust语言的全本机Cucumber测试框架

Cucumber-rust 是基于行为驱动开发(BDD)原则的 Rust 语言测试框架,它允许开发者和业务分析师共同编写可执行的规范说明书,以一种业务可读的格式来定义软件功能和预期行为。通过这种协作方式,不仅加强了团队间的沟通,还有助于提早发现需求和实现之间的偏差。在本章中,我们将探讨Cucumber-rust的基础理念和它如何在Rust编程实践中发挥作用。

weixin_33480380的博客 848

【cucumber】CucumberOptions详解

@CucumberOptions注解:相当于Cucumber的初始化配置

sinat_37967865的博客 1308

Maven 搭建cucumber 简单示例

Maven 搭建cucumber 简单示例 1.新建Maven 项目 2.Eclipse安装 cucumber 插件:Help->Install New Software->Add name:cucumber location:http://cucumber.github.com/cucumber-eclipse/update-site 3.导入示例项目,右键运行testBaidu.feature 文件run as Cucumber Feature 4.结果如下: @tag Feature: open baidu Starting ChromeDriver 2.26.436362 (5476ec6bf7ccbada1734a0cdec7d570bb042aa30) on port 35183 Only local connections are allowed. @tag1 Scenario: Search Baidu # D:/workspace eclipse/test/src/test/features/testBaidu.feature:5 Given Go to Baidu home page # TestBaiduStepfs.go_to_Baidu_home_page() When Type the search text "selenium" # TestBaiduStepfs.type_the_search_text(String) And Click the submit # TestBaiduStepfs.click_the_submit() Then wait the query result # TestBaiduStepfs.waitTheQueryResult() 1 Scenarios (1 passed) 4 Steps (4 passed) 0m11.806s

Dify+MCP 双剑合璧:告别知识库模糊统计,让AI精准查询数据库数据!

本文详细介绍了如何通过Dify和MCP的结合,解决知识库在数据库查询中的模糊统计问题。通过MCP中间件将自然语言实时转换为SQL语句,实现精准数据查询,并支持SSE协议持续更新数据。文章包含MySQL环境搭建、MCP服务端部署、Dify工作流配置等实战步骤,帮助用户高效构建智能数据库查询系统。

weixin_33737774的博客 368

cucumber之测试框架搭建

基于BDD行为驱动的自动化测试框架cucumber,方便业务人员、测试人员和开发之间的沟通,提供测试效率

qq_16422103的博客 1840

DASH 流媒体协议(Dynamic Adaptive Streaming over HTTP)概述——起源、MPD文件解析、相关项目

简单介绍DASH的起源与发展、MPD文件简要解析、相关项目,以及常见流媒体协议的比较

farewellyi的博客 6884

cucumber简介

cucumber简介

weixin_64571932的博客 1347

RAW、RGB、YUV图像格式的采样与存储原理详解

本文详细解析了RAW、RGB和YUV三种核心图像格式的采样与存储原理。RAW是传感器原始数据,信息完整但需后期处理;RGB直接对应显示,直观但数据量大;YUV通过亮色分离与色度下采样,在保证观感的前提下大幅提升传输与存储效率,是视频编码与流媒体的主流格式。理解其差异是图像处理与视频开发的基础。

e4f5g6h7的博客 516

LM1875官方电路图元件作用解释说明以及电路调校

R1是为C1提供充放电回路用的电阻,这是老外工作严谨的地方,其实接好电位器之后直流通路就已经存在了,这个加上只能防止最恶劣情况时也能把C1的电能放掉,尽管只有一点点 C1是输入电容,主要作用是隔离前后级的直流信号,但是这个电容对音质的影响很大,可以换用不同的品牌和容量来部分修改音质和音色 R2提供LM1875正输入端的直流电平控制点,接地就表示在理想情况下Lm1875的输出直流电平是0V;还有一个作用就是确定放大器的交流输入阻抗为电阻值。 R3、R4是反馈电阻,这个电路的放大倍数为R4/R3+1=21倍。.

m0_50862404的博客 1万+

cucumber 过滤多个标签

-t @tag1, -t ~@tag2, -t ~@tag3 jenkins 命令:clean test -Dcucumber.options="-p json:target/result.json target/test-classes/features -t ~@DCV, -t ~@PMV, -t ~@EMV"-t 后面的标签如果加上了~就是不执行, 不加~ 就是执行具有该标签的用例...

wsl的专栏 991

Jitsi中的Prosody(谐音:破扫敌)介绍

凭借其灵活的插件系统、强大的安全性和出色的性能,Prosody 成为许多企业和开发者构建定制化通信解决方案的首选。在 Jitsi 的多方视频会议场景中,Prosody 不仅处理基本的信令任务,还需要与其他组件(如 Jitsi Videobridge)协作,确保视频流的正确分发和控制。Prosody 提供了丰富的插件系统,允许开发者通过模块扩展其功能。Prosody 就是一个实现 XMPP 协议的服务器,它支持 XMPP 协议的标准功能,如消息传递、群组聊天、传送状态信息等,并提供了高效、可扩展的服务。

江左散人的专栏 1166

使用Cucumber+Rspec玩转BDD(1)——用户注册

使用Cucumber+Rspec玩转BDD(1)——用户注册 2009年2月22日 星期日 ### 引言 ### 测试驱动开发的美名即TDD(Test-Driven Development 的缩写);顾名思义,就是利用测试来驱动程序的设计及其实现。在这一过程中,先写测试程序,然后再编码使其通过测试,经过几次反复的迭代后,使得程序的实用性达到开发人员的理想需求。 ...

weixin_30871905的博客 161

【OpenClaw从入门到精通】第13篇:OpenClaw低代码编排实战:非技术人员也能玩转AI自动化流程(2026新版实测)

本文聚焦OpenClaw 2026版核心升级的低代码编排能力,针对非技术人员的实操需求,从底层逻辑、双环境部署、三类实战案例、避坑指南四个维度展开。详解阿里云集群版(企业级)与汉化本地版(个人调试)的部署步骤,通过基础数据统计、公众号内容生产线、企业级任务调度三个递进式案例,演示可视化拖拽搭建自动化流程的完整过程。全程零代码/低代码操作,配套详细参数配置、执行结果模拟及问题排查方案,帮助销售、运营、自媒体等非技术人员快速掌握自动化工具,将重复工作交给AI,提升核心工作效率。

专注于人工智能、软件开发、工控自动化、工厂数字化及智能化等领域,希望和大家共同进步! 615

BDD行为驱动测试实践

else {else {else {Scenario Outline基本上用表中的值替换变量/关键字。表中的每一行都被认为是一个场景。继续使用登录功能的例子。到目前为止,一直在执行一个场景:提供正确的用户名,登录成功。现在,假设我们要检查所有三种可能的输入类型的登录是否成功,这三种类型的输入是用户名,电子邮件地址或电话号码。为了实现这一点,将需要写三个不同的场景,其中每个场景将随输入类型而变化,登录成功。

weixin_42194019的博客 1309

(LDA新闻文本主题分析)基于 gensim训练LDA模型,进行新闻文本主题分析 完整代码+数据 可直接运行

(LDA新闻文本主题分析)基于 gensim训练LDA模型,进行新闻文本主题分析 完整代码+数据 可直接运行

机器学习深度学习业余选手 1498

使用Cucumber+Rspec玩转BDD(5)——安全退出

使用Cucumber+Rspec玩转BDD(5)——安全退出 2009年3月20日 星期五 ### 温故知新 ###为了保护用户的隐私,限制特定资料的访问,前面我们给系统增加了登录功能;紧接着,又为了方便用户在一段时间之内不必重复登录操作,我们实现了用户的持久登录状态,即“记住我”功能。如果浏览器未关闭,或者用户一直处于在线状态,而用户自己并没有使用这台设备,很显然,这对用...

weixin_33698823的博客 181

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

行为驱动开发中的业务价值与协作沟通

在当今快速迭代的软件开发环境中,行为驱动开发(BDD)因其独特的业务价值与协作优势逐渐成为团队的首选方法。BDD不仅关注技术实现,更强调通过清晰的语言描述需求,确保开发成果与业务目标高度一致。本文将围绕BDD的核心价值,从业务需求对齐、协作效率提升和测试自动化三个角度展开探讨。通过“Given-When-Then”格式的场景描述,团队能明确功能的行为边界,确保开发结果与业务预期一致。对于追求高效交付与业务一致性的团队而言,深入理解BDD的核心理念,或许是提升竞争力的关键一步。业务需求对齐:从模糊到清晰。

iwlhnb_480的博客 163

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

【测试】——Cucumber入门

Cucumber框架是行为驱动(BDD)框架的一种,通过自然语言站在功能使用者视角,描述编写测试用例。简单来说就是通过feature文件编写脚本,脚本对应java写的方法,会有一个启动器配置对应的规则,按照指定规则执行对应的脚本。

HinsCoder的博客 1838

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

Selenium Cucumber JS 教程

Selenium Cucumber JS 教程 项目介绍 Selenium Cucumber JS 是一个基于 Node.js 的自动化测试框架,它结合了 Selenium WebDriver 的强大功能和 Cucumber 的 BDD(行为驱动开发)理念,以支持更清晰、可读性更强的浏览器自动化测试场景。该项目由 John Doherty 开发维护,提供了一个结构化的框架,使得开发者能够通过接近...

gitblog_00528的博客 1176

BDD实践:Cucumber, SpecFlow, Behave 全面指南

本文系统解析了三种主流BDD框架:Cucumber、SpecFlow和Behave。Cucumber作为跨平台方案适合Java/Ruby项目,SpecFlow深度集成.NET生态,Behave则以轻量级特性成为Python开发首选。文章从技术特性、适用场景、优劣势等维度进行对比,提供框架选型指南,并给出实战建议:保持场景原子化、优化测试代码结构、促进跨团队协作。通过电商登录案例展示了BDD在提升测试覆盖率和降低缺陷率方面的价值。最后指出BDD不仅是工具更是协作文化,测试工程师需掌握框架特性并推动业务技术融合

2501_94449023的博客 1269

脚本驱动的“故事”

[本文转自温昱的Blog] 读罢陆其明的新作《脚本驱动的应用软件开发方法与实践》一书,感觉非常不错!在我看来,此书至少有三个特点颇值得称道。 一是写法值得称道。作者陆其明不愧是四本原创书的作者了,他很了解读者爱看什么样的书,此书完全是在讲一线的开发“故事”,娓娓道来。此书自始至终贯穿的三个案例不是相互孤立的,可以说这是同一个软件的1.0、2.0和3.0版本,使读者更真实地体会设计改进的脉络...

我是传奇 374
上一篇: nativedriver - Google的手机自动化测试框架
下一篇: 珠海沙龙 - 《如何Hold性能测试》
TIB
TIB
博客等级 码龄19年 2879粉丝 957原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值