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
《豹迹:与记忆有关》内容简介:他是国际知名的美术史家,在艺术研究领域举足轻重,同时他也是当代重要的艺术评论者,从西方艺术、
《性/别、身体与故事社会学》内容简介:本书借鉴普拉莫(Plummer)的“讲述性故事”,基于多类人群(不同年龄段的城市女性、乳腺癌
Recentyearshaveseenthedevelopmentofpowerfultoolsforverifyinghardwareandsoftwares...
《基于供应链视角的食品质量安全管控体系的研究》内容简介:本书简要介绍食品供应链研究综述、食品质量安全问题研究综述、食品质量
本书是由世界级C语言专家编写的C标准库经典著作。英文版已经重印十多次,影响了几代程序员。本书结合C标准的相关部分,精辟地讲述
Python可以这样学 本书特色 全书共分16章,对Python内部工作原理进行了一定深度的剖析,99%以上的案例代码使用Python 3.5.1实现,也适用于...
本书将用于帮助指导Javaweb开发人员的日常任务,提供典型的web相关问题的快速解决方案。本书集中介绍了如何用Java初始化某些与we
建筑结构CAD应用基础(第二版)(高等学校土木工程专业规划教材) A3604 目录 第1章 土木工程结构CAD及应用概况1.1 工程结构CAD的发展历史1.2 ...
Thisauthoritativetreatmentofthefundamentalsofmobilecommunicationsstressesthe"fun...
《万历十五年欧洲那些事儿》内容简介:读者将读到的是一个个名垂青史的鲜明人物,一个个跌宕起伏的精彩故事。公元1587年,在中国为
《开放创新和平台经济:IT及互联网产业商业模式创新之道(第2版)》内容简介:本书分为8章,其中,第1~4章主要以理论分析和研究为
远程接入网络疑难解析 本书特色 本书适用面向日常工作需要的网络管理者或者管理员、网络或咨询工程师以及远程接入咨询师。同时本书适合为希望获得CCNP和CCIE证书...
《元宇宙:数字化生存新机遇》内容简介:社会生活和经济活动将向元宇宙大迁徙。我们将生活在一个真实与虚拟共生的新世界。在这种新
《汽车材料及轻量化趋势》内容简介:作为提高汽车燃油经济性的手段之一,轻量化并不是新鲜的技术名词。从20世纪70年代以来,汽车轻
五笔打字案例教程 本书特色 《五笔打字案例教程(计算机十二五规划教材)》由钱亚文、李奇、郭燕主编,全书共分5个项目,内容涵盖键盘的基本操作方法、正确的打字姿势与...
《知堂回想录(下)》内容简介:《知堂回想录》是周作人晚年回顾自己一生重要经历,写成之内容丰富的传世巨作。最初只有“北大感旧
《SEM深度解析:搜索引擎营销及主流网站分析实战》内容简介:网络在我们的工作与生活中的地位是毋庸置疑的,我们每天都要通过搜索引
《现代通信系统》(MATLAB版)(第2版)提供了利用MATLAB在计算机上解决“现代通信系统”课程中涉及的各方面问题的分析思路、方法、M
The Adobe lllustrator CS6 WOW!Book 本书特色 多年来,Sharon Stever和她的国际化WOW!团队一直致力于在全球范围内...
《个性:极简庄子》内容简介:王蒙写给年轻人的中国智慧读本,凝聚数十年读书心得与人生经验,直达《庄子》精华内核。在本书中,王