基本信息
- 原书名:Everyday Scripting with Ruby: For Teams, Testers, and You
- 原出版社: Pragmatic Bookshelf
编辑推荐
大量精彩的诀窍、指导、警告、例子、隐喻、练习及提问!对于那些想最大限度地利用测试自动化的软件测试从业者来说,本书极具参考价值。
Grigori Melnik,加拿大卡尔加里大学讲师
作为测试人员,你用于创建复杂测试数据的时间是否比使用它们的时间还要长?作为业务分析师,你多年读书的结果是否只是让你忙于把数据从报表拷贝到电子表格中?作为一个程序员,你是否每天都不得不巡视版本控制系统的输出来寻找所需文件?
如果你对上述问题的回答有一个为“是”,那么你就是在浪费工作台上的计算机。应该让计算机做它应该做的事情,而你应该做的事情是思考!你只需要一门脚本语言(它是免费的!)和本书(它很便宜!),并花一些时间通读示例程序并完成练习就足够了。
从本书中,你将学到Ruby的一些基础知识,并了解如何使用测试驱动设计编写稳定可控的脚本。你还能学到如何使用应用程序框架,它使你编写少量代码即可完成工作。
你还会学到如何处理常见的错误。你将学会辨明是否会走进死胡同,并学会怎样走出困境。你甚至能看到那些最常见的键盘输入错误,当真正见到它们时,你会轻松地意识到错在哪里。
■学会让任务自动化。
■获得一些真正有用的脚本程序,它们可以轻松地应用到你的工作中。
■理解编程术语和概念。
■从已有的代码和库中获益。
■跟团队成员更有效地沟通。
Brian Marick拥有英语文学和计算机科学的双重学位,多面手的才能也体现在他的职业生涯中。有时他是程序员,有时他又是测试人员。不管在哪个领域,他都比别人做得更好,因为他了解另外一个领域。在编写《The Craft of Softwa re Testin9》一书时,他就展现了这种才能。Brian还是《敏捷软件开发》(《Agile Software Development》)的起草者之一,并从此在敏捷方法学(Agile methodologies)方面有深入研究。因为敏捷方法鼓励跨学科的工作方式,他又一次发现自己不适合固定的领域。当做咨询工作时,他必须面对各种挑战。
作为测试人员,你用于创建复杂测试数据的时间是否比使用它们的时间还要长?作为业务分析师,你多年读书的结果是否只是让你忙于把数据从报表拷贝到电子表格中?作为一个程序员,你是否每天都不得不巡视版本控制系统的输出来寻找所需文件?如果你对上述问题的回答有一个为“是”,那么你就是在浪费工作台上的计算机。应该让计算机做它应该做的事情,而你应该做的事情是思考!你只需要一门脚本语言(它是免费的!)和本书(它很便宜!),并花一些时间通读示例程序并完成练习就足够了。
从本书中,你将学到Rubv的一些基础知识,并了解如何使用测试驱动设计编写稳定可控的脚本。你还能学到如何使用应用程序框架,它使你编写少量代码即可完成工作。
你还会学到如何处理常见的错误。你将学会辨明是否会走进死胡同,并学会怎样走出困境。你甚至能看到那些最常见的键盘输入错误,当真正见到它们时,你会轻松地意识到错在哪里。
内容简介
作译者
目录
1.1 关于本书结构
1.2 全书梗概
1.3 售后服务
1.4 续篇
1.5 鸣谢
第2章 起步
2.1 下载练习文件
2.2 从命令行开始
2.3 你需要安装Ruby吗
2.4 安装Ruby
2.5 两个基本工具
2.6 命令行提示符和irb提示符
2.7 是犯错的时候了
第1部分 基础知识
第3章 第一个脚本:比较文件清单
3.1 一个实战脚本
3.2 Ruby世界
3.3 对象发送和接收消息
3.4 用变量来命名对象
译者序
在这次旅程中,Brian除了在几个大的站点做深入讲解之外,对沿途的风光也做了快速的索引。因此,这次旅程不光趣味多多,知识营养也相当可观。
作为Brian的译者,我们就没读者那样轻松了。Brian的妙语连珠经常让我们抓耳挠腮,恨不得对大伙说:“这里是一段幽默,大家配合笑一下”。当然,如果这样的话,晓菲编辑一定会从电子邮件中跳出来掐住我们的脖子。所以,少不得我们这几个臭皮匠在这里讨论一番、争论一番,希望最后到底没有让读者失望。
本书的第I、IV部分由诸鸿君翻译、第II部分和练习答案由李琳骁翻译,剩下的部分由廖志刚完成,最后由廖志刚进行统稿。本书的完成是我们三人通力合作的结果,琳骁兄做了很多审校的工作,使我的工作轻松许多。
要特别感谢本书的责任编辑晓菲,她对工作的一丝不苟使我受益颇多。还要感谢我的妻子,她容忍了这段时间我面对屏幕的时间超过面对她。
廖志刚
2008年4月于西安
有一种说法:汽车是人类双腿的延伸,而计算机则是大脑的延伸。
然而现实往往叫人失望,在计算机前工作时,我们似乎成了键盘的奴隶,面对大量繁杂的替换、统计和提取特定信息等机械任务,我们陶醉于满屏幕地找寻,不停地敲击键盘……仿佛如此才能凸显自己的“忙碌”和“充实”。..
如何才能摆脱这份“忙碌”,让大脑得以闲暇用于思考呢?幸运的是,我们不需要再去发明轮子,利用现有大量灵活高效的工具如sed、grep、find等,并以shell脚本将这些工具粘合在一起,便可搞定大部分机械任务。而Ruby、Python等动态语言则试图通过另一种方式来解决这个问题,一方面提供丰富的模块,同时语言本身简单易学而又不失功能强大。本书正是一本关于如何善用后一种方式处理问题的实践指南,它带领读者将Ruby用于日常工作,实现各种繁杂而又机械的任务的自动化处理。相信作者循循善诱的写作方式定能帮助各位读者有效地掌握Ruby语言,并学会创造性地解决各种实际问题。
感谢廖兄、诸兄,与两位合作是一次愉快的旅程!感谢晓菲编辑,正是你的细心和耐心帮我消除了一些日益滋生的懒惰!最后,还要感谢我的爱妻,你的宽容和支持是我最大的动力。
李琳骁
2008年4月于杭州
本书所面向的三类读者中,我占了两类:曾经是一个程序员,现在是一个tester。想想读过的编程语言类书籍也不少了,这类书籍八成都是从让人觉得有点过于简单的(同样也是经典的)“Hello,World!”开始的,而这本不是。这个有些特别的开始恰恰就对我眼前的工作——“怎么判断产品的安装卸载是否成功执行”——提供了思路,我想这正是本书的魅力所在。作者的初衷也正是使各种背景的读者们都像我一样从中有所收获。
平常工作中天天用英文,但是只要自己了解意思,很少会逐字逐句地深究,这次则有所不同。虽然自觉下了不少功夫,终究经验能力有限,希望我的翻译没有引起Ruby粉丝们的不满,如有疏漏,敬请原谅和指正(枪打出头鸟,还好我排在最后,窃笑)。
最后,感谢我的小宝宝天天给我笑脸,同时感谢宝宝妈妈以及全家人的全力支持。
诸鸿君
2008年4月于西安...
媒体评论
Grigori Melnik
University of Calgary,讲师
一本精彩的“跟我一起做(type-along-with-me)”类型的书籍,它由浅入深地介绍了一门强大的脚本语言,让读者在不知不觉中成为一名Ruby程序员。
Erik Petersen
Emprove
终于,测试社区拥有了一本饱含智慧结晶的手册。文字简明易懂,示例代码面向现实问题,并涵盖像测试驱动、继承这样的复杂主题。通过它,测试人员不仅能在测试领域更上层楼,也让他们能为所在机构的软件开发作出可观的贡献。
Gunjan Doshi
Community Connect,Inc,产品开发和流程优化部副总
Marick通过一系列简短实用的例子对Ruby语言进行了解说。相信Watir 用户和其他准备学习Ruby的测试人员一定会乐在其中。..
Bret Pettichord
Watir,开发主管
读完本书,你能学会测试自动化,这会让你在你的QA同伴中脱颖而出;你还能学会用Ruby编程,它其乐无穷;你会得到若干有用的实用工具,稍加修改就能满足特定需求。本书让这一切都来得轻松愉快。你会成为更有效率的测试人员,并(很可能)非常享受测试的全过程。
George Hawthorne
Oblomov Consulting咨询师
本书相当出色。在这样一本相对苗条的书里,既有丰富的内容,又覆盖了很多领域,这让我感觉非常棒。我有很多超过800页的技术书籍,我一般只能读完前面的一半或2/3,因为它们往往越往后越深奥。本书却让我一直兴致盎然,我有一份全职工作和一个10个月大的儿子,而我仍在一个星期左右的时间里看完了本书的所有示例代码。Brian的个性对本书起到了良好作用(比如说“狗窝”那段内容),它使得所述内容更容易理解。
Paddy Healey
Aventail,企业系统工程师
本书关于正则表达式的章节、示例和练习就能值回本书的价钱了!其余的就是你赚到的——那是你不曾想过能够拥有的各种甜点。不管你是初学乍练还是编程老手,本书都是无价之宝。那些示例、练习、各种Ruby语言细节、循序渐进的方法和讲解会让你在测试自动化方面进入一个全新的境界。
Paul Carvalho
书摘
鞋匠的孩子光着脚到处跑。
那些不从事软件开发的人会发现,大量的工具不断涌现,使得工作负担不断从人类转移到计算机。但是软件开发人员常常有不同的观点。他们日复一日地重复那些手工劳动:在一张工作台前,一个测试人员正在用手工方式把测试数据输入到数据库里;在另外一张工作台,一个程序员正筛查版本控制系统的输出结果,试图找到想要的文件;在第三张工作台,一个商业分析师正将报表里的数据拷贝到一个电子表格中。
以上这些工作计算机可以做得很完美,人们为什么要自己做?这与知识和技能有关。测试人员认为编程太难,因此从来不学;程序员会编程,但是他所会的语言无法轻松完成此项工作,并且他没有时间利用颇有难度的方式来实现这些任务:那位分析师曾写过一个脚本来完成类似的杂事,但是当他试着把脚本应用到那个报表时,脚本却不能工作,使这个脚本重新工作会比手工拷贝数据花费更多时间,即使他下个月还会拷贝6次。
本书是为下面这几类人写的:
•为那些认为编程太难的人(我们的测试人员):其实编程没有那么难。编程的名声不太好,是因为计算机曾经运行得很慢。为了使程序运行得足够快,程序员不得不使用那些必须告诉计算机各种各样繁琐细节的编程语言。现在计算机已经足够快了,能使用那些不需要阐述所有细节的语言。结果就是,现在编程简单多了。
•为那些在编写或改写较大脚本时陷入困境的人(我们的分析师):你还不能掌控复杂性,在本书中你能学到这些。本书会教你一种现代风格的编程方式,它强调测试先行(测试驱动的编程),尽可能借鉴别人的工作,逐步扩展程序,并且让代码一直保持干净整洁。
很多脚本是一次性的:编写、使用、然后扔到一边。不过对于那些希望保留的脚本,这些技能会助你一臂之力。(说实话,我接触过的许多专业程序员也没有学到这些技能,因此他们会发现这本书是一个不错的开始。)
•为那些熟知“错误”的编程语言的人(我们的程序员):象Java、C#、c++或者C这样的编程语言有特定的使用环境,但是它们并不善于快速实现小程序,尤其是那些需要操作文本和文件而非数字和内部数据结构的小程序。你需要在自己的技能清单里添上另一门编程语言。
在本书里,你将学习一种对上述三类读者都很适合的语言——RubY。它易学易用,既有转换或者搜索文本这类简单的特性,也具备处理复杂事物的各种特性。如果你是测试人员,你会很高兴,因为测试也是Ruby所擅长的领域之一(很大程度上归功于Watir,见http://wtr.rubyforge.org/,它是一个驱动Web浏览器的工具)。如果你是程序员,你大概已经知道Ruby最近因为它的“杀手级应用”——Rails(一个构建Web应用的框架,见http://www.rubyonrials.ore/)而变得爆受欢迎。抛开这些,Ruby已有超过l0年的历史,它不是某种短暂的时髦东西或者不稳定的原型。而且,Ruby社区十分友好,每个人都会乐于参与其中。
……