基本信息
- 原书名:The Cucumber Book:Behaviour-Driven Development for Testers and Developers
- 作者: (英)Matt Wynne (挪)Aslak Hellesy
- 译者: 许晓斌 王江平
- 出版社:人民邮电出版社
- ISBN:9787115318855
- 上架时间:2013-6-27
- 出版日期:2013 年7月
- 开本:16开
- 页码:272
- 版次:1-1
- 所属分类:计算机 > 软件与程序设计 > 综合 > 高级程序语言设计
【插图】

编辑推荐
Cucumber创始人与最有经验的用户和贡献者之一的权威力作。
流行的自动化功能测试工具Cucumber的权威指南。
国内敏捷及测试群体极好口碑和期望。
内容简介
计算机书籍
《Cucumber:行为驱动开发指南》的两位作者是Matt Wynne和Aslak Helles?y,前者是Cucumber最有经验的用户和贡献者之一,后者是Cucumber的创始人,因此,《Cucumber:行为驱动开发指南》是一本权威指南,它会提供使用Cucumber所需的全部知识,让你和你的团队自信地开启Cucumber之旅。尽管Cucumber诞生于Ruby社区,但你可以用它测试几乎所有系统,从简单的shell或Perl脚本,到使用PHP、Java或任何其他平台编写的Web应用。
书中将展示如何用一组清晰、可执行且团队中任何人都能读懂的规格说明来表达用户那些天马行空的想法。你将学会如何将这些示例提供给Cucumber,并让它指导你的开发过程。《Cucumber:行为驱动开发指南》的第一部分会提供Cucumber入门所需的全部知识,引导你从Cucumber的核心特性起步,通过Cucumber的Gherkin DSL,使用自然语言来描述客户想要的系统行为,然后带你编写Ruby代码来解释这些自然语言描述的规格说明并据此来验证应用的行为。第二部分将通过一个可以工作的例子来巩固学到的知识,同时学习一些更高级的Cucumber技术,还将学习如何测试异步系统和使用数据库的系统。第三部分提供了一些解决问题的方法,针对的都是作者曾帮助其他团队解决过的最困难、最常见的问题。基于这些模式和技术,你将学习如何使用Capybara和Selenium测试大量使用Ajax的Web应用,测试REST Web服务、Ruby on Rails应用、命令行应用、遗留程序等。
Cucumber有助于在软件团队中的技术人员和非技术人员之间架起沟通的桥梁。《Cucumber:行为驱动开发指南》的内容既适合开发人员和测试人员阅读,也适合软件团队中的非技术读者阅读。
作译者
Aslak Helles?y Cucumber项目的创始人,伦敦DRW交易集团(DRW Trading Group)伦敦公司的一名高级开发工程师,他使用多种不同的语言编写快速、智能的软件。在此之前,他是挪威BEKK咨询公司的首席科学家。Aslak的推特是@aslak_hellesoy。
译者介绍
许晓斌 程序员,敏捷教练,技术作者,持续集成方面的专家。曾任职于Sonatype,是开源软件Nexus的核心团队成员,Maven中央仓库的主要维护者。著有《Maven实战》,译有《Maven权威指南》,有不少文章发表于InfoQ、《程序员》等技术杂志,活跃于敏捷社区并在Agile Tour等ScrumGathering等会议上发表过演讲。新浪微博@juvenxu,博客http://www.juvenxu.com/。
王江平 就职于Autodesk软件上海分公司。热爱编程,热爱修bug,热爱读书,热爱交友,热爱唱歌,热爱看戏,热爱骑单车……热爱everything却无一精通的专业程序员一名。也热爱人肉翻译,参与、主导或独立完成过《代码之美》、《C#3.0设计模式》、《敏捷开发的艺术》、《软件开发者路线图》、《Java语言精粹》、《Python计算与编程实践》等书的翻译。新浪微博@steedhorse。
目录
第一部分 Cucumber基础 1
第1章 为何使用Cucumber 3
1.1 自动化验收测试 3
1.2 行为驱动开发 4
1.2.1 通用语言 4
1.2.2 实例 5
1.3 活的文档 6
事实来源 6
1.4 Cucumber如何工作 6
1.5 我们学到了什么 7
第2章 Cucumber初体验 9
2.1 理解我们的目标 9
2.2 创建一个特性 10
2.3 创建步骤定义 12
2.4 实现第一个步骤定义 13
2.5 运行程序 14
2.6 改变格式器 15
2.7 添加一个断言 16
2.8 让测试通过 18
前言
更为出色的是Cucumber会无偿做那些重复检查,以确保系统的运行符合预期。它可以把测试人员解放出来去做有意思、有创意的东西,并且给程序员必要时对代码做大手术的勇气。业务干系人对Cucumber这种开放的态度十分赞赏。Cucumber可以用他们能够理解的术语分享开发团队所做的一切。
Cucumber是一种新兴工具,但人们已对它有了些许误会。那些早期就开始接触Cucumber的人已经本能地意识到,Cucumber不仅是一种测试工具,更是一种协作工具。通过本书,我们希望自己不仅能为你展示怎样使用Cucumber,还能教会你如何更有效地利用Cucumber。
本书的目标读者
Cucumber旨在帮助软件团队在技术成员和非技术成员之间搭建一座桥梁。我们已经考虑到了这两类读者。本书主要写给那些至少掌握了一定编程技能且对自动化感兴趣的技术类读者。然而,本书的一些章节,尤其是前面解释如何编写规格说明本身的那一部分,主要是写给非技术读者的。具体来讲是以下几章。
第1章 为何使用Cucumber
第3章 Gherkin基础
第5章 富有表现力的场景
第6章 Cucumber常见问题及解决之道
第13章 为遗留应用添加测试
随着内容的深入,我们将关注更加复杂的测试环境,并且读懂章节内容所需的技术层次也将升高。我们已经努力使知识结构尽可能地循序渐进,以便让刚刚接触测试和自动化的读者能跟上学习的步伐。
阅读本书不需要了解Ruby,但了解是有帮助的
Ruby是一种开源编程语言,可以在绝大多数操作系统上安装和运行。Cucumber最早的版本就是用Ruby写的,到今天它也是最流行的版本,本书正是关于这个版本的。
这并不是说被测系统必须用Ruby宋写。Ruby的诸多优点之一是与其他语言和平台的完美交互。我们会向你展示如何利用Ruby工具来测试可用任何语言编写的基于Web的系统。
了解一点儿Ruby有助于跟上技术章节中的代码实例。Ruby语言学起来很容易,同时我们用到的Ruby实例也很简单。为了最大限度地吸取本书的精华,我们建议Ruby新手同时使用Everyday scripting with Ruby[Mar07]或者Programming Ruby:The Pragmatic Programmer's Guide[TFH08]。
学习CUCUlIIber不必基于测试驱动
从一个失败的Cucumber测试开始,然后通过这种失败来驱动应用代码的开发工作,作为一种由外向内的开发方法的一部分,我们已经用Cucumber取得了极大的成功。作为开发人员,这种工作方式能让我们实事求是,一步一个脚印,避免我们想当然地开发将来也许有需求但当前没有需求的功能。
Cucumber可以完善我们的工作方式,但它并不强制。一些团队利用Cucumber自动测试开发人员已经完成的工作。这是采用由外向内方法的第一步,因为Cucumber可读的测试已经吸引了团队中非技术干系人的视线并逐步使他们参与进来。即使用Cucumber编写针对已有代码的测试,你从Cucumber中的获得的好处仍然远远超出同类软件,比如QTP和Selenium IDE。我们相信本书会使你收获很多。我们并不是鼓吹这个过程,而是想和你分享关于哪些方法对我们行之有效以及为什么有效的一些感悟。
为何要听从我们
我们已经开发软件二十多年,运用自动测试也有十余年。Aslak在2008年开发了Cucumber。 Matt从第一天就是最活跃的用户。
序言
很少有什么东西能代表真正范型(paradigm)上的转换。多数时候“范型”这一术语是市场营销人员用来说服你改换牙膏品牌的。根据免费在线词典(Free Online Dictionary)的解释,范型是“团体共享的一组假设、概念、价值和实践,它们构成了团体看待现实的方式。”没错,范型的转变会打乱一个人的现实感!难怪人们会不舒服。
TDD就是少有的这种真正的范型转换之一,因此,在你尝试引入它的时候很多人深表怀疑也就不足为奇了。而同样不足为奇的是,我们需要多次以不同的方式,从不同的角度,向不同的受众来明确地表达,然后方能找到真正有效的东西。起初我们从代码深处开始,因为那是程序员关心的地方。后来我们便能采取行动更加接近业务于系人(business stakeholder)并描述多层次的方法,也就是现代BDD(同时也是传统TDD,这有点讽刺,Kent Beck从一开始就将TDD描述为工作在多个抽象层次上的)。
Aslak Hellesoy几乎从最开始就参与到对这一转变的描述中来。作为BDD的早期采用者,同时也是TDD的热情倡导者,他把我为RSpec构建一套场景运行器的痛苦努力重写成了如今我们称之为Cucumber的工具。他在工具及其社区上都投入了大量的时间和精力,因此,得知他和Matt在写一本用Cucumber实施BDD的书,我一点也不奇怪。我喜欢他们同时面向开发者和测试者这一做法。如果工具不能将这两个世界更紧密地联结在一起,那它就不是一种好的工具。
得知Aslak的“同谋”将是Matt Wynne,我很开心。作为另一名热情且有经验的TDD实践者和BDD实践者,Matt从第一天就跟Cucumber结下不解之缘。他是一位风趣又有魅力的演讲者和极好的教师,其作品中知识与智慧源源不断。事实上,我甚至提议为Matt Wynne定义一个全新的描述成功的形容词——马氏成功(Matt Wynee),其程序介于一般成功(Win)与卓越成功(Epic Win)之间。(噢,太酷了,你注意到了吗?那不仅仅是一般意义上的成功,那是一种“马氏成功”!)
我希望你能同我一样喜爱这本书。记得在我审阅早期书稿的笔记中出现过好多“哦,太可爱了!”这样的语句,具体多少记不清了。那种感觉就像被两位博学而又随和的向导带进一个陌生却又似曾相识的世界。数不完的示例、描述和边框注释(Joe——你很快就能见到这个名字——问了一些我发现自己也想问的东西,不久就成了我的朋友。)在学习的道路上为你提供帮助,同时作者们也努力使情节足够快地发展,从而让你保持专注,对一本技术书籍来说,这永远都是一种挑战。
我说不出再过8年BDD会在哪里,但有Matt和Aslak这样的人分享他们的革新和洞见,眼下就是投入敏捷软件开发的一个激动人心的时刻。
——Dan North,DRW Trading的精益技术专家,BDD发起者
媒体评论
——Robert C. Martin(Bob大叔)
观看了Matt的“注定要做的BDD”(BDD As It’s Meant to Be Done)演讲几天之后,我在从法国格勒诺布尔到比利时布鲁塞尔的火车上如饥似渴地读完了这本“黄瓜书”。通过这篇演讲加上这本书,只用几个小时我便理解了以Cucumber风格编写场景时应该如何避免几十种常见的错误。我仿佛一下子被注入了足足两年从编写蹩脚场景的教训中取得的经验,于是不必从头亲历整个过程。多好的一份礼物啊,我愿意向工作中用到Cucumber的每个人推荐这本书。
——J. B. Rainsberger,JUnit Recipes作者
团队可以通过Cucumber更好地理解为客户构建什么软件。在这本书里,Aslak和Matt通过大量易于操作的示例极好地解释了如何迈入Cucumber的大门。
——Rachel Davies,Agile Coaching作者
对于想知道如何有效使用Cucumber的人来说,本书就是答案。Aslak和Matt并不满足于写一本简单的测试书,他们在内容中包含了对软件开发诸多方面的实用见解。学习这本书能助你成为一名更好的软件开发者。
——Pat Maddox, B.D.D.M.F.,RSpec核心团队
这是社区中亟需的一本书,书中不只对如何使用Cucumber做了展开式的描述,还对如何将它用到最佳效果给出了观点鲜明的建议。阅读这本书如同Aslak和Matt就坐在你旁边,耐心地帮你使用Cucumber完成自己的第一个项目。你不仅可以学会如何有效地使用Cucumber,还会见识到多种可以跟Cucumber结合使用的Ruby工具。
——George Dinwiddie,iDIA Computing有限公司软件开发教练
Matt和Aslak展示了Cucumber如何将你从陈腐的文档、含混的需求和缺失的测试中解救出来。读完本书,团队中的程序员、测试员和产品负责人定会兴奋地谈论你们下一步将要一起构建的卓越产品。
——Ian Dees,Scripted GUI Testing with Ruby作者
本书中“Cucumber旨在帮助软件团队在技术成员和非技术成员之间搭建一座桥梁”这一说法打动了我。两位作者知道整个团队需通过实例来理解规格说明,靠职责不同的成员协作交付客户真正想要的东西。他们使用例子教我们如何通过Cucumber来自动化回归检查,并用这些检查构建一张支持重构的安全网,并将测试人员解放出来,使他们将最有价值的技能贡献给团队。
——Lisa Crispin,Agile Testing: A Practical Guide for Testers作者之一
这是关于如何进行有效验收测试的一则故事,而Cucumber则是三明治的夹心。两位作者并不停留于问题表面,他们深入里层,向我们展示了Cucumber多种多样的功能。
——Robert Chatley,Devlogical负责人
本书针对Cucumber新手和专家给出了大量的使用建议——Matt和Aslak详尽地解释了从入门到发挥Cucumber最大功效的所有知识。你应该一页一页地读完这本书,并将它作为一本手册留在身边。
——Gojko Adzic,Specification by Example and Bridging the Communication Gap作者
对任何打算使用Cucumber的人,本书都是必读之作:里面全是珍宝,即使对经验丰富的Cucumber用户来说亦是如此。
——Antony Marcano,RiverGlide