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
《经济转型背景下的财富管理与资产配置》内容简介:当前,国际国内经济金融形势复杂多变,投资单一市场、单一资产的不确定性不断加
《坚持社会主义办学方向》内容简介:坚持社会主义办学方向是对马克思主义教育本质思想的继承和发展,反映了以习近平同志为核心的党
DEPHI6培训教程 内容简介 本书属于《开发专家之Delphi》系列。本书从对象PASCAL语言的语法开始,逐步讲述Windows编程的基本知识,并详细介绍了...
《网店运营与管理实务》内容简介:本书以就业为导向,以能力为本位,采用项目任务驱动的体例,每个项目以具体任务为主线展开,每个
巴黎创意人的家是什么样的呢?来,一起到他们家里去看一下吧!他们钟爱手工原创,珍惜旧物,喜欢到跳蚤市场和古董市场寻找自己喜
《VC++.NET入门》提供了学习VisualC++工具的循序渐进的指导和创建应用程序的向导。你将学习设计应用程序窗口、使用控件、显示图形
Thegapbetweenwhodesignersanddevelopersimaginetheirusersare,andwhothoseusersreall...
《小顾聊绘画(壹)》内容简介:梵高、莫奈等9位艺术大家的人生长廊,高清原彩画作,妙趣横生的艺术解读! 艺术没有那么高不可攀!
本书全面介绍了如何使用Java2平台进行并发编程,较上一版新增和扩展的内容包括:·存储模型·取消·可移植的并行编程·实现并发控
MaggieMacnab,世界著名设计师、教育家和作家,1981年创立了MacnabDesign公司,开始从事平面设计相关的工作,1983年因为Logo设计
《秦腔与丝路文化》内容简介:秦腔流传西北大地,展现西部风情,其传播区域叠加于古老的丝绸之路之上,融汇东西文化充分交融的因子
《大视野》内容简介:这是一个“小确幸”和“大变局”不断深刻发生的时代。新冠疫情、全球经济低迷,失业潮、倒闭潮、债务潮,“去
Readytoexploretheglamourousworldofwirelesssensornetworking?Createdistributedsens...
《版本源流與正史校勘》内容简介:本书汇集的研究主要是依托中华书局“点校本《二十四史》及《清史稿》修订工程”而展开的。这些文
C.NET程序设计 本书特色 《C#.NET程序设计》:教材特色这是一本为高职高专学生量身定做的计算机类专业的项目课程教材。 任务引领本教材以任务为载体,将知识...
《新零售进化论》内容简介:本书主要介绍了新零售的进化现象和规律,提出了新零售的第一性原理是物理数据二重性,即在新零售时代,
本书由资深Python专家亲自执笔,Python语言的核心开发人员作序推荐,权威性毋庸置疑。对于程序员而言,标准库与语言本身同样重要
《经典诵读》内容简介:本书是基于高职学生学情,编撰的适用于晨读或课外阅读的文学读本。目的在于引导学生通过阅读传统经典,初步
网页设计越做越难,有时会距离自己想要的结果越来越远,越来越焦急。其实,最重要的是信心,无论经历多少失败也能站起来的勇气,
《你是这样的人》内容简介:本书从中国共产党成立至今的时间轴上,选择中国共产党人精神谱系中具有代表性的14个精神坐标,梳理每一