線上閱讀
本書提供兩種檔案格式,請選擇開啟:
EPUB彈性排版,可依載具大小自動斷行或換頁,較適合小螢幕閱讀。
書籍內容
TOP
全書共分為四部分。第一部分為基礎篇,總覽了前端開發測試中的挑戰與測試轉型,介紹了測試基礎環境的搭建;第二部分為單元測試篇,深入介紹了如何基於Jasmine單元測試框架和gulp、Karma等構建、執行工具對前端JavaScript代碼進行單元測試,以及AngularJS單元測試的最佳實踐和代碼覆蓋率等;第三部分為自動化測試篇,基於Protractor介紹了在Node.js環境下通過Selenium WebDriver全面覆蓋各個主流流覽器,進行自動化測試的最佳實踐,包括頁面物件模型、性能測試和分散式測試等
- 目錄
-
封面页
-
书名页
-
版权页
-
作者简介
-
内容简介
-
前言
-
本书内容
-
本书适合对象
-
致谢
-
目录
-
基础篇
-
第1章 前端开发测试总览
-
1.1 Web技术的发展和挑战
-
1.2 传统开发流程的局限性
-
1.3 传统手工测试的局限性
-
1.4 开发模式的转型
-
1.4.1 敏捷软件开发
-
1.4.2 全流程测试
-
1.4.3 让测试自动化
-
1.4.4 持续集成
-
1.4.5 DevOps
-
1.5 本书目标
-
第2章 搭建测试基础环境
-
2.1 JavaScript的运行环境Node.js
-
2.1.1 什么是Node.js
-
2.1.2 Node.js的版本发展
-
2.1.3 安装Node.js
-
2.2 软件包管理系统Node Package Manager(npm)
-
2.2.1 安装和更新npm
-
2.2.2 package.json
-
2.2.3 安装软件包
-
2.2.4 列出已安装的软件包
-
2.3 代码编辑器(Visual Studio Code)
-
2.3.1 安装Visual Studio Code
-
2.3.2 初识Visual Studio Code
-
单元测试篇
-
第3章 单元测试概论
-
3.1 单元测试的特性
-
3.2 单元测试的重要性
-
3.3 测试金字塔
-
3.4 测试先行(Test-First)
-
3.4.1 测试驱动开发(Test-Driven Development)
-
3.4.2 行为驱动开发(Behavior-Driven Development)
-
3.5 Web前端测试框架
-
第4章 深入Jasmine单元测试
-
4.1 初识Jasmine
-
4.1.1 获取Jasmine
-
4.1.2 前端单元测试架构
-
4.1.3 Jasmine测试框架类库
-
4.2 组织测试用例
-
4.2.1 describe
-
4.2.2 it
-
4.2.3 安装和拆卸
-
4.2.4 禁用测试套件和挂起测试用例
-
4.3 创建单元测试
-
4.3.1 准备测试场景
-
4.3.2 编写测试用例
-
4.3.3 执行测试
-
4.4 Jasmine的断言
-
4.4.1 内置匹配器
-
4.4.2 自定义匹配器(Custom Matcher)
-
4.4.3 自定义相等检验器(Custom Equality Tester)
-
4.4.4 非对称相等检验器(Asymmetric Equality Tester)
-
4.4.5 辅助匹配函数
-
4.5 测试替身(Test Double)
-
4.5.1 测试替身的类型
-
4.5.2 使用Jasmine Spies
-
4.6 测试异步代码
-
4.6.1 Jasmine的异步支持
-
4.6.2 模拟JavaScript Timeout相关函数
-
4.7 Jasmine插件
-
4.7.1 jasmine-ajax
-
4.7.2 jasmine-jquery
-
4.8 基于浏览器调试
-
第5章 单元测试执行工具Karma
-
5.1 初识Karma
-
5.2 安装Karma和相关插件
-
5.2.1 安装Karma
-
5.2.2 安装插件
-
5.3 Karma的配置
-
5.3.1 生成配置文件
-
5.3.2 配置文件的说明
-
5.4 基于Karma的调试
-
5.5 前端自动化任务构建工具
-
5.5.1 gulp和Grunt
-
5.5.2 gulp的API
-
5.5.3 运行gulp任务
-
5.6 Karma和gulp集成
-
第6章 AngularJS应用的单元测试
-
6.1 测试AngularJS应用的挑战
-
6.2 初识ngMock
-
6.2.1 准备测试环境
-
6.2.2 理解模块(Module)
-
6.2.3 理解注入机制(Inject)
-
6.3 AngularJS单元测试最佳实践
-
6.3.1 测试Controller
-
6.3.2 单元测试中的Scope
-
6.3.3 测试HTTP交互
-
6.3.4 测试Directive
-
6.3.5 测试$timeout和$interval
-
6.3.6 测试Promise
-
6.3.7 测试$log
-
6.3.8 测试$exceptionHandler
-
第7章 代码覆盖率
-
7.1 代码覆盖率的衡量标准
-
7.1.1 函数覆盖率(Function Coverage)
-
7.1.2 语句覆盖率(Statement Coverage)
-
7.1.3 分支覆盖率(Branch Coverage)
-
7.1.4 条件覆盖率(Condition Coverage)
-
7.2 代码覆盖率的意义
-
7.3 JavaScript代码覆盖率工具Istanbul
-
7.3.1 安装Istanbul
-
7.3.2 覆盖率测试
-
7.3.3 覆盖率阈值
-
7.3.4 忽略代码
-
7.3.5 Istanbul工作原理
-
7.4 使用Karma生成覆盖率报告
-
自动化测试篇
-
第8章 走进自动化测试
-
8.1 自动化测试的优势
-
8.2 自动化测试实施流程
-
8.3 自动化测试转型的适应性
-
8.4 测试工具的选择
-
第9章 初识Selenium
-
9.1 Selenium发展历史
-
9.2 Selenium工具套装
-
9.2.1 Selenium RC
-
9.2.2 Selenium WebDriver
-
9.2.3 Selenium Grid
-
9.2.4 Selenium IDE
-
第10章 Selenium WebDriver与元素定位
-
10.1 搭建集成开发环境
-
10.2 NUnit测试框架
-
10.3 编写测试用例
-
10.4 使用工厂模式创建驱动对象
-
10.5 定位页面元素
-
10.5.1 基于id定位
-
10.5.2 基于Name定位
-
10.5.3 基于ClassName定位
-
10.5.4 基于TagName定位
-
10.5.5 基于LinkText定位
-
10.5.6 基于PartialLinkText定位
-
10.5.7 基于CssSelector定位
-
10.5.8 基于XPath定位
-
第11章 基于WebDriver的Protractor测试框架
-
11.1 WebDriver的JavaScript绑定
-
11.1.1 WebDriverJs与Protractor
-
11.1.2 Protractor特点概述
-
11.1.3 Protractor的兼容性
-
11.2 搭建Protractor测试环境
-
11.2.1 安装Protractor编辑器扩展
-
11.2.2 准备AngularJS被测网站
-
11.2.3 全局安装Protractor与浏览器驱动
-
11.2.4 本地安装Protractor与浏览器驱动
-
11.2.5 编写测试代码
-
11.2.6 编写配置文件
-
11.2.7 运行测试用例
-
11.2.8 调试
-
11.3 选择JavaScript测试框架
-
11.3.1 配置JavaScript测试框架
-
11.3.2 JavaScript测试框架的适配器
-
11.4 定位页面元素
-
11.4.1 基于binding定位
-
11.4.2 基于model定位
-
11.4.3 基于options定位
-
11.4.4 基于buttonText定位
-
11.4.5 基于repeater定位
-
11.4.6 基于js定位
-
11.4.7 链式调用定位操作
-
11.4.8 使用$和$$
-
11.4.9 自定义定位策略
-
11.5 异步流程控制
-
11.5.1 使用Promise
-
11.5.2 定制的ControlFlow
-
11.5.3 JavaScript测试框架的异步适配器
-
11.6 页面交互
-
11.6.1 操作浏览器
-
11.6.2 操作元素
-
11.7 Protractor的等待机制
-
11.7.1 waitForAngular
-
11.7.2 使用sleep
-
11.7.3 隐式等待
-
11.7.4 显式等待
-
11.8 测试非AngularJS程序
-
第12章 使用Selenium Server
-
12.1 Selenium Server环境配置
-
12.1.1 安装Java JDK
-
12.1.2 下载Selenium Server Standalone
-
12.1.3 下载浏览器驱动
-
12.1.4 配置Protractor
-
12.1.5 启动Selenium Server
-
12.2 JSON Wire Protocol与W3C WebDriver标准
-
12.3 Selenium 3.0
-
12.4 配置浏览器
-
12.4.1 Chrome
-
12.4.2 Firefox
-
12.4.3 Edge
-
12.4.4 IE
-
12.4.5 多浏览器测试
-
第13章 自动化测试最佳实践
-
13.1 页面对象模型
-
13.1.1 关注点分离
-
13.1.2 实现Protractor页面对象
-
13.1.3 页面对象最佳实践
-
13.2 数据驱动测试
-
13.3 测试报告
-
13.3.1 控制台报告
-
13.3.2 JUnit报告
-
13.3.3 HTML报告
-
13.4 性能测试
-
13.5 图像匹配
-
13.6 任务自动化
-
13.6.1 与gulp集成
-
13.6.2 npm脚本
-
第14章 分布式自动化测试
-
14.1 分布式测试概述
-
14.2 基于Selenium Grid的分布式测试
-
14.2.1 启动中央节点
-
14.2.2 注册工作节点
-
14.2.3 执行测试
-
14.3 基于云计算的分布式测试
-
14.4 配置共享
-
集成篇
-
第15章 持续集成概论
-
15.1 开发流程自动化
-
15.1.1 什么是持续集成
-
15.1.2 持续集成的价值
-
15.2 持续集成的功能特征
-
15.2.1 编译
-
15.2.2 测试
-
15.2.3 审计
-
15.2.4 部署
-
15.2.5 反馈
-
15.3 如何实施持续集成
-
15.3.1 消除误解
-
15.3.2 前提条件
-
15.3.3 CI工具
-
15.3.4 实践准则
-
15.4 选择持续集成工具
-
第16章 持续测试
-
16.1 测试策略
-
16.2 基于Jenkins的持续集成
-
16.3 集成Team Foundation Server
-
16.3.1 创建项目
-
16.3.2 从Visual Studio Code提交变更
-
16.3.3 配置TFS插件
-
16.3.4 创建并配置Jenkins构建项
-
16.3.5 集成单元测试
-
16.3.6 集成自动化测试
-
16.3.7 邮件反馈
-
16.4 集成Visual Studio Team Services
-
16.5 集成GitHub
-
16.5.1 配置GitHub
-
16.5.2 配置Jenkins
-
16.5.3 配置构建任务