JavaScript专业开发人员必须具备的一个技能是能够编写可测试的代码。《编写可测试的JavaScript代码》的目标是教授如何为客户端和服务器编写和维护可测试的JavaScript代码。全书共8章。首先介绍了什么是可测试的代码,然后分别从代码复杂度、架构、单元测试、代码覆盖率、集成测试、性能测试、负载测试、调试和自动化等角度详细介绍。书中丰富的示例能够帮助读者从头开始养成好的代码编写习惯,提升测试效率及代码的可维护性。
《编写可测试的JavaScript代码》的作者曾先后在YouTube、Yahoo!以及Google等公司从事前端开发及测试相关工作,具有丰富的经验。《编写可测试的JavaScript代码》主要针对那些想成为JavaScript专业开发人员的人;也适合初中级水平或者专家级别的开发人员参考阅读。
第1章 可测试的JavaScript 1
1.1 现有技术 2
1.1.1 敏捷开发 3
1.1.2 测试驱动开发 4
1.1.3 行为驱动开发 5
1.1.4 哪种方式最好? 6
1.2 代码是让人用的 7
1.2.1 为何要编写可测试的代码 7
1.2.2 什么是可测试的代码 9
1.2.3 如何编写可测试的代码 10
1.3 卓越的应用程序代码 11
1.3.1 测试 11
1.3.2 调试 12
1.4 小结 12
第2章 复杂度 13
2.1 代码大小 14
2.2 JSLint 20
2.3 圈复杂度 24
2.4 重用 28
2.5 扇出 30
2.6 扇入 40
2.7 耦合 40
2.7.1 内容耦合 41
2.7.2 公共耦合 41
2.7.3 控制耦合 41
2.7.4 印记耦合 42
2.7.5 数据耦合 42
2.7.6 无耦合 42
2.7.7 实例化 42
2.8 耦合性度量 43
2.9 现实中的耦合 43
2.9.1 测试耦合代码 46
2.10 依赖注入 47
2.11 注释 50
2.11.1 YUIDoc 50
2.11.2 JSDoc 52
2.11.3 Docco/Rocco 54
2.12 人工测试 56
2.13 小结 58
第3章 基于事件的架构 59
3.1 基于事件编程的好处 59
3.2 事件集线器 60
3.2.1 使用事件集线器 62
3.2.2 事件的响应 67
3.2.3 基于事件的架构与MVC架构 69
3.2.4 基于事件的架构与面向对象编程 69
3.2.5 基于事件的架构与软件即服务 70
3.3 Web应用程序 70
3.4 测试基于事件的架构 71
3.5 基于事件架构的说明 75
3.5.1 可伸缩性 75
3.5.2 广播 75
3.5.3 运行时检测 75
3.5.4 安全性 76
3.5.5 状态 76
3.6 更智能的集线器:事件交换机 77
3.6.1 部署 77
3.6.2 一种实现 79
3.6.3 会话 82
3.6.4 可扩展性 82
3.7 小结 83
第4章 单元测试 84
4.1 单元测试框架 84
4.2 开始编写测试 85
4.3 编写好的单元测试 87
4.3.1 隔离 88
4.3.2 范围 88
4.3.3 定义函数 89
4.3.4 正向测试 91
4.3.5 负向测试 91
4.3.6 代码覆盖率 92
4.4 真实场景测试 92
4.4.1 依赖项 92
4.4.2 异步测试 95
4.5 运行客户端JavaScript单元测试 97
4.5.1 PhantomJS 97
4.5.2 Selenium 102
4.6 运行服务端JavaScript单元测试 109
4.6.1 Jasmine 110
4.7 小结 116
第5章 代码覆盖率 117
5.1 覆盖率基础理论 117
5.2 代码覆盖率数据 120
5.3 实际例子 121
5.3.1 转换instrumented文件 121
5.3.2 Instrumented文件剖析 122
5.4 练习/部署 123
5.4.1 客户端JavaScript 123
5.4.2 服务端JavaScript 125
5.5 持久化覆盖率信息 129
5.5.1 单元测试 129
5.5.2 集成测 130
5.6 生成输出 131
5.7 聚合 132
5.8 隐藏的文件 134
5.9 覆盖率目标 137
5.10 小结 138
第6章 集成测试、性能测试、负载测试 140
6.1 集成测试 140
6.1.1 Selenium 141
6.1.2 CasperJS 147
6.2 性能测试 150
6.2.1 生成HAR文件 150
6.2.2 查看HAR文件 156
6.2.3 浏览器性能测试 158
6.3 负载测试 160
6.3.1 浏览器负载测试 161
6.4 跟踪资源利用率 165
6.4.1 客户端跟踪 167
6.4.2 服务端跟踪 173
6.5 小结 176
第7章 调试 177
7.1 浏览器内调试 177
7.1.1 Firefox 179
7.1.2 Chrome 182
7.1.3 Safari 185
7.1.4 Internet Explorer 187
7.2 Node.js调试 187
7.3 远程调试 190
7.3.1 Chrome 191
7.3.2 PhantomJS 196
7.3.3 Firefox 197
7.4 移动调试 198
7.4.1 Android 4 198
7.4.2 iOS 6 200
7.4.3 Adobe Edge Inspect 202
7.4.4 其他方面的移动调试选择 205
7.5 生产环境调试 206
7.5.1 最小化代码 206
7.5.2 Source Map 207
7.6 小结 212
第8章 自动化 213
8.1 自动化什么内容 213
8.2 何时进行自动化 213
8.3 如何进行自动化 214
8.3.1 含有持续集成的自动化 214
8.3.2 开发环境自动化 215
8.3.3 构建环境自动化 225
8.3.4 部署 245
8.4 小结 246
《软件开发的201个原则》内容简介:本书汇总了软件工程原则。这些原则是关于软件工程的基本原理、规则或假设,不管所选的技术、工具
《破解牛股密码(第2版)》内容简介:本书通过对市场中个股的描述,总结出牛股上涨的内在因素和外在图形特征,通过对牛股内外在特征
本书以每十年为一单位,对20世纪字体的设计历史以及平面设计中的种种问题进行了分析。本书讲述了当今字体设计的各种趋势,这些趋
《汉英科技辞典(精装)》是一部综合性工业技术词典,共收入词汇约20万条。《汉英科技辞典(精装)》以通用技术词汇、机械、冶金、电
《终身写作》内容简介:本书系统阐述了有关写作的理念、思维和方法论,内容包括写作认知、观点打磨、框架思维、内容填充、故事能力
成功产品的背后有什么秘密?为什么与雪佛兰汽车相比,人们愿意为宝马汽车付出更高的价钱?为什么苹果公司的iPhone在2010年世界手
UMTS(通用移动通信系统)是ITU的IMT-2000第三代移动通信系统(3G)的重要组成部分,它能为用户带来高达2Mb/s(理论值)的数据传输速率
Websitedesignanddevelopmentcontinuestobecomemoresophisticated.Animportantpartoft...
《图解室内设计分析》:建筑师和室内设计师在今天这个读图时代,每天与大量的视觉信息打交道,图像的瞬时显示成了设计师看图的主
“观念”是一切行动的开始,《100个改变平面设计的伟大观念》是由当今最顶尖的艺术指导之一、平面设计畅销书作家撰写,让我们轻松
《JavaScript入门经典(第4版)》对上一版本做了。全面更新,使JavaScript代码适用于最新版本的IE、Firefox和Safari浏览器。Java...
《唐诗三百首》内容简介:唐代是我国古代文学发展的重要阶段,尤其是古代诗歌发展的全盛时期,同时也是一个诗人辈出的时代,因此后
《数字图像处理》主要介绍了数字图像处理的基本概念、常用方法、实用技术和典型应用。全书分三大部分共9章,第一部分是数字图像处
Creo2.0产品设计实用教程 内容简介 全书共分十一章, 主要内容包括: 比较系统地介绍了Pro—E的工作界面、文件的操作以及鼠标的使用 ; 草绘 ; 拉伸、...
AutoCAD2009中文版高级简明教程 内容简介 《Auto CAD 高级简明教程(2009中文版)》共分为7章,主要阐述AutoCAD的界面、绘图环境的设置...
MATLAB R2016a神经网络设计与应用28个案例分析 本书特色 本书以MATLAB R2016a为平台编写。全书共分28个案例,主要介绍神经网络工具箱函数...
《文学概论》内容简介:本书是老舍先生罕见的文学理论著作,既是他创作实践的感悟,也是他学习的总结。在书中,老舍先生纵论中国历
《Unity虚拟现实开发实战(原书第2版)》内容简介:本书通过基于项目的实践方式,详细讲解如何使用Unity 3D游戏引擎进行虚拟现实开
Chapter1.IntroductionSection1.1.TheHighPerformanceBuzz-wordChapter2.TheTheoryofC...
《10W+新媒体文案炼成记》内容简介:本书是一本新媒体文案专题训练实战手册,在微信、微商、电商、APP、头条号这5大文案写作最为火