第一图书网

测试驱动的JavaScript开发

Christian Johansen 机械工业出版社
出版时间:

2012-2-9  

出版社:

机械工业出版社  

作者:

Christian Johansen  

页数:

396  

译者:

赵勇,程德,凌杰,高博  

Tag标签:

无  

前言

  前言:  作者对于本书的观点  近年来,JavaScript已经发展壮大。“DHTML”的峥嵘岁月已经一去不复返,我们现在身处的是“Ajax”、甚至是“HTML5”的时代。在过去的几年里,JavaScript产生了一些杀手级应用;它也研发出了一些健壮的库,以帮助开发者书写跨浏览器脚本;它还有了一组工具,例如调试器、分析器,以及单元测试框架。整个社区不知疲倦地工作,将他们所知晓和喜欢的用于其他语言的工具带入JavaScript,以为它准备一个“真实”的开发环境,在此环境中人们可以借鉴从其他环境中获取的工作流和知识经验,集中精力构建高质量的应用程序。  不过,JavaScript社区总体来说还不够侧重于自动化测试,测试驱动开发在JavaScript开发工程师中还比较罕见—即使他们已经工作在这么一种可能目标平台最为宽泛的语言之上。在很长的一段时间里,这种现象可能是缺乏工具支持的结果,但是新的单元测试框架可谓层出不穷,它们为测试代码提供了无穷无尽的方法,并且让您感觉顺手。即使如此,大多数的Web应用程序的开发人员仍然在测试其JavaScript代码方面缩手缩脚。我难得遇到一位Web开发人员能够具有某种程度的信心将他的应用程序的核心功能提取出来并加以重新安排,而这正是强力的测试套件赋予开发人员的能力。这种信息会减少开发人员对应用程序出错的担心,从而能够更加放心地集中精力于实现新的功能。  本书将展示,JavaScript中的单元测试和测试驱动开发已经有了长足的进步。它将帮助您写出更漂亮的代码,并成为更具生产力的开发工程师。  本书内容  本书主要讲述实践中的JavaScript开发,采用了测试驱动开发所提倡的技术和工作流。它也讲述了如何通过测试覆盖率数据来增加您对代码的信心,并获得无所顾忌的重构和系统地开发代码库的能力。它还讲述了如何编写模块化的、可测试的代码,以及如何编写在各式各样的环境中运作,并且不会给您的用户带来麻烦的JavaScript。  本书的内容组织  本书分为4个部分。您可以用自己习惯的任何顺序来阅读。第二部分介绍了一些在全书范围内使用的工具,但是它们的用法您应该已经足够清楚,所以,如果您已经对JavaScript开发中诸如“不唐突的JavaScript”以及“特性检测”这样的主题有着坚实的理解的话,那么您就完全可以先将这部分略过。  第一部分:测试驱动开发  第一部分将介绍自动化测试和测试驱动开发中的概念。我们将从审视单元测试是什么、它做了什么、有什么好处来入手。然后,我们将围绕它们建立起自己的工作流,与此同时介绍测试驱动的开发流程。我将给您演示若干可用的JavaScript单元测试框架,讨论它们的优点和缺点,最后更加仔细地研究那个我们将在全书范围内使用的框架。  第二部分:开发人员的JavaScript  第二部分将更深入地研究JavaScript程序设计。这部分并非完整地介绍JavaScript语言。您应该已经有一些JavaScript的经验(可能是用过诸如jQuery、Prototype这样的库)或者有一些其他编程语言的经验。如果您是一名之前没有JavaScript经验的程序员,本部分有助于您理解JavaScript在哪些方面与其他语言不同,尤其是与其他在动态性方面略逊一筹的语言有何不同,并且给您打好必需的基础,以使您能看懂在第三部分那些实践中的例子。  如果您早已对闭包、原型继承及其动态本质,以及特性检测等高级JavaScript概念了如指掌,那么您可能仅仅想翻翻本部分的内容作为提醒,或者直接跳至第三部分。  在讲述JavaScript的细节时,我将采用单元测试的手段来说明这门语言,并借此机会让测试来驱动我们实现一些辅助函数,以备我们在第三部分中使用。  第三部分:JavaScript测试驱动开发实践  这一部分将完成一系列处于不同环境中的小型项目。我们将学会如何开发一套小型的通用JavaScript API,如何开发一个依赖于DOM的小工具(Widget),如何将浏览器的差异抽象化,如何实现一个服务器端的JavaScript应用程序等—统统采用测试驱动开发。这部分着重讲述测试驱动开发可以怎样有助于构建更干净的API、更模块化的代码,以及更健壮的软件。  每一个项目都通过实现一段完整的功能、但有限的代码引入了一些新的与测试相关的概念,并说明它们在实践中的运用。在该部分中,除了其他事项外,我们还将学习如何测试依赖于浏览器API、定时器、事件处理器、DOM操作和异步服务器请求(即“Ajax”)的代码。我们也将考察实践中采用的技术,如存根、重构,以及运用设计模式来优雅地解决问题。  这一部分的各章将会提供如何扩展已开发功能的思路,并赋予您实践的能力,以自己动手完成代码的改进。扩充版本的解决方案都可以从本书的网站上下载。  我在这些项目中花费了大量的心血以保证编写出可运行的代码,并完成相应的工作。这个部分的5章所得出的最终结果是一套功能齐全的即时通信客户端和服务器,未使用测试驱动开发之外的任何技术,未使用JavaScript之外的任何语言。  第四部分:测试模式  本书最后一部分以更宽泛的视角回顾了在整个第三部分所采用的一些技术。对测试替身,如模和桩,将进行更细致的考察,伴随着讲述多种形式的测试验证技术。最后,我们将回过头来重新审视一些指导原则,从而帮助您编写良好的单元测试。  本书所采用的约定  JavaScript是Brendan Eich在1995年为网景公司(Netscape)设计的语言名称。自那时以来,已经涌现出了多种替代性的实现,并且该语言已经由ECMA国际标准化为ECMA-262,又称ECMAScript。尽管这些替代性的实现也各有名字,比如微软的JScript,但它们一般都统称为“JavaScript”,而我也正是在这样的意义上使用JavaScript这个名字的。  全书范围内,我们使用等宽字体来表示对象、函数以及小型代码段。  本书读者对象  本书面向的是程序设计人员,尤其是那些编写或有兴趣编写JavaScript代码的软件开发人员。无论您是一位Ruby开发人员,主要关注Ruby on Rails;或者是一名Java或.NET开发人员,忙于构建Web应用;又或者是一名前端Web开发人员,以JavaScript、CSS和HTML为首要工具;甚至是一名后端开发人员,对JavaScript知之甚少,我都希望本书将对您有用。  本书旨在供那些需要更坚实地掌握或更精细地了解JavaScript语言的Web应用程序开发人员使用,也可供他们更好地理解如何提高他们的生产力和信心,并编写出更具可维护性的、带有更少缺陷的应用程序。  阅读本书所要求的技能  本书不要求读者以前有任何单元测试或测试驱动开发的知识。在整本书中都有自动化测试演示,通过阅读本书可以让您很好地掌握如何成功地运用它们。  同样,读者并不需要是JavaScript专家,或中等用户。我希望本书对于那些只懂JavaScript皮毛的开发者,以及JavaScript高手能够同等地有用。然而,您必须多少懂一些程序设计,这就是说,为了充分地享受本书,您应该有某种语言的程序设计经验,并且熟悉Web应用程序的开发。本书并不是讲述任何程序设计基础的入门材料,连Web应用程序相关主题的程序设计基础也没有提及。  本书的第二部分重点在JavaScript语言,但仅仅着眼于使JavaScript卓尔不群的那些特质,这些内容并不适于当做是对该语言的完整介绍。我们期望您能够通过例子中的用法,掌握这个部分中未专门讲述的语法和概念。  特别要指出的是,第二部分侧重于JavaScript函数和闭包、JavaScript对象模型,包括原型继承,以及支持代码复用的模式。此外,我们还将讨论相关的程序设计实践,比如不唐突的JavaScript,以及特性检测,这两个主题是Web开发人员都要掌握的。  关于本书的网站  本书附有一个网站,http://tddjs.com。访问这个地址,您可以找到书中所有的代码清单,既提供ZIP压缩文件下载,也提供完整的Git资源库,后者可以让您浏览代码的修订历史,以了解代码是如何演变的。Git资源库对于第三部分的样例项目尤其有用,因为那里涉及大量的重构。通过浏览Git资源库的修订历史,可以让您看到每一步的变化,甚至包括他们何时会改动现有代码。  您还可以通过http://cjohansen.no访问我的个人网站,您会在那里发现更多的讨论文章和联系信息等。如果对本书有任何意见,我十分乐意听取你们的反馈。  致谢  本书承蒙许多人的努力方得写成。我首先要感谢的是Trina MacDonald,她是我在Addison-Wesley的编辑,是使这一切成为可能的人。没有她就没有本书,我深切地感激她最初的建议,以及在我为第一本书跌跌撞撞的前行道路上不断给予我的帮助和鼓励。  我也很想将我的谢意致予和我一起打造本书的其他团队成员:Songlin Qiu保证了行文的易读性和一致性,并且让我在复审一个不断变化着的手稿时始终保持清醒的头脑。她的洞见和建议切实地使得本书变得比我一个人力所能及的程度还要更好。同样的赞誉也适用于我的技术评审同事,Andrea Giammarchi、Jacob Seidelin,以及Joshua Gross。他们对细节的关注、反馈的周到,以及对我进行鞭策的意愿都令人难忘,这些都帮助了我澄清代码、去除错误,并从总体上同时提高了示例代码及其前后说明性文字的质量,全书结构也同样地得到了改进。虽然最后才提,但也绝非不重要的是,Olivia Basego帮助我处理了与像Addison-Wesley这样的出版商合作的行政事宜,还帮我处理了一些由作者在挪威而出版商在美国的情况所带来的一些不便。  在我的所在国,我在Shortcut AS的雇主和同事们值得大书一笔。他们为我提供了工作时间上的机动,让我可以有时回家写作,并且他们对于本书发自内心的全面兴趣,正是我最终得以完成手稿的动力和钥匙。特别地,我想感谢Marius M宺nes Mathiesen和August Lilleaas,他们经常提出富有启发和远见的讨论,并对早期的草稿提过意见。  虽然放在了后面,但绝对不是最不重要的,要提到Fr痽dis和Kristin,他们既是朋友也是音乐同道,给了我空间来完成这个项目,并保持了耐心,来应对我在漫长的熬夜写作之后累到僵尸一般的状态、各种活动的缺席,以及在长达数月的时间里像被链子锁在厨房里的那种程度(没错,我是在厨房里写作本书的)—谢谢你们的支持。  最后,我想对整个开源社区表达我的谢意。没有开源社区,这本书就成了无本之木。正是开源思想最初引导我落笔写作的。它让我的博客保持活跃,它为我和我的编辑牵线搭桥,而现在它又为本书尽到了责任。贯穿全书的大部分代码,如果不是有许多人不知疲倦地推出顶尖的代码供他人细品、修改和使用的话,就根本不可能存在。  所有作为本书成稿一部分的软件,也全部是开源的。本书完全采用Emacs编写,文档准备系统则是LaTeX。一组相对次要的开源工具被用来管理工作流,其中有许多都属于我选择的操作系统—GNU Linux家族的嫡系。  本书落地上市之时,它至少会带来一个新的开源工程,并且我希望自己在今后数年里能做出更多的贡献。

