新書推薦:
《
万千心理·我的精神分析之道:复杂的俄狄浦斯及其他议题
》
售價:NT$
475.0
《
荷马:伊利亚特(英文)-西方人文经典影印21
》
售價:NT$
490.0
《
我的心理医生是只猫
》
售價:NT$
225.0
《
股权控制战略:如何实现公司控制和有效激励(第2版)
》
售價:NT$
449.0
《
成吉思汗传:看历代帝王将相谋略 修炼安身成事之根本
》
售價:NT$
280.0
《
爱丁堡古罗马史-罗马城的起源和共和国的崛起
》
售價:NT$
349.0
《
人生解忧:佛学入门四十讲
》
售價:NT$
490.0
《
浪潮将至
》
售價:NT$
395.0
|
編輯推薦: |
使用JavaScript开发应用,测试起来并不容易?其实不然。 无论是使用Node.js、Express、MongoDB、jQuery、Angular,还是DOM和jQuery协作,都能够进行测试驱动开发。 然而,专业的程序员更关心如何写出清晰可行的自动化测试,并使风险* 小化,让开发过程安全、高效、可持续。本书介绍了编写自动化测试所需的各种技巧和工具,结合大量实例,帮助读者理解并写出清晰且高效的自动化测试,并学习如何遵循软件设计敏捷原则,实现轻量级设计,得到可维护的代码。 本书主要内容: ● 自动化验证与自动化测试对于可持续开发的必要性 ● 自动化测试基础为同步函数和异步函数编写测试 ● 为客户端和服务器端编写自动化测试,使用Node.js、Express、MongoDB、jQuery以及Angular ● 学习使用测试工具,如Chai、Istanbul、Karma、Mocha、Protractor、Sinon等 ● 集成测试和端到端测试检查覆盖率以确保各部分运转良好
|
內容簡介: |
JavaScript已经成为使用* 广泛的语言之一,它强大且高度灵活,但同时也颇具风险,所以应该用更出色的开发实践来支持。自动化测试和持续集成* 是很好的方法,可以降低JavaScript带来的风险。本书介绍JavaScript自动化测试及其相关实践,主体内容包括两部分:* 一部分涵盖自动化测试的基础,介绍如何为同步函数和异步函数编写测试,以及当代码包含复杂的依赖关系时如何实现自动化测试;* 二部分通过一个测试驱动开发的示例,让读者能够运用在* 一部分所学的内容,为客户端和服务器端编写自动化测试。本书在帮助读者学习和研究测试工具和技术的同时,还会介绍一些软件设计原则,有助于实现轻量级设计,并得到可维护的代码。
|
關於作者: |
【作者简介】 Venkat Subramaniam 博士,Agile Developer公司创始人,敏捷开发先驱,通过演讲、著书、培训等方式影响了全球数十万软件开发人员。另著有《高效程序员的45个习惯:敏捷开发修炼之道》《Scala程序设计:Java虚拟机多核编程实战》《Groovy程序设计》等书。 【译者简介】 毛姝雯 对编程有着浓烈的兴趣,iOS开发、Web前端开发、UI设计等领域都有涉足。曾任职于IBM,专注于移动端Web开发。现在已经是一个可爱宝宝的母亲。
|
目錄:
|
* 1章 自动化测试让你重获自由1
1.1 变更的挑战1
1.1.1 变更的成本1
1.1.2 变更的影响2
1.2 测试与验证2
1.3 采用自动化验证3
1.4 为什么难以验证5
1.5 如何实现自动化测试6
1.6 小结6
* 一部分 创建自动化测试
* 2章 测试驱动设计10
2.1 让我们开始吧10
2.1.1 检查npm和Node.js的安装11
2.1.2 创建示例项目11
2.1.3 创建测试套件和金丝雀测试12
2.1.4 验证函数的行为14
2.1.5 验证另一个数据16
2.2 正向测试、反向测试和异常测试18
2.3 设计服务器端代码20
2.3.1 从测试列表开始20
2.3.2 回文项目21
2.3.3 编写正向测试22
2.3.4 编写反向测试26
2.3.5 编写异常测试27
2.4 评估服务器端代码覆盖率29
2.5 为测试客户端代码做准备31
2.5.1 切换到客户端项目31
2.5.2 配置Karma33
2.5.3 从金丝雀测试开始34
2.6 设计客户端代码34
2.7 评估客户端代码覆盖率37
2.8 小结38
第3章 异步测试39
3.1 服务器端回调39
3.1.1 一次天真的尝试40
3.1.2 编写异步测试41
3.1.3 编写一个反向测试43
3.2 客户端的回调函数44
3.3 测试promise46
3.3.1 对promise的简单介绍46
3.3.2 promise异步测试的类型47
3.3.3 返回promise对象的函数48
3.3.4 使用done进行测试49
3.3.5 返回promise 的测试 .49
3.3.6 使用chai-as-promised50
3.3.7 结合eventually和done50
3.3.8 为promise编写反向测试51
3.4 小结52
第4章 巧妙处理依赖53
4.1 问题以及spike解决方案53
4.1.1 转移到spike项目53
4.1.2 从spike中获得见解54
4.2 模块化设计55
4.3 尽量分离依赖56
4.3.1 结束spike,准备自动化测试56
4.3.2 测试creatURL57
4.4 使用测试替身59
4.5 依赖注入61
4.6 交互测试62
4.7 使用Sinon清理测试代码64
4.7.1 安装Sinon65
4.7.2 初探Sinon65
4.7.3 使用Sinon的mock测试交互67
4.7.4 使用Sinon的stub测试状态68
4.7.5 使用Sinon的spy拦截调用70
4.8 回顾与继续72
4.9 小结75
* 二部分 真实的自动化测试
第5章 Node.js测试驱动开发78
5.1 从策略设计开始适度即可78
5.2 深入战略设计测试优先79
5.2.1 创建初始测试列表79
5.2.2 编写* 一个测试80
5.2.3 编写一个正向测试82
5.3 继续设计85
5.3.1 readTickersFile的反向测试85
5.3.2 设计parseTickers函数87
5.3.3 设计processTickers函数88
5.4 创建spike以获得启发89
5.4.1 为getPrice创建spike89
5.4.2 设计getPrice函数90
5.5 模块化以易于测试93
5.5.1 设计processResponse和processError函数93
5.5.2 设计processHttpError95
5.5.3 设计parsePrice和processError96
5.6 分离关注点97
5.6.1 设计printReport98
5.6.2 设计sortData98
5.7 集成和运行100
5.8 回顾代码覆盖率和设计102
5.8.1 评估代码覆盖率102
5.8.2 代码设计103
5.9 提供HTTP访问104
5.10 小结105
第6章 Express测试驱动开发106
6.1 为可测试性设计106
6.1.1 创建策略设计107
6.1.2 通过测试创建战略设计108
6.2 创建Express应用并运行金丝雀测试108
6.3 设计数据库连接109
6.4 设计模型113
6.4.1 建立数据库连接和测试固件113
6.4.2 设计all函数114
6.4.3 设计get函数115
6.4.4 设计add函数116
6.4.5 处理delete函数121
6.4.6 设计共享的校验代码123
6.5 设计路由函数126
6.5.1 重温路由127
6.5.2 从为Router创建stub开始128
6.5.3 测试路径的GET方法129
6.5.4 测试路径:id的GET方法131
6.5.5 处理路径的POST方法133
6.5.6 以路径:id的DELETE方法结束整个测试135
6.6 评估代码覆盖率136
6.7 运行应用138
6.7.1 使用Curl139
6.7.2 使用Chrome扩展程序140
6.7.3 观察响应141
6.8 小结141
第7章 与DOM和jQuery协作142
7.1 创建策略设计142
7.2 通过测试创建战略设计143
7.2.1 创建测试列表143
7.2.2 创建项目144
7.3 增量开发145
7.3.1 设计getTasks146
7.3.2 更新DOM147
7.3.3 调用服务 150
7.3.4 注册window对象的onload事件154
7.4 运行 UI155
7.5 完成设计156
7.5.1 设计addTask157
7.5.2 设计deleteTask163
7.6 使用jQuery进行测试165
7.6.1 准备工作166
7.6.2 使用jQuery选择器166
7.6.3 使用$.ajax验证调用167
7.6.4 测试document的ready函数168
7.6.5 完整的测试和使用jQuery的代码实现170
7.7 评估代码覆盖率170
7.8 小结171
第8章 使用AngularJS172
8.1 测试AngularJS的方式172
8.2 初步设计175
8.3 关注控制器176
8.3.1 准备工作空间176
8.3.2 编写* 一个测试177
8.3.3 设计控制器177
8.4 设计服务交互180
8.5 分离关注点,减少mock182
8.5.1 找到合适的地方183
8.5.2 结合经验测试和交互测试183
8.5.3 测试加载顺序186
8.6 继续设计187
8.6.1 设计addTask188
8.6.2 设计deleteTask192
8.7 设计服务194
8.7.1 设计get 函数194
8.7.2 设计add 函数197
8.7.3 设计delete 函数198
8.8 评估代码覆盖率199
8.9 运行UI200
8.10 小结201
第9章 Angular 2测试驱动开发202
9.1 通过spike学习Angular202
9.1.1 管道、服务和组件203
9.1.2 创建项目203
9.1.3 创建管道204
9.1.4 创建服务205
9.1.5 创建组件207
9.1.6 集成211
9.2 通过测试设计Angular应用213
9.2.1 创建项目214
9.2.2 创建测试列表215
9.3 测试驱动组件的设计215
9.3.1 验证是否设置组件属性215
9.3.2 初始化模型218
9.3.3 设计getTasks219
9.3.4 对任务进行排序222
9.3.5 验证依赖注入224
9.4 测试驱动服务的设计226
9.5 测试驱动管道的设计230
9.6 测试驱动启动代码234
9.7 集成236
9.8 完成设计237
9.8.1 设计任务添加功能238
9.8.2 设计任务删除功能245
9.8.3 评估代码覆盖率248
9.9 小结249
* 10章 集成测试和端到端测试250
10.1 认识Protractor250
10.1.1 使用Protractor的理由251
10.1.2 安装Protractor251
10.1.3 使用Protractor进行测试251
10.1.4 为UI层测试做准备253
10.1.5 编写* 一个测试254
10.1.6 测试数据发送255
10.2 启动服务器和配置数据库256
10.2.1 为TO-DO应用安装Protractor257
10.2.2 在设置前启动服务器257
10.2.3 为不同的环境创建数据库259
10.2.4 在beforeEach中设置数据260
10.3 测试jQuery UI261
10.3.1 设置Protractor配置文件261
10.3.2 发现必要的测试261
10.3.3 实现集成测试262
10.4 使用页面对象265
10.5 测试AngularJS的UI268
10.6 测试Angular 2的UI272
10.7 小结275
* 11章 测试驱动你自己的应用276
11.1 努力的成果276
11.2 测试的规模和层次279
11.3 测试驱动:程序员指南280
11.4 测试驱动:团队领导、架构师指南282
11.5 测试驱动:项目经理指南283
11.5.1 促进可持续的敏捷开发实践283
11.5.2 优雅地处理遗留应用283
11.5.3 结束新的遗留应用284
11.6 摇滚吧285
附录 网络资源286
参考文献288
|
|