目 录
第 1 章 软件测试概述 1
1.1 软件测试的重要性 1
1.1.1 软件缺陷的代价 2
1.1.2 测试在软件开发周期中的角色 3
1.2 软件测试的基本概念 4
1.2.1 软件缺陷的代价 4
1.2.2 软件测试与调试的区别 5
1.2.3 测试的目的与原则 6
1.3 软件测试的分类与流程 8
1.3.1 软件测试的分类体系 8
1.3.2 软件测试的标准流程 12
1.4 本章小结 17
1.5 习题 17
第 2 章 软件测试基础 19
2.1 静态测试与动态测试 19
2.1.1 静态测试技术体系 19
2.1.2 动态测试技术体系 20
2.1.3 静态测试与动态测试的比较 21
2.1.4 教学案例 21
2.2 经典软件测试模型 23
2.2.1 瀑布模型及其测试方法 23
2.2.2 V模型及其测试方法 25
2.2.3 W模型及其测试方法 26
2.2.4 H模型及其测试方法 28
2.2.5 X模型及其测试方法 29
2.2.6 模型比较与应用选择 32
2.3 软件能力成熟度模型 34
2.3.1 CMMI能力成熟度模型集成 34
2.3.2 TMMI测试成熟度模型集成 37
2.3.3 其他相关模型 41
2.3.4 教学案例 44
2.4 黑盒测试、白盒测试与灰盒测试的比较 44
2.4.1 方法概述 44
2.4.2 技术特点对比 46
2.4.3 适用场景分析 47
2.4.4 实践应用建议 49
2.5 本章小结 51
2.6 习题 51
第 3 章 黑盒测试 53
3.1 概述 53
3.2 等价类划分法 55
3.2.1 确定等价类的原则 55
3.2.2 测试用例的确定流程 56
3.2.3 等价类划分法的应用示例 56
3.3 边界值分析法 58
3.3.1 边界值分析的基本原则 58
3.3.2 边界值分析的步骤 59
3.3.3 边界值分析的示例 59
3.3.4 特殊数据的边界值 60
3.3.5 边界值分析的优势和局限性 62
3.4 因果图法 62
3.4.1 因果图的基本符号 62
3.4.2 设计测试用例的步骤 64
3.5 决策表法 66
3.6 场景法 69
3.7 错误推测法 71
3.8 随机测试 72
3.9 测试方法的选择 73
3.10 本章小结 73
3.11 习题 74
第 4 章 白盒测试 75
4.1 概述 75
4.2 逻辑覆盖 77
4.2.1 语句覆盖 79
4.2.2 判定覆盖 79
4.2.3 条件覆盖 79
4.2.4 判定/条件覆盖 81
4.2.5 条件组合覆盖 81
4.2.6 路径覆盖 82
4.3 基本路径法 82
4.4 本章小结 84
4.5 习题 85
第 5 章 敏捷测试 87
5.1 概述 87
5.2 敏捷项目简介 88
5.2.1 敏捷开发的特点 88
5.2.2 敏捷开发的优势 88
5.2.3 敏捷团队角色 88
5.3 敏捷项目管理 89
5.3.1 敏捷项目的需求管理 89
5.3.2 敏捷项目的时间管理 90
5.3.3 敏捷项目的质量管理 91
5.4 敏捷测试 92
5.4.1 探索式测试 94
5.4.2 基于Scrum的敏捷测试流程 95
5.5 本章小结 99
5.6 习题 100
第 6 章 面向对象测试 101
6.1 概述 101
6.2 面向对象技术概述 102
6.2.1 面向对象的基本概念 102
6.2.2 面向对象的开发方法 104
6.3 面向对象的软件测试 106
6.3.1 面向对象单元测试的两种策略分析 106
6.3.2 面向对象的集成测试 108
6.3.3 面向对象的系统测试 109
6.3.4 面向对象的回归测试 110
6.4 面向对象软件的测试用例设计 110
6.4.1 面向对象测试用例设计的基本概念 111
6.4.2 面向对象编程对测试的影响 112
6.4.3 基于故障的测试 113
6.4.4 基于场景的测试 113
6.4.5 表层结构和深层结构的测试 113
6.5 面向对象的软件测试案例 114
6.5.1 Demo类的测试 114
6.5.2 电商购物车系统的面向对象测试 115
6.6 本章小结 120
6.7 习题 120
第 7 章 自动化测试方法及实践 121
7.1 自动化测试概述 121
7.1.1 自动化测试概念 121
7.1.2 自动化测试的特点 122
7.1.3 适合进行自动化测试的项目 125
7.1.4 自动化测试流程 125
7.1.5 自动化测试的原理与常用技术 127
7.1.6 自动化测试常用工具 129
7.2 Web自动化测试 131
7.2.1 Selenium的特性和工作原理 131
7.2.2 Selenium的核心组件 133
7.2.3 Selenium的安装及配置 134
7.2.4 识别和定位页面元素 136
7.2.5 获取元素常用信息 142
7.2.6 页面交互 145
7.2.7 浏览器常用操作 147
7.2.8 多窗口、多框架切换 148
7.2.9 等待机制 149
7.3 App自动化测试 151
7.3.1 Appium的框架组成和工作原理 151
7.3.2 Appium的安装与环境配置 153
7.3.3 Appium Inspector 156
7.3.4 Appium定位方式 159
7.3.5 移动App自动化测试实例 160
7.4 本章小结 162
7.5 习题 163
第 8 章 嵌入式测试的理论与方法 165
8.1 嵌入式测试概述 165
8.1.1 嵌入式软件测试 165
8.1.2 嵌入式测试的特点 167
8.2 嵌入式测试中的基本概念 169
8.2.1 微控制器及程序 169
8.2.2 嵌入式设备的接口 171
8.2.3 常用的接口类型 171
8.2.4 通信协议 175
8.3 嵌入式测试的基本方法 176
8.3.1 实际实物场景测试 176
8.3.2 半实物测试 176
8.3.3 纯软件仿真的方法 177
8.4 嵌入式测试的需求分析 178
8.4.1 嵌入式测试的需求文档 178
8.4.2 嵌入式测试的需求类型 182
8.5 设计测试用例的流程 184
8.6 嵌入式测试的用例设计 184
8.6.1 设计测试用例的过程 185
8.6.2 测试用例表格 186
8.7 嵌入式测试的自动化工具 187
8.7.1 ETestStudio基本简介 187
8.7.2 搭建测试环境 189
8.7.3 定义通道协议 195
8.7.4 编写测试脚本 196
8.7.5 创建执行配置 197
8.7.6 撰写测试报告 198
8.8 本章小结 199
8.9 习题 199
第 9 章 软件测试管理及实践 200
9.1 测试计划与测试风险 200
9.1.1 测试计划的编制 200
9.1.2 测试执行与风险管理 203
9.2 软件缺陷管理 205
9.2.1 软件缺陷的基本概念与分类 205
9.2.2 软件缺陷的生命周期 206
9.2.3 软件缺陷报告及缺陷管理工具 208
9.3 测试评估与总结 210
9.3.1 测试覆盖率与评估指标 210
9.3.2 测试总结与改进建议 213
9.4 测试管理工具实践 215
9.4.1 安装与配置 216
9.4.2 用户界面及测试流程 217
9.4.3 测试需求管理 218
9.4.4 测试计划 221
9.4.5 测试用例设计 221
9.4.6 测试执行 224
9.4.7 缺陷管理 224
9.4.8 测试报告 226
9.5 本章小结 226
9.6 习题 227
第 10 章 新技术展望 229
10.1 人工智能在软件测试中的应用 229
10.1.1 智能测试用例生成 230
10.1.2 自动化测试的智能优化 233
10.2 云测试与DevOps 235
10.2.1 云测试 236
10.2.2 DevOps理念下的软件测试 238
10.3 未来趋势预测 241
10.3.1 软件测试技术的新发展 241
10.3.2 测试人员的能力提升 243
10.4 本章小结 245
参考文献 246