内容概要

  本书是一本完整的、基于最佳实践的JavaScript测试指南,同时又有着测试驱动开发方法所带来的质量保证。本书涵盖了将最先进的自动化测试用于JavaScript开发环境的方方面面,带领读者走过整个开发的生命周期,从项目启动到应用程序部署。
  本书面向的是JavaScript开发人员。无论您是一位Ruby开发人员,主要关注Ruby on
Rails;或者是一名Java或.NET
开发人员,忙于构建Web应用;又或者是一名前端Web开发人员,以JavaScript、CSS和HTML为首要工具;甚至是一名后端开发人员,对JavaScript知之甚少,本书将对您非常有用。

作者简介

Christian Johansen居住在挪威奥斯陆,就职于当地的Shortcut
AS公司,这是一家专注于开源技术、Web应用和移动应用的软件企业。在学校里,他学习了信息学、数学和数字信息处理。Christian在职业生涯中,专门从事Web应用程序和前端技术,如JavaScript、CSS和HTML,这些技术他在HTML
4.01规格定稿的时代就充满激情地参与了。
作为一名顾问,Christian在挪威曾与许多高端的公司合作,包括金融和电信行业的领头公司,他在那里开发从小到大的Web应用程序,内容涉及从普通的CMSbacked电子商务企业网站到自助服务的应用程序。
最近几年,Christian一直是一名活跃的博客写手。出于和无偿给予了他如此巨大收获的社区相同的分享和贡献的愿望,Christian参与了相当数量的开源项目并为它们做了不少贡献。
参与了多个JavaScript代码数量少到可以忽略不计的项目之后,Christian感受到了“牛仔风格”的开发之痛。为了提高代码质量、开发者的信心,以及修改和维护代码的能力,并大大地简化这个过程,他在过去的几年中花费了大量的工作和业余时间来研究JavaScript中的单元测试和测试驱动开发。作为一个铁杆的TDD支持者,同时又使用传统的服务器端的开发语言,那么牛仔风格的JavaScript开发手段自然也就呼之欲出了。这种激情的集大成之作,就是你现在你手中的这本书。

