HarmonyOS开发者限时福利来啦!最高10w+现金激励等你拿~ 了解详情
写点什么

阅读者:"Cucumber 行为驱动开发指南" 能带给我们什么

  • 2013-10-04
  • 本文字数:2399 字

    阅读完需:约 8 分钟

介绍

或许你已经了解到了软件开发中一个头疼的事,就是如何产生正确的需求和围绕这些需求如何有效地进行软件开发?但又不知如何着手?

或许你已经了解到了一些相关的理论知识来解决这个难题,如:行为驱动开发 (BDD),验收测试驱动开发(ATDD),实例化需求(Specification By Example), 但却发现很难消化所有的信息?

或许你已经建立了一套相关的自动化测试,但总觉得在为测试而测试,没有解决实际问题,有点脱钩?

或许你已经开始着手建立自动化测试来做保障,但对那么多的工具无从选择?

也或许你只想在炎炎夏日看一本解渴的书?

所有这些,都推荐最近翻译出版的黄瓜书 【Cucumber 行为驱动开发指南】,原书是 Pragmatic 出版社的 The Cucumber book:The Bevaiour-Driven Development for Testers and Developers ,本书在美国亚马逊网站上获得全五星,强烈建议您也去看看本书,以及那些精彩的书评!

Cucumber 行为驱动开发指南

这本书是讲述如何用 Cucumber 工具来建立一个自动化测试系统,以此来推进业务开发过程,确保软件开发的质量。

Cucumber 是一个工具的名字,它帮您将需求用自然语言描述清楚,这样以便于沟通和协调。这些需求是一些可读性很强的测试用例,Cucumber 能够帮助您自动化运行这些测试用例,来验证您的软件对需求的实现程度,使您能够全程监控好需求实施的进展。

本书的目的不是介绍工具,而是让您了解如何有效的用工具来驾驭需求,如何运用 Cucumber 解决实际问题,而不是纸上谈兵。作者不愧是浸染 Cucumber 的高手,知道什么地方该多,什么地方点到即可,书中写了好多例子,但又让您感觉不到是代码的堆砌,所以是一本极好的实践集。

本书分三部分来循序渐进地讲解各个要点:

第一部分是 Cucumber 的基本知识, 讲述使用 Cucumber 背后的理念,通过一个简单的例子让您很自然地了解 Cucumber 的语法,以及如何在实际情况中使用。

第二部分是用一个真实的例子来进一步讲解技术细节,和如何在开发中有效地使用,涉及到了异步处理和数据库处理。

第三部分是讲如何应用 Cucumber 来处理不同的系统,如:Web 界面和命令行等等,并提供了一组配方来解决您的特定问题。

解决实际问题的书

作为一个软件开发者,我经常关注和学习最新的软件开发的方法和相应的工具,很早就对 ATDD(Acceptance Test Driven Development 验收测试驱动开发)感兴趣,2011 年也参加了 Gojko Adzic 的”实例化需求“的讲座,进行了尝试,也有一些深刻的体会。但是在实施的时候总觉得不得要领。

这本书给了我很大的帮助,他结合了对工具的技术细节的把握和行为驱动开发的深刻理念,来解决实际问题。这个在第六章中有集中体现,第十二章也能很好感受到。

第六章-常见问题的解决方案

作者列出了一些自动化测试中常见的问题,一下子击中要害,如果您进行过测试的开发,就会很有兴趣想看看他的解决方案。 这四个症状是:

  • 个别测试随机失败
  • 总是不经意地破坏已有的测试
  • 特性运行时间过长
  • 利益相关人不读我们写的特性

我敢保证这些症状是各个产品开发中的通病,不管用什么工具都会碰到。

比如第一个症状 -“个别测试随机失败”,他归结为问题:“闪烁的场景”,这在测试中是最常见的毛病。在一个不成熟的团队中,不太专业的测试人员会抱怨团队中的其他人:“我这边都是好的,就是其他人的问题。”。

这种情况追根溯源有很多,书中提到了三点:共享的环境、渗露的场景、竞争条件和打瞌睡的步骤。这些点在后续章节中又结合了具体的技术问题,前后呼应。

前三个症状看上去和 Cucumber 并没有直接关系的要点,也恰好是本书的亮点之一:他不断提醒您如果碰到这些常见问题,指导您如何用正确的方法来使用好 Cucumber 这个工具。也希望通过用实践经验引导您如何运用 Cucumber 写好您的测试用例,而不只是单纯的学习 Cucumber 的语法。

解决第四个症状是 Cucumber 的强项,也是本书的要点:Cucumber 不仅仅是自动化测试工具,它的测试用例更是利益相关人互相沟通的绝好载体,这里解释了如何写好测试用例来加强沟通,而不是沦为一个简单工具。

读这章时,建议您先想想自己会如何考虑和解决书中提到的问题,跟着作者一起思考。

第十二章测试 REST Web 服务

很多 Web 测试都是喜欢用 Selenium 来做页面调用,通常容易误入歧途:为了测试而测试。Cucumber 当然也可以和 Selenium 结合使用,但好的实践是对 Web 的接口进行测试。Web 测试这一章介绍的就是如何用 Cucumber 来测试 REST 接口的 Web 服务。

REST Web 服务结合 JSON 现在是很常见的了,这章就使用了一个小 Web 服务器来引导您如何做 Web 服务测试,是用 Ruby 的 Sinatra 演示的,由于它的语法非常简单,如果您熟悉其他的框架,也很方便替换。

Web 服务接口常用 JSON 来体现,这个在测试用例中往往会变得很技术化,作者在这章中特意花了些笔墨告诉我们如何在场景中避免出现 JSON 这样的技术术语,毕竟这些测试用例不仅仅是测试,它还是一个沟通的工具,作者特意强调了如何用文档的思维方式来写这些用例来确保可读性,这种方式贯彻在整本书中,不断提醒你用正确的方式写测试用例,当然这在 Cucumber 中叫特性,你会很快习惯的。

这个 Web 服务的小应用程序和测试例子随着问题的深入不断变复杂,用例子来说明问题是本书的另一亮点,通过跟着做练习不断强化理解。到最后会发现这就是您在实际过程中遇到的场景。

结束语

我愿意把这本书推荐给那些想了解如何处理需求和自动化测试的开发经理和开发者,如果还想了解行为驱动开发知识的话,还可以一起购买【实例化需求】辅助阅读,来加深理论方面的知识。

也推荐给那些已经熟悉了一些自动化测试的,正在寻求扩展的技能开发人员。

实际上对每个软件开发人员都会有点启示。

这么热的天,来根“黄瓜”解解渴。

Shared in Google


感谢张逸对本文的审校。

给InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家通过新浪微博( @InfoQ )或者腾讯微博( @InfoQ )关注我们,并与我们的编辑和其他读者朋友交流。

2013-10-04 08:303179

评论

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

汽车辐射大?技术来救它:整车辐射抗扰发射天线仿真建模及性能预测

Altair RapidMiner

人工智能 汽车 仿真 altair 辐射

商品图片与详情描述:1688 API返回值的重要部分

技术冰糖葫芦

API 文档 API 测试 API 优先 API Hub

写报告 进图谱 做演讲,可信数据库大会上亚信科技AntDB可太忙了

亚信AntDB数据库

从焦虑症到AI「网红」:这名程序员是如何让AI「助他一臂之力」

新程序员编辑部

ChatGPT Prompt

性能提升20%,字节跳动HTTPDNS从中心下沉到边缘

火山引擎边缘云

边缘计算 HTTP DNS #DNS 边缘计算平台

待办事项软件选择指南:挑选你的效率助手

爱吃小舅的鱼

待办事项

《饿殍:明末千里行》PC+手机版分享,高达97%的好评率。

你的猪会飞吗

单机游戏

大咖公开课 | 大模型场景讲解以及测试方法

霍格沃兹测试开发学社

全面解析:抖音商品列表数据接口的使用与集成技巧

tbapi

抖音 抖音商品列表数据接口 抖音商品列表数据采集 抖音API接口

精选顶级工时管理平台:你的最佳选择

爱吃小舅的鱼

工时管理 工时管理系统

火山引擎VeDI数据技术分享:两个步骤,为Parquet降本提效

字节跳动数据平台

云服务 数据平台 火山引擎 数据飞轮

管理能力达到国际认可水平 智谱获得国内首批ISO/IEC 42001:2023人工智能管理体系认证证书

技术研究院

探索最佳工作内容管理工具:2024年7大精选

爱吃小舅的鱼

任务管理 任务管理软件 任务管理工具 工作内容管理工具

如何借助逻辑数据编织平台实现“数据优先堆栈( DFS )”

Aloudata

数据仓库 数据虚拟化 数据编织

如数据血缘探究数据管理的“自治理”

Aloudata

Data 数据管理 数据血缘 Data Fabric

涨见识了!脱离vue项目竟然也可以使用响应式API

快乐非自愿限量之名

JavaScript Vue 前端

你知道程序员再过几年会没落?

高端章鱼哥

AWS 弹性伸缩特性介绍

AutoMQ

云计算 kafka 云原生 AWS

天工一刻 | 一文看懂3D大模型

新消费日报

MySQL 备库可以设置 sync_binlog 非 1 吗?

爱可生开源社区

MySQL 数据库 MySQL主从复制

智胜未来:国内大模型+Agent应用案例精选,以及主流Agent框架开源项目推荐

不在线第一只蜗牛

人工智能 AI

2024年团队任务分配软件推荐:7大热门工具

爱吃小舅的鱼

团队管理 任务管理 任务管理工具 任务分配工具 团队任务管理

Kubernetes集群的ETCD分布式数据库高可用原理解析

inBuilder低代码平台

开源 云原生 Kubernetes, 云原生, eBPF

HAProxy 可观测性最佳实践

观测云

HAProxy

如何在 SpringBoot 中优雅的做参数校验?

快乐非自愿限量之名

Java Spring Boot 后端

澳鹏Appen入选大模型产业链基础层图谱及案例研究

澳鹏Appen

大模型训练 大模型 百模大战

一文剖析高可用向量数据库的本质

Zilliz

人工智能 大数据 AI Zilliz 向量数据库

用Python来DIY一个AI面部情绪识别API的简单方案

幂简集成

API

程序员,到底要懂多少业务?

秃头小帅oi

【YashanDB知识库】使用select * 创建的物化视图无法进行查询重写

YashanDB

yashandb 崖山数据库 崖山DB

项目管理优化:7款顶级多项目软件解析

爱吃小舅的鱼

项目进度管理 项目进度管理软件 项目进度管理工具

阅读者:"Cucumber行为驱动开发指南" 能带给我们什么_语言 & 开发_蔡煜_InfoQ精选文章