写点什么

阅读者:"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:303839

评论

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

AI框架中图层IR的分析

华为云开发者联盟

mindspore IR

GaussDB(for Redis)揭秘:Redis存算分离架构最全解析

华为云开发者联盟

redis 华为云 GaussDB(for Redis) 存算分离架构 中国系统架构师大会SACC

在C++中,你真的会用new吗?

华为云开发者联盟

c++ 内存 new new operator operator new

话题王者第三季,舍我其谁~

InfoQ写作社区官方

话题讨论 热门活动

Bi Token质押挖矿软件系统开发方案

看CarbonData如何用四招助力Apache Spark

华为云开发者联盟

spark Apache Spark ACID CarbonData 分布式集群计算框架

Test

bobcatzoo

千亿级数据迁移 mongodb 成本节省及性能优化实践(附性能对比质疑解答)

gmoy-tencent

MySQL 数据库 mongodb 架构 分布式数据库mongodb

秀出天际的SpringBoot笔记,让开发像搭积木一样简单

百度工程师手把手教你实现代码规范检测工具

百度开发者中心

百度 代码规范

7月日更,红心向党,党员入驻,即送马克杯~

InfoQ写作社区官方

7月日更 热门活动

INS视频怎么保存 (2021最新图文教程)

资源君

方法 经验分享 教程 资源分享 Instagram

「腾讯面试题」兔子试毒

Java架构师迁哥

缘起短视频APP系统开发介绍

智安小区建设,智慧安防小区改造建设方案

UC生态系统APP开发详情

你不知道的 Linux 使用技巧

学神来啦

2021Android高级进阶学习资料,已拿意向书!

欢喜学安卓

android 程序员 面试 移动开发

DOLLAR CAT/Dcat币挖矿系统开发

企业资产数据大屏,打破固有管理思维僵局,杜绝资产无效流失

一只数据鲸鱼

数据可视化 资产管理 金融资产 金融大屏

BTQQ挖矿/比特全球/BT全球系统APP开发简介

腾云视界APP开发|腾云视界软件系统开发

蜜蜂圈软件开发|蜜蜂圈APP系统开发

区块链技术如何赋能医学成像?

CECBC

火艺极速版短视频系统APP开发搭建

2021Android高级面试题及答案,Android篇

欢喜学安卓

android 程序员 面试 移动开发

圆梦腾讯之路!6面阿里、5面字节、4面腾讯,终斩腾讯Offer

Java 编程 架构 面试

泪目!跳槽太不容易,蚂蚁金服三轮面试,四个小时灵魂拷问

Java 面试

区块链的正确应用方式与前景

CECBC

Tubacle挖矿系统APP开发搭建

35K成功入职:蚂蚁金服面试Java后端经历!「含面试题+答案」

Java 编程 程序员 架构 面试

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