书籍目录

译者序
前言
致谢
关于作者
第一部分 测试驱动开发
 第1章 自动化测试
 第2章 测试驱动开发的过程
 第3章 行业工具
 第4章 从测试中学习
第二部分 开发人员的javascript
 第5章 函数
 第6章 函数和闭包的应用
 第7章 对象和原型继承
 第8章 ecmascript 5
 第9章 不唐突的javascript
 第10章 特性检测
第三部分 javascript测试驱动开发实践
 第11章 观察者模式
 第12章 抽象化浏览器区别:ajax
 第13章 使用ajax和comet将数据流式化
 第14章 基于node.js的服务器端javascript
 第15章 tdd与dom操作:聊天室客户端程序
第四部分 测试模式
 第16章 模拟对象和创建桩
 第17章 编写良好的单元测试
参考文献

媒体关注与评论

  “这是一本将应用程序生命周期中最易轻视的部分深入浅出地解释到位的书。Christian Johansen采用了现实世界中的例子,由浅入深,提供了一个有用的代码库。我简直无法为本书找到更多赞美之词了。它带给我们如此之多的教益,又是那么的琅琅上口。”  ——Andrea Giammarchi,开发部主管,诺基亚 Gate 5 GmbH  “一本伟大的书,它的伟大之处在于将理论与实际例子相结合,它既适合于JavaScript/TDD新手,也适合于那些久经沙场却还想向他们的技能库中添砖加瓦的JavaScript高手。”  ——Jacob Seidelin,自由Web开发人员,Nihilogic


