全程软件测试(第3版)
作 者: 朱少民 著
出版时间: 2019
内容简介
本书系统地总结了过去十年中软件测试发生的变化,浓缩了作者许多宝贵的软件测试经验。本书首先介绍对于软件测试的不同看法,全程软件测试的思想,软件测试的基础设施与TA框架、团队能力建设;然后逐步深入到测试的计划、设计、执行、持续反馈和改进;接着,讨论全程测试的思想,包括全程静态测试、全程性能测试、全程安全性、全程建模、全程可视化。本书最后展望了软件测试的未来。 本书适合软件测试人员阅读,也可作为相关专业人士的参考指南。
第 1章 360度看软件测试:一览无余 1
1.1 软件测试基本认知——正反思维 2
1.2 从狭义测试到广义测试 3
1.3 基于质量的认知 5
1.4 基于风险的认知 8
1.5 基于社会性的认知 8
1.6 基于经济的认知 9
1.7 基于标准的认知 9
1.8 基于Test Oracle的认知 11
1.9 基于批判性思维的认知 14
1.10 基于传统开发模式的认知 16
1.11 基于敏捷开发模式的认知 17
1.12 小结 20
第 2章 全程测试:闪光的思想 22
2.1 测试左移与右移 23
2.2 测试驱动开发 24
2.3 传统研发模式的测试环 28
2.4 敏捷研发中的测试环 30
2.5 DevOps与测试 32
2.6 小结 34
第3章 准备:基础设施与TA框架 35
3.1 虚拟机与容器技术 35
3.2 基础设施即代码 38
3.3 持续集成环境 39
3.3.1 版本管理与构建 41
3.3.2 CI管理工具的安装 42
3.4 自动化测试框架 45
3.4.1 自动化测试框架的构成与
分类 45
3.4.2 单元测试框架 48
3.4.3 UI TA框架 51
3.4.4 移动应用TA框架 57
3.4.5 面向API的TA测试框架 60
3.4.6 验收测试框架 64
3.5 DevOps完整工具链 68
3.6 小结 72
第4章 准备:个体与团队 73
4.1 全栈,体现了技术深度 74
4.2 个人测试能力模型 77
4.3 软件测试思维训练 81
4.3.1 软件测试系统性思维 81
4.3.2 分析性测试思维 86
4.3.3 批判性测试思维 91
4.3.4 创造性、发散性测试思维 95
4.4 软件研发团队测试组织与能力 98
4.5 软件研发团队测试过程改进 99
4.6 DevOps对软件测试人员的影响
分析 102
4.7 小结 105
第5章 项目启动:知己知彼、
百战不殆 107
5.1 用户与质量要求 108
5.1.1 用户是谁 108
5.1.2 对质量有什么要求 109
5.1.3 参照哪些质量标准 110
5.2 项目背景 112
5.3 产品元素 113
5.4 测试方法和技术 115
5.5 确定测试规范 116
5.6 小结 122
第6章 测试计划:分析与策略 123
6.1 软件测试的目标 124
6.1.1 分析软件产品的特定质量
要求 125
6.1.2 测试目标 127
6.2 项目的测试需求 129
6.2.1 测试需求分析的基本
方法 130
6.2.2 测试需求的分析技术 132
6.2.3 功能需求分析 133
6.2.4 非功能性需求分析 137
6.3 测试工作量估算 140
6.3.1 工作量的估计 141
6.3.2 工作分解结构表方法 142
6.3.3 工作量估计的实例 145
6.4 测试资源需求 147
6.5 测试里程碑和进度安排 148
6.5.1 传统测试 149
6.5.2 敏捷测试 149
6.6 测试风险分析 150
6.7 如何制订有效的测试策略 154
6.8 编写测试计划书 160
6.9 小结 161
第7章 测试设计:架构与用例 163
7.1 测试框架的设计 163
7.1.1 从需求到测试用例 164
7.1.2 基于SUT结构来组织
设计 166
7.2 测试设计要考虑的因素 170
7.3 如何运用测试设计方法 171
7.4 非功能性测试也存在设计 176
7.5 探索式测试之设计 177
7.6 测试用例规范性与评审 181
7.6.1 测试用例的构成 181
7.6.2 测试用例书写标准 182
7.6.3 测试用例评审要点 183
7.7 测试集的创建 186
7.8 小结 189
第8章 测试执行:自动与探索 190
8.1 测试执行概述 190
8.2 测试执行的准备 193
8.2.1 测试任务安排 193
8.2.2 测试环境的建立与配置 194
8.2.3 测试自动化运行平台 195
8.3 如何有效地创建测试集 196
8.4 敏捷测试的执行 198
8.4.1 策略与实践 198
8.4.2 探索式测试的执行 200
8.5 用户体验和易用性测试 202
8.5.1 易用性测试的标准 202
8.5.2 如何进行A/B测试 206
8.6 回归测试 209
8.7 软件缺陷的报告 212
8.7.1 缺陷的属性及其描述 212
8.7.2 如何有效报告缺陷 214
8.8 小结 215
第9章 永不收尾:持续反馈与改进 216
9.1 验收测试 216
9.2 部署验证 220
9.2.1 客户端软件安装测试 220
9.2.2 后台系统的部署验证 222
9.3 在线测试与日志分析 222
9.4 后继版本的测试 226
9.5 测试过程评审 228
9.6 团队反思:持续改进 229
9.7 小结 233
第 10章 全程静态测试:
以不变应万变 234
10.1 常用的评审方法 234
10.2 需求评审优秀实践 237
10.2.1 如何操作需求评审 238
10.2.2 需求评审的标准 239
10.2.3 需求的可测试性 241
10.3 系统架构的审查 242
10.3.1 系统架构选型的确认 243
10.3.2 软件设计评审标准 244
10.3.3 设计的可测试性 248
10.3.4 系统组件设计的审查 250
10.4 产品设计规格说明书的复审 252
10.4.1 重视设计规格说明书的
审查 252
10.4.2 设计规格说明书的多层次
审查 253
10.4.3 界面设计的评审 254
10.5 系统部署设计的审查 255
10.5.1 系统部署逻辑设计的
审查 256
10.5.2 软件部署物理设计的
审查 258
10.5.3 可用性设计的审查 259
10.5.4 可伸缩性设计的验证 263
10.5.5 安全性设计的验证 264
10.6 代码评审与静态分析 264
10.7 小结 267
第 11章 全程性能测试:持续优化 268
11.1 常见的性能问题 268
11.2 如何确定系统的性能需求 269
11.2.1 明确性能测试的基本
目标 270
11.2.2 关键性能指标分析 271
11.2.3 关键业务分析 273
11.3 如何完成性能测试的设计 274
11.3.1 如何模拟用户操作 274
11.3.2 如何有效地模拟加载
过程 275
11.3.3 如何实时准确地控制
加载 278
11.4 如何执行性能测试 279
11.5 如何分析和评估测试结果 286
11.6 小结 289
第 12章 全程安全性:持续加固 290
12.1 贯穿研发生命周期的安全性测试 290
12.2 滥用案例与安全性需求 293
12.2.1 软件系统存在哪些安全
漏洞 293
12.2.2 国内外标准中关于系统
安全性的要求 295
12.2.3 安全性测试需求分析 297
12.3 安全性风险分析 298
12.4 安全性静态测试 301
12.5 渗透测试 302
12.6 系统运维安全性监控与审计 306
12.7 小结 307
第 13章 全程建模:彻底自动化 309
13.1 测试过程模型 310
13.2 基于模型的测试 312
13.3 基于业务建模的MBT方法 314
13.3.1 基于业务流程建模 314
13.3.2 基于事件流、应用
场景建模 316
13.4 基于UML的MBT方法 318
13.4.1 基于UML的MBT具体
实现 319
13.4.2 基于有限状态机建模 321
13.5 小结 323
第 14章 全程可视化:管理无死角 326
14.1 测试过程的度量体系 326
14.1.1 测试管理的全局性与
层次性 327
14.1.2 测试过程度量指标体系 328
14.2 测试全过程的度量 332
14.2.1 测试分析与设计的度量 333
14.2.2 代码评审与分析的度量 336
14.2.3 测试执行的度量 338
14.2.4 与缺陷相关的度量 340
14.2.5 测试充分性和上线后的
度量 345
14.3 测试度量管理与工具 346
14.4 测试用例管理 348
14.5 测试管理工具的应用 350
14.6 小结 353
第 15章 测试展望:未来更具挑战 355
15.1 云计算与测试的基础设施 355
15.2 微服务、契约测试与自动化
测试工具 357
15.2.1 契约测试工具 358
15.2.2 智能的单元测试工具 360
15.2.3 前端测试工具 362
15.3 如何测试人工智能软件 363
15.4 如何用AI技术为测试服务 365
15.4.1 AI技术及其应用 365
15.4.2 AI技术如何应用于测试 367
15.4.3 AI测试工具 372
15.5 小结 375
附录A 测试中的记忆符号:
测试思维宝库 376
附录B 测试计划(GB8567—
2006) 382
B.1 引言 382
B.1.1 标识 382
B.1.2 系统概述 382
B.1.3 文档概述 382
B.1.4 与其他计划的关系 382
B.1.5 基线 382
B.2 引用文件 382
B.3 软件测试环境 383
B.4 计划 384
B.4.1 总体设计 384
B.4.2 计划执行的测试 385
B.4.3 测试用例 386
B.5 测试进度表 386
B.6 需求的可追踪性 387
B.7 评价 387
B.7.1 评价准则 387
B.7.2 数据处理 387
B.7.3 结论 387
B.8 注解 387
B.9 附录 388
附录C 代码审查的示范性列表 389
E.1 格式 389
E.2 程序语言的使用 389
E.3 数据引用错误 389
E.4 数据声明错误 390
E.5 计算错误 390
E.6 比较错误 391
E.7 入口和出口的连接 391
E.8 存储器的使用 391
E.9 控制流程错误 391
E.10 子程序参数错误 392
E.11 输入/输出错误 392
E.12 逻辑和性能 392
E.13 维护性和可靠性 393
附录D RF库与工具 394
附录E 软件测试术语中英文对照 399
参考文献 404