JavaScript测试驱动开发

JavaScript测试驱动开发 pdf epub mobi txt 电子书 下载 2025

[美] 文卡特·苏布拉马尼亚姆(Venkat Subramaniam) 著,毛姝雯 译
图书标签:
  • JavaScript
  • TDD
  • 测试
  • 前端开发
  • 软件测试
  • 编程
  • 开发
  • Web开发
  • 单元测试
  • 自动化测试
想要找书就要到 图书大百科
立刻按 ctrl+D收藏本页
你会得到大惊喜!!
出版社: 人民邮电出版社
ISBN:9787115477156
版次:1
商品编码:12326929
包装:平装
丛书名: 图灵程序设计丛书
开本:16开
出版时间:2018-03-01
用纸:胶版纸
页数:288
正文语种:中文

具体描述

编辑推荐

适读人群 :有一定经验的JavaScript开发人员,尤其是对JavaScript自动化测试感兴趣的读者。
使用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 配置Karma 33
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 测试promise 46
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-promised 50
3.3.7 结合eventually和done() 50
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 测试creatURL 57
4.4 使用测试替身 59
4.5 依赖注入 61
4.6 交互测试 62
4.7 使用Sinon清理测试代码 64
4.7.1 安装Sinon 65
4.7.2 初探Sinon 65
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创建spike 89
5.4.2 设计getPrice函数 90
5.5 模块化以易于测试 93
5.5.1 设计processResponse和processError函数 93
5.5.2 设计processHttpError 95
5.5.3 设计parsePrice和processError 96
5.6 分离关注点 97
5.6.1 设计printReport 98
5.6.2 设计sortData 98
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 使用Curl 139
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 设计getTasks 146
7.3.2 更新DOM 147
7.3.3 调用服务 150
7.3.4 注册window对象的onload事件 154
7.4 运行 UI 155
7.5 完成设计 156
7.5.1 设计addTask 157
7.5.2 设计deleteTask 163
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章 使用AngularJS 172
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 分离关注点,减少mock 182
8.5.1 找到合适的地方 183
8.5.2 结合经验测试和交互测试 183
8.5.3 测试加载顺序 186
8.6 继续设计 187
8.6.1 设计addTask 188
8.6.2 设计deleteTask 192
8.7 设计服务 194
8.7.1 设计get 函数 194
8.7.2 设计add 函数 197
8.7.3 设计delete 函数 198
8.8 评估代码覆盖率 199
8.9 运行UI 200
8.10 小结 201
第9章 Angular 2测试驱动开发 202
9.1 通过spike学习Angular 202
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 设计getTasks 219
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 认识Protractor 250
10.1.1 使用Protractor的理由 251
10.1.2 安装Protractor 251
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应用安装Protractor 257
10.2.2 在设置前启动服务器 257
10.2.3 为不同的环境创建数据库 259
10.2.4 在beforeEach中设置数据 260
10.3 测试jQuery UI 261
10.3.1 设置Protractor配置文件 261
10.3.2 发现必要的测试 261
10.3.3 实现集成测试 262
10.4 使用页面对象 265
10.5 测试AngularJS的UI 268
10.6 测试Angular 2的UI 272
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
《锋芒初露:Web前端开发实战指南》 引言 在日新月异的数字浪潮中,Web前端开发正以前所未有的速度演进。从最初的静态页面到如今高度动态、交互丰富的Web应用,前端技术栈的边界不断拓展,对开发者的技艺提出了更高的要求。本书旨在为 aspiring 的前端开发者提供一套系统、实用的学习路径,帮助他们从零开始,逐步构建起扎实的前端开发基础,并掌握应对实际项目挑战的关键技能。我们将聚焦于现代Web开发的核心技术,从基础概念到高级实践,层层递进,让读者能够 confidently 地驾驭前端开发的每一个环节。 第一部分:筑牢基石——HTML、CSS与JavaScript的深度解析 第一章:Web的骨架——HTML5精通 HTML作为Web内容的结构化语言,其重要性不言而喻。本章将带领读者深入理解HTML5的语义化特性,不再仅仅停留在标签的堆砌,而是学习如何利用header, nav, main, article, section, aside, footer等语义化标签,构建清晰、易于理解且对搜索引擎友好的页面结构。我们将探讨表单元素的增强,如input types (email, url, date, number等) 和其属性 (required, placeholder, pattern),以及如何利用ARIA (Accessible Rich Internet Applications) 属性提升Web的可访问性,确保所有用户都能顺畅地访问和使用Web内容。此外,多媒体元素的集成,如`

用户评价

评分

《JavaScript 测试驱动开发》这本书,对我来说,就像是为我量身定做的一份“内功心法”。以前我写 JavaScript,更多的是一种“摸着石头过河”的状态,写完代码,感觉功能实现了就 OK 了,至于有没有 bug,或者写得是否优雅,心里总是没底。这本书彻底改变了我这种混沌的开发模式。它用一种非常系统化的方法,教会了我如何“未雨绸缪”。书中对 TDD 的核心理念——“失败是成功之母”的解读,让我明白了写一个失败的测试,然后让它成功的意义。这不仅仅是为了验证代码的功能,更是为了引导代码的设计方向。书中对不同类型的测试(单元测试、集成测试、端到端测试)的界定和实践,让我对测试的整体规划有了更清晰的认识。而且,书中还详细讲解了如何利用 TDD 来应对各种复杂的 JavaScript 场景,比如处理第三方库的集成、异步操作的测试、组件的复用等等。让我印象深刻的是,书中还专门开辟了一章来讨论如何处理遗留代码的测试,这对于许多项目来说都是一个实际的痛点。读完这本书,我感觉自己不再是被代码牵着鼻子走,而是真正地掌握了开发的主动权,我的代码质量和开发效率都得到了显著的提升。

评分

说实话,我一直觉得 TDD 听起来很美好,但实际操作起来总感觉像是在给自己增加工作量,尤其是在项目紧、任务重的时候,很容易被“先写测试”这个步骤劝退。然而,《JavaScript 测试驱动开发》这本书,用一种非常接地气的方式,彻底打消了我这种顾虑。它没有一开始就抛出那些高大上的理论,而是从最基础的“为什么要做测试”开始,然后逐步深入到“怎么做测试”。书中对各种常见的 JavaScript 场景,比如 DOM 操作、异步编程、模块化等等,都提供了非常具体的 TDD 实践案例。我印象最深刻的是书中关于如何编写“可测试代码”的部分,它教会了我如何设计函数、管理状态,以及如何解耦,从而让我的代码更容易被测试覆盖。这不仅仅是关于写测试,更是关于如何写出更好的代码。书中对 Jest 的使用讲解也相当到位,从安装配置到各种高级用法,都讲解得非常细致,让我能够很快地掌握这个强大的测试工具。而且,书中还提到了很多关于测试的“坑”,比如如何避免脆弱的测试、如何处理副作用等等,这些都是非常宝贵的实战经验。读完这本书,我感觉自己对 TDD 的理解从“听说过”变成了“能上手”,而且在实际项目中,我真的开始尝试并受益于 TDD 了,代码的质量和稳定性确实有了明显的提升,也减少了后期调试的麻烦。

评分

作为一名对代码质量有着极致追求的开发者,《JavaScript 测试驱动开发》这本书无疑是一份难得的宝藏。它不仅仅是一本关于测试的书,更是一本关于如何构建高质量、可维护、易于扩展的 JavaScript 应用的书。书中对 TDD 的阐述,已经超越了简单的“写了测试再写代码”的表层含义,而是深入到了软件设计的哲学层面。它强调的是一种“思考先行”的开发模式,通过在编写功能代码之前进行充分的测试设计,迫使我们更深入地思考需求的本质、代码的边界条件以及潜在的错误处理。书中关于“测试优先”原则的阐述,以及如何通过测试来驱动代码设计,给我带来了巨大的启发。我尤其欣赏书中对“重构”的重视,它明确指出,测试是重构的“安全网”,只有有了充分的测试覆盖,我们才能放心地对代码进行优化和改进,而不用担心引入新的 bug。书中还讨论了许多关于测试的“副作用”,比如文档的生成、代码覆盖率的度量等等,这些都让 TDD 的价值得到了更全面的体现。读完这本书,我感觉自己不再是简单地在写代码,而是在精心雕琢每一个模块,每一个函数,让它们在测试的“审视”下,变得更加坚固和可靠。

评分

拿到《JavaScript测试驱动开发》这本书,真的像是打开了一扇通往更可靠、更健壮 JavaScript 开发世界的大门。作为一名长期与 JavaScript 打交道的开发者,我一直深知测试的重要性,但总觉得在实际项目中落地 TDD(测试驱动开发)总是有些磕磕绊绊,不是精力跟不上,就是感觉流程过于繁琐,影响开发效率。这本书彻底改变了我之前的看法。它不是那种泛泛而谈的理论指导,而是非常务实地从最基础的概念讲起,用清晰易懂的语言和生动的代码示例,一步步地引导读者去理解 TDD 的核心思想:先写测试,再写代码,让代码在测试的驱动下成长。书中对测试用例的设计、断言的编写、以及如何利用各种测试框架(比如 Jest)来提高效率,都有非常详尽的讲解。我尤其欣赏书中对于“红-绿-重构”这个经典 TDD 循环的反复强调和实践,通过大量的实际代码演练,让我深刻体会到这个过程是如何帮助我们写出更简洁、更可维护的代码的。而且,书中还涉及了一些更高级的测试技巧,比如桩(stub)和模拟(mock)的应用,这对于测试那些有依赖关系的复杂模块非常有帮助。读完这本书,我感觉自己对 JavaScript 的测试理念有了质的飞跃,不再害怕写测试,反而觉得写测试成了一种享受,因为我能看到自己的代码是如何在测试的“呵护”下变得越来越完善的。

评分

这本书,绝对是我想推荐给任何想要提升 JavaScript 开发水平的同行的首选。《JavaScript 测试驱动开发》不仅仅是教你写测试,它更是一种开发哲学的启蒙。它通过反复的实践,让我深刻理解了“让代码自己说话”的意义。在阅读过程中,我最深的体会是,TDD 并不是一种额外的负担,而是一种更高效、更可靠的开发方式。书中对于“如何编写更具可读性、可维护性的测试”的指导,让我摆脱了之前写测试“写了等于白写”的困境。它强调的是测试本身的可读性,让测试用例也像代码一样,能够清晰地表达意图。书中对 Jest 等主流测试框架的讲解,非常实用,而且还涉及了一些高级技巧,比如代码覆盖率的分析、持续集成(CI)的结合等等,这些都让 TDD 的价值得到了最大化的发挥。而且,书中还非常注重对“测试驱动设计”的阐释,它教会我如何通过测试来指导代码的架构和设计,从而写出更加健壮、易于扩展的代码。读完这本书,我感觉自己对 JavaScript 的理解进入了一个新的境界,写出的代码不仅功能完备,而且更加健壮、更具弹性,能够轻松应对未来的各种变化。

相关图书

本站所有内容均为互联网搜索引擎提供的公开搜索信息,本站不存储任何数据与内容,任何内容与数据均与本站无关,如有需要请联系相关搜索引擎包括但不限于百度google,bing,sogou

© 2025 book.teaonline.club All Rights Reserved. 图书大百科 版权所有