第一篇 基础理论篇
第 1 章 软件测试概述 2
1.1 软件测试的背景 2
1.2 软件错误相关的典型案例 4
1.3 国内外发展现状及趋势 7
第 2 章 软件测试基础 12
2.1 软件测试的基本概念 12
2.1.1 什么是软件测试 12
2.1.2 验证与确认 13
2.1.3 软件缺陷 14
2.1.4 测试与质量保证 17
2.1.5 测试用例 18
2.1.6 测试策略 19
2.2 软件测试的原则 20
2.3 软件测试模型 22
2.3.1 V 模型 22
2.3.2 W 模型 22
2.3.3 H 模型 23
2.3.4 敏捷测试模型 24
2.4 软件测试分类 24
2.4.1 按工程阶段划分的测试 25
2.4.2 按是否执行代码划分的测试 26
2.4.3 按测试实施主体划分的测试 27
2.4.4 按是否关联代码划分的测试 27
2.4.5 按软件质量特性划分的测试 29
2.4.6 按符合性评价要求划分的测试 30
2.4.7 回归测试 31
第 3 章 软件测评相关标准 33
3.1 标准化概述 33
3.1.1 标准化的意义 33
3.1.2 标准的分类 34
3.2 软件质量模型与评价标准 35
3.2.1 软件质量标准的发展 35
3.2.2 软件质量模型和测量 38
3.2.3 软件质量评价 43
3.2.4 就绪可用产品(RUSP)的质量要求和评价细则 44
3.3 软件测试标准 45
3.3.1 测试过程标准 46
3.3.2 测试文档标准 46
3.3.3 测试技术标准 49
3.4 软件测试工作量及成本估算相关标准 50
第 4 章 软件测试过程和管理 56
4.1 测试过程模型 56
4.2 组织级测试过程 57
4.2.1 目的 58
4.2.2 输入 59
4.2.3 活动和任务 59
4.2.4 结果 60
4.2.5 信息项 60
4.3 测试管理过程 60
4.3.1 测试策划过程 61
4.3.2 测试设计和实现过程 66
4.3.3 测试环境构建和维护过程 69
4.3.4 测试执行过程 71
4.3.5 测试事件报告过程 73
4.3.6 测试监测和控制过程 75
4.3.7 测试完成过程 78
4.4 静态测试过程 80
4.4.1 目的 80
4.4.2 输入 80
4.4.3 活动和任务 80
4.4.4 结果 81
4.4.5 信息项 81
第二篇 测试技术篇
第 5 章 基于规格说明的测试技术 83
5.1 测试用例设计方法 83
5.1.1 等价类划分法 84
5.1.2 分类树法 86
5.1.3 边界值法 88
5.1.4 语法测试 91
5.1.5 组合测试 92
5.1.6 判定表测试 97
5.1.7 因果图法 99
5.1.8 状态转移测试 102
5.1.9 场景测试 105
5.1.10 随机测试 107
5.2 测试设计方法选择策略 109
5.3 测试用例的编写 109
5.3.1 测试设计规格说明 110
5.3.2 测试用例规格说明 111
5.3.3 测试规程规格说明 112
5.3.4 测试用例编写的细节 113
第 6 章 基于结构的测试技术 115
6.1 静态测试技术 115
6.1.1 代码检查 115
6.1.2 编码规则检查 116
6.1.3 静态分析 117
6.2 动态测试技术 120
6.2.1 基于控制流设计用例 120
6.2.2 基于数据流设计用例 129
6.3 基于结构的测试辅助技术 136
6.3.1 词法和语法分析 136
6.3.2 程序插桩和驱动技术 137
6.4 基于结构测试的综合策略 138
6.4.1 测试覆盖准则 139
6.4.2 小测试用例数计算 140
第 7 章 自动化测试技术 144
7.1 自动化测试技术概述 144
7.1.1 自动化测试技术的发展和演进 144
7.1.2 自动化测试的概念 145
7.1.3 自动化测试的分类 146
7.1.4 自动化测试的优缺点和局限 147
7.1.5 自动化测试系统的通用架构 149
7.2 自动化测试的实践策略 151
7.3 测试设计的自动化技术 153
7.3.1 基于模型的测试技术 153
7.3.2 基于搜索的测试技术 157
7.4 测试执行的自动化技术 158
7.4.1 测试工具的选择 158
7.4.2 自动化测试语言的选择 159
7.4.3 测试输入的设计与实现 159
7.4.4 测试输出结果的收集和分析 164
第 8 章 基于经验的测试技术 166
8.1 错误猜测法 166
8.1.1 基本概念 166
8.1.2 软件错误类型 166
8.1.3 估算错误数量的方法 167
8.2 探索性测试 168
8.2.1 基本概念 168
8.2.2 探索性测试风格 169
8.2.3 探索性测试的相关方法 170
8.2.4 探索性测试的优势与局限 170
8.3 基于检查表的测试 171
8.3.1 基本概念 171
8.3.2 基于代码检查表的测试 171
8.3.3 基于文档检查表的测试 172
第 9 章 基于质量特性的测试与评价 174
9.1 功能性测试 174
9.1.1 完备性 174
9.1.2 正确性 175
9.1.3 适合性 175
9.1.4 功能性测试案例 176
9.2 性能效率测试 183
9.2.1 时间特性 183
9.2.2 资源利用性 183
9.2.3 容量 184
9.2.4 性能效率测试类型 185
9.2.5 性能效率测试案例 186
9.3 易用性测试 188
9.3.1 可辨识性 188
9.3.2 易学性 189
9.3.3 易操作性 190
9.3.4 用户差错防御性 191
9.3.5 用户界面舒适性 192
9.3.6 易访问性 193
9.4 可靠性测试 194
9.4.1 成熟性 194
9.4.2 可用性 195
9.4.3 容错性 195
9.4.4 易恢复性 196
9.5 信息安全性测试 197
9.5.1 保密性 197
9.5.2 完整性 198
9.5.3 抗抵赖性 198
9.5.4 可核查性 198
9.5.5 真实性 199
9.6 维护性测试 199
9.6.1 模块化 199
9.6.2 可重用性 200
9.6.3 易分析性 200
9.6.4 易修改性 201
9.6.5 易测试性 202
9.7 兼容性测试 202
9.7.1 共存性 203
9.7.2 互操作性 203
9.8 可移植性测试 204
9.8.1 适应性 204
9.8.2 易安装性 206
9.8.3 易替换性 207
9.9 依从性测试 207
9.10 符合性测试 208
9.10.1 先决条件 208
9.10.2 评价活动内容 209
9.10.3 评价过程 209
9.10.4 评价报告 209
9.10.5 后续的符合性评价 210
第三篇 测试技术应用篇
第 10 章 基于风险的测试 212
10.1 基于风险的测试概述 212
10.1.1 为何要基于风险 212
10.1.2 测试计划内容 216
10.1.3 测试计划制订的步骤 217
10.1.4 基于风险的测试的应用领域 218
10.2 风险分析和缓解措施设计 218
10.2.1 风险识别 218
10.2.2 风险的影响和发生概率评估 221
10.2.3 风险的优先级 224
10.2.4 风险与缓解措施 226
10.2.5 一般性的缓解措施指南 227
10.3 测试级别与测试实施 232
10.3.1 测试设计和实施的一般性指南 232
10.3.2 单元测试设计与实施 234
10.3.3 集成测试设计与实施 235
10.3.4 系统测试设计与实施 237
10.3.5 验收测试设计与实施 237
10.4 测试估算与平衡决策 238
10.4.1 测试估算的方法指南 238
10.4.2 测试策略的综合和平衡 240
第 11 章 分层架构软件测试 241
11.1 分层架构介绍 241
11.1.1 分层架构概述 241
11.1.2 表示层介绍 242
11.1.3 服务层介绍 243
11.1.4 业务逻辑层介绍 243
11.1.5 数据层介绍 244
11.2 质量特性 244
11.2.1 表示层质量特性 244
11.2.2 服务层质量特性 248
11.2.3 业务逻辑层质量特性 249
11.2.4 数据层质量特性 251
11.3 测试策略 252
11.3.1 表示层测试策略 252
11.3.2 服务层测试策略 253
11.3.3 业务逻辑层测试策略 254
11.3.4 数据层测试策略 256
11.4 测试案例 259
11.4.1 案例概述 259
11.4.2 案例测试内容 260
11.4.3 表示层测试 261
11.4.4 服务层测试 264
11.4.5 业务逻辑层测试 285
11.4.6 数据层 TPC-C 基准测试 289
11.4.7 数据层 TPC-DS 基准测试 293
第 12 章 事件驱动架构软件测试 301
12.1 架构概述 301
12.1.1 基本概念 301
12.1.2 应用实例 304
12.2 质量特性 306
12.2.1 功能性 309
12.2.2 可靠性 309
12.2.3 性能效率 311
12.2.4 易用性 313
12.2.5 信息安全性 314
12.2.6 兼容性 315
12.2.7 维护性 315
12.2.8 可移植性 316
12.3 测试策略 316
12.4 测试案例 318
12.4.1 案例介绍——安卓广播接收器 318
12.4.2 测试策略与质量特性 319
第 13 章 微内核架构软件测试 322
13.1 微内核架构概述 322
13.1.1 微内核架构说明 322
13.1.2 微内核架构特点 323
13.1.3 微内核架构优缺点 324
13.2 质量特性 324
13.2.1 功能性 324
13.2.2 信息安全性 325
13.2.3 可靠性 325
13.2.4 易用性 325
13.3 测试策略 325
13.4 测试案例一 325
13.4.1 案例介绍 325
13.4.2 测试过程 327
13.5 测试案例二 329
13.5.1 案例介绍 329
13.5.2 案例测试策略 331
13.5.3 案例测试设计和执行 336
13.5.4 案例总结 337
第 14 章 分布式架构软件测试 338
14.1 架构概述 338
14.1.1 基本概念 338
14.1.2 架构组件 340
14.1.3 架构优势和劣势 342
14.1.4 应用实例 343
14.2 质量特性 344
14.2.1 功能性 344
14.2.2 数据一致性相关 346
14.2.3 事务处理相关 347
14.2.4 并发、互斥相关 347
14.2.5 远过程调用和通信相关 348
14.2.6 运维相关 349
14.3 分布式架构软件测试常见的质量目标 350
14.4 分布式架构软件测试常见的测试策略 352
14.5 测试案例 353
14.5.1 购票系统 353
14.5.2 超市会员系统 360
第四篇 新技术应用篇
第 15 章 移动应用软件测试 363
15.1 移动终端平台和应用软件介绍 363
15.2 移动应用软件的测试 367
15.3 移动应用软件功能测试案例 373
第 16 章 物联网软件系统测试 375
16.1 物联网简介 375
16.2 物联网的测试类型 377
16.3 物联网渗透测试技术 378
第 17 章 大数据系统测试 381
17.1 大数据简介 381
17.2 大数据测试技术 382
17.3 大数据功能测试案例 385
第 18 章 可信软件验证技术 390
18.1 可信软件 390
18.2 可信软件的验证技术 391
18.2.1 形式化建模与方法 391
18.2.2 可信软件验证工具 394
第 19 章 人工智能时代下的软件测试技术发展 400
19.1 人工智能时代的到来 400
19.1.1 人工智能在各行各业的应用 400
19.1.2 人工智能对软件测试技术发展的影响 401
19.1.3 人工智能会否取代软件测试人员 403
19.2 人工智能辅助测试技术 405
19.2.1 基于约束的技术 405
19.2.2 启发式搜索算法 408
19.3 机器学习在软件测试中的应用 409
19.3.1 软件测试设计推荐 409
19.3.2 使用模式识别 410
19.3.3 软件脆弱性测试 410
参考文献 411