编辑推荐

  《测试驱动的JavaScript开发》是一本完整的、基于最佳实践的JavaScript敏捷测试指南  本书涵盖了将最先进的自动化测试用于JavaScript开发环境的方方面面  本书将带领读者走过整个应用程序开发的生命周期,从项目启动到应用程序部署

图书封面

图书标签Tags

广告

下载页面


测试驱动的JavaScript开发 PDF格式下载



第一次看到测试驱动开发方式还可以应用到javascript上


测试驱动开发,在国内很少有这样的开发公司


tdd模式开发js的唯一好书


还行吧!比较实用,帮公司买的。


当当的快递很给力,昨天很晚下的单,今天中午不到就收到了。不足的是我择的是pos机,结果快递说下午才能用,我去,有点生气。说还没读,包装很好,等拜读了之后再写心得好了


物流挺快的,书暂时没看


还没开始读,大体翻阅了一下,觉得还不错,某些章节挺实用的。


角度挺新颖.


详细的测试驱动开发模式介绍和javascript常用技术详解,还有node.js的应用


早前听说一场讲座自动化测试的。之后一直想找这方面的教程。这本测试驱动的开发正合我需求。很多方法都是我早前想不到的。对我很有启发。


阅读了电子版的后,觉得选择的书挺不错的,适合学习


还在读,感觉还不错


不是很适合初级


不错,算是好书,留着慢慢看


持续构建javascript核心功能利器


刚入门javascript读者非常有帮助


在书店精挑细选的,但现在还没来得及看


相关图书