敏捷测试 以持续测试促进持续交付
评分
1.0
第 1 章 铺垫:敏捷开发价值观、原则与实践/ 1
导读/ 1
1.1 敏捷开发模式的由来/ 2
1.1.1 新产品开发方式Scrum / 3
1.1.2 轻量级软件开发方法/ 5
1.1.3 敏捷宣言的诞生/ 6
1.2 敏捷价值观/ 7
1.3 敏捷开发原则/ 8
1.4 常见的敏捷开发框架/ 9
1.4.1 极限编程/ 9
1.4.2 行为驱动开发/ 13
1.4.3 特性驱动开发/ 15
1.4.4 Scrum 开发框架/ 17
1.5 敏捷与看板、精益的关系/ 20
1.5.1 看板/ 21
1.5.2 精益软件开发实践/ 23
1.6 敏捷与DevOps 的关系/ 26
本章小结/ 29
延伸阅读/ 29
第 2 章 基础:敏捷测试之道/ 31
导读/ 31
2.1 什么是敏捷测试/ 32
2.1.1 从一个真实的案例说起/ 32
2.1.2 敏捷测试的含义/ 35
2.1.3 敏捷测试的其他定义/ 36
2.2 传统测试与敏捷测试/ 38
2.2.1 凤凰项目:一个IT 运维的传奇故事/ 38
2.2.2 3 步工作法/ 39
2.2.3 凤凰项目改造前后对比/ 40
2.2.4 传统测试和敏捷测试的区别/ 41
2.3 敏捷测试的思维方式/ 41
2.3.1 固定性思维与敏捷思维/ 42
2.3.2 成长性思维/ 42
2.3.3 以实例来辨析不同思维的测试工程师/ 43
2.3.4 团队对质量负责的思维/ 44
2.3.5 上下文驱动的思维与用户思维/ 45
2.4 敏捷测试流程解析/ 45
2.4.1 Scrum 模式下的测试流程/ 45
2.4.2 敏捷测试的通用流程/ 47
2.4.3 敏捷测试流程闭环与持续测试/ 48
2.4.4 从敏捷项目管理角度来看测试流程/ 49
2.5 新的敏捷测试四象限/ 50
2.5.1 敏捷测试四象限之历史/ 50
2.5.2 新的敏捷测试四象限简介/ 52
本章小结/ 53
延伸阅读/ 54
第3 章 人是决定性因素/ 55
导读/ 55
3.1 敏捷团队究竟要不要专职的测试人员/ 56
3.1.1 问题的提出及各方的理由/ 56
3.1.2 根据上下文来确定是否需要/ 58
3.1.3 存在即合理/ 59
3.2 配备专职敏捷测试人员时的操作/ 60
3.2.1 Etsy 公司的优秀实践/ 60
3.2.2 敏捷测试人员的责任和具体任务/ 61
3.2.3 测试人员和开发人员的分工/ 63
3.2.4 测试敏捷化对团队意味着什么/ 64
3.3 没有专职的测试人员时的操作/ 64
3.3.1 是否借助灰度发布和一键回滚/ 65
3.3.2 消除系统测试不足带来的影响/ 66
3.3.3 加强敏捷验收测试和ATDD 的实践/ 67
3.3.4 应对其他挑战/ 67
3.4 借助测试负责人角色完成团队转型/ 68
3.4.1 冰冻三尺并非一日之寒/ 69
3.4.2 多数团队不是Google / 70
3.4.3 测试负责人角色的责任和具体实践/ 71
3.4.4 测试主负责人角色/ 72
3.5 如何创建有强烈质量意识的学习型团队/ 73
3.5.1 达成质量共识/ 73
3.5.2 营造良好的质量文化氛围/ 73
3.5.3 创建学习型团队/ 74
3.5.4 业务学习与缺陷根因分析/ 76
3.6 如何更好地为测试而学/ 76
3.6.1 系统性思维训练/ 77
3.6.2 创造性思维训练/ 79
3.6.3 如何提升测试自动化能力/ 80
3.6.4 如何学习测试建模/ 80
3.6.5 借力提升自己/ 81
3.7 如何与产品、开发等角色协作/ 82
3.7.1 团队协作的五大障碍/ 82
3.7.2 团队协作高于一切/ 84
3.7.3 达成对质量及其管理的共识/ 85
3.7.4 沟通的技巧/ 86
本章小结/ 87
延伸阅读/ 87
第4 章 构建强大的敏捷测试基础设施/ 89
导读/ 89
4.1 持续集成与持续交付意味着什么/ 90
4.1.1 敏捷的目标/ 91
4.1.2 持续集成中的测试活动/ 91
4.1.3 持续交付中的测试活动/ 93
4.1.4 持续集成 持续测试是关键/ 94
4.1.5 持续部署/ 95
4.1.6 持续运维/ 95
4.2 测试如何融入持续集成/ 持续交付环境/ 95
4.2.1 支撑持续集成的测试环境/ 96
4.2.2 支撑持续交付的测试环境/ 96
4.2.3 CI/CD 流水线中的测试过程/ 97
4.3 基于DevOps 的测试基础设施构成/ 99
4.3.1 DevOps 的测试/ 100
4.3.2 DevOps 测试基础设施/ 101
4.3.3 基础设施即代码/ 103
4.3.4 对基础设施进行验证——Testinfra / 104
4.4 虚拟机技术与容器技术的应用/ 105
4.4.1 虚拟化技术——虚拟机技术和容器技术/ 106
4.4.2 Sidecar 模式——容器的设计模式/ 107
4.4.3 虚拟化技术之NUMA 和DPDK / 108
4.4.4 服务虚拟化的利器——Hoverfly / 109
4.4.5 Molecule——虚拟化技术的自动化测试工具/ 111
4.4.6 Kubernetes 与测试环境/ 112
4.5 如何完成自动部署/ 113
4.5.1 配置即代码——CI 配置管理工具:Ansible、Chef / 114
4.5.2 微服务的容器化部署/ 116
4.5.3 微服务在CI 环境中的自动化部署/ 117
4.5.4 Docker 容器的集群管理之Kubernetes / 119
4.5.5 基础架构即代码的工具——Terraform、CloudFormation / 122
4.5.6 管道即代码的工具——Concourse、Drone / 123
4.5.7 新一代的部署体验——Serverless 软件系统架构/ 125
4.5.8 产品发布之导流模式/ 125
4.6 如何完成全自动的BVT / 126
4.6.1 BVT 要验证哪些点/ 126
4.6.2 不稳定的情况——Flaky / 128
4.7 自动的静态测试和测试报告生成/ 130
4.7.1 代码分析(静态测试)/ 130
4.7.2 优秀的静态测试工具/ 131
4.7.3 静态测试报告的自动生成/ 131
4.7.4 自动化测试报告的自动生成/ 135
4.8 测试分层策略与金字塔模型/ 139
4.9 搭建敏捷自动化测试框架及其案例分析/ 140
4.9.1 自动化测试框架的构成/ 140
4.9.2 自动化测试框架的分类/ 142
4.9.3 单元测试框架JUnit 5 / 143
4.9.4 API 层的TA 测试框架Karate / 144
4.9.5 验收测试框架Ginkgo / 146
本章小结/ 148
延伸阅读/ 149
第5 章 测试左移更体现敏捷测试的价值/ 150
导读/ 150
5.1 没有ATDD,就没有用户故事的可测试性/ 151
5.1.1 可测试性的概念/ 151
5.1.2 需求、设计和代码等不同层次的可测试性/ 152
5.1.3 用户故事的可测试性和ATDD / 153
5.1.4 ATDD 与TDD( UTDD)的关系/ 154
5.1.5 如何具体实施ATDD / 156
5.2 产品价值分析:商业画布、影响地图与用户故事地图/ 156
5.2.1 产品价值是基础/ 157
5.2.2 商业画布/ 158
5.2.3 影响地图/ 160
5.2.4 用户故事地图/ 161
5.3 从Epic 到用户故事完成需求评审/ 162
5.3.1 通用的评审标准/ 163
5.3.2 Epic 的评审/ 164
5.3.3 用户故事的评审/ 166
5.4 不可忽视的设计评审/ 169
5.4.1 设计评审的价值和重要性/ 170
5.4.2 如何完成架构评审/ 170
5.4.3 有层次的(组件)评审/ 172
5.4.4 接口定义的评审/ 173
5.4.5 设计的可测试性/ 173
5.5 BDD 及其自动化实践/ 174
5.5.1 什么是BDD / 174
5.5.2 BDD 和测试的关系/ 175
5.5.3 现有的BDD 自动化测试框架/ 177
5.5.4 BDD 实例/ 179
5.5.5 BDD 实践中的常见问题/ 183
5.6 再进一步,让实例化需求落地/ 183
5.6.1 什么是实例化需求/ 183
5.6.2 实例化需求的过程/ 185
5.6.3 RBE 的自动化实现/ 190
5.7 单元测试是否必须TDD / 191
5.7.1 为何TDD 是必需的/ 191
5.7.2 如何做好TDD / 192
5.7.3 UTDD 测试原则/ 193
5.7.4 UTDD 的具体实践/ 194
本章小结/ 195
延伸阅读/ 196
第6 章 敏捷测试的分析与计划/ 197
导读/ 197
6.1 基于上下文驱动思维的测试分析/ 198
6.1.1 上下文驱动测试流派/ 198
6.1.2 质量标准/ 201
6.1.3 项目背景/ 202
6.1.4 产品元素/ 204
6.2 如何培养自己的业务与用户体验分析技能/ 205
6.2.1 用户思维/ 205
6.2.2 场景是测试需求的灵魂/ 206
6.2.3 业务分析/ 207
6.2.4 用户体验要素/ 208
6.3 敏捷测试的主要风险在哪里/ 209
6.3.1 需求不清晰/ 210
6.3.2 需求频繁变更/ 211
6.3.3 时间太紧张/ 211
6.3.4 自动化测试的有效性/ 212
6.3.5 测试风险项目检查表/ 212
6.3.6 风险控制/ 213
6.4 启发式测试策略与测试策略的制定/ 215
6.4.1 什么是测试策略/ 215
6.4.2 启发式测试策略模型/ 216
6.4.3 快速、高效地制定测试策略/ 218
6.5 代码依赖性分析与精准测试/ 220
6.5.1 精准测试/ 221
6.5.2 如何建立测试用例和代码的映射关系/ 222
6.5.3 代码依赖性分析/ 223
6.5.4 代码的变更分析/ 225
6.5.5 测试用例集如何优化/ 225
6.5.6 优秀实践/ 226
6.6 敏捷测试要不要计划/ 227
6.6.1 测试计划的价值/ 227
6.6.2 一页纸的测试计划/ 228
6.6.3 如何编写一页纸的测试计划/ 229
6.7 探索式测试与基于脚本的测试/ 232
6.7.1 什么是探索式测试/ 232
6.7.2 探索式测试的应用场景/ 233
6.7.3 基于脚本的测试/ 234
6.7.4 探索式测试与基于脚本的测试的比较/ 235
6.7.5 敏捷拥抱探索式测试/ 236
6.8 SBTM 的由来及使用/ 237
6.8.1 SBTM 的由来/ 237
6.8.2 真正理解会话/ 237
6.8.3 测试计划分解成多个子目标/ 239
6.8.4 测试子目标进一步分解为会话/ 240
6.9 一个应用SBTM 的真实案例/ 241
6.9.1 案例背景/ 241
6.9.2 挑战在哪里/ 242
6.9.3 测试子目标分解的结果/ 242
6.9.4 几个典型的会话/ 243
6.9.5 会话表/ 246
6.9.6 口头汇报/ 247
6.10 敏捷测试分析与计划的案例/ 248
6.10.1 信息收集/ 249
6.10.2 测试目标/ 249
6.10.3 通过测试分析得到测试范围/ 250
6.10.4 根据测试分析进行风险分析和控制/ 251
6.10.5 基于风险的测试策略/ 252
6.10.6 测试计划/ 253
本章小结/ 254
延伸阅读/ 255
第7 章 敏捷测试的设计与执行/ 256
导读/ 256
7.1 正确理解DoD 与敏捷中的验收测试/ 257
7.1.1 什么是DoD / 257
7.1.2 如何创建DoD / 258
7.1.3 DoD 和敏捷验收测试的关系/ 260
7.1.4 如何验证DoD / 261
7.2 如何将用户故事转化为测试用例/ 261
7.2.1 转换为场景/ 262
7.2.2 场景离测试用例还差一步/ 263
7.2.3 用户故事转化为测试用例的模型/ 263
7.3 基于场景/ 事件流的测试用例设计/ 265
7.3.1 事件流图/ 265
7.3.2 在敏捷测试中的应用/ 266
7.3.3 状态图与有限状态机/ 268
7.4 探索式测试过程与生态/ 270
7.4.1 调查、分析、排序和实验/ 270
7.4.2 以分析为中心/ 270
7.4.3 自我管理环、学习环/ 271
7.4.4 协作环与测试环/ 272
7.5 探索式测试中的角色扮演与场景挖掘/ 272
7.5.1 批判性思维与探索式测试设计执行/ 272
7.5.2 角色扮演/ 273
7.5.3 场景挖掘/ 274
7.6 探索式测试的具体技巧/ 276
7.6.1 业务路径测试/ 277
7.6.2 遍历测试/ 279
7.6.3 极限情况的测试/ 279
7.6.4 异常情况的测试/ 280
7.7 测试自动化设计模式:一步到位/ 280
7.7.1 基于模型的自动化测试/ 281
7.7.2 状态图生成测试用例/ 281
7.7.3 测试数据的自动生成/ 284
7.8 UI 脚本开发与维护的常用技巧/ 287
7.8.1 脚本语言和测试框架的选择/ 287
7.8.2 UI 元素定位/ 288
7.8.3 测试代码的模块化和参数化/ 291
7.8.4 Selenium 集成自动化测试框架/ 293
7.8.5 Page Object 设计模式/ 295
7.8.6 隐式等待/ 296
7.9 质效合一:自动化测试和手工测试的完美融合/ 296
7.9.1 一个关于测试策略的案例/ 296
7.9.2 新功能手工测试,回归测试自动化/ 297
7.9.3 探索未知的,自动化已知的/ 299
7.9.4 自动化回归测试怎么做/ 300
7.10 优先实现面向接口的测试/ 300
7.10.1 接口(API)测试越来越重要/ 301
7.10.2 接口测试示例/ 301
7.10.3 如何获取接口信息/ 304
7.10.4 契约测试和微服务的接口测试/ 306
7.10.5 API 持续测试平台:API Fortress / 308
本章小结/ 308
延伸阅读/ 309
第8 章 测试右移:从敏捷到DevOps / 310
导读/ 310
8.1 在线性能测试/ 311
8.1.1 全链路压测/ 311
8.1.2 在线性能监控/ 313
8.1.3 流量回放技术/ 314
8.2 A/B 测试/ 316
8.2.1 什么是A/B 测试/ 316
8.2.2 A/B 测试的设计/ 317
8.2.3 A/B 测试平台与测试执行/ 319
8.2.4 关于用户体验的度量/ 320
8.3 监控告警系统/ 321
8.3.1 日志分析及Elastic Stack 的使用/ 323
8.3.2 调用链分析及SkyWalking 的使用/ 324
8.3.3 指标监控及Prometheus 的使用/ 327
8.3.4 监控系统解决方案/ 329
8.4 安全性监控/ 330
8.5 混沌工程/ 331
8.5.1 混沌工程的由来/ 332
8.5.2 基于故障注入的测试/ 333
8.5.3 混沌工程平台与工具/ 334
8.5.4 混沌工程的具体实施/ 336
8.5.5 为系统弹性做好设计/ 337
8.6 智能运维与测试/ 340
8.6.1 从自动化运维到智能运维/ 340
8.6.2 智能运维的典型场景/ 341
本章小结/ 342
延伸阅读/ 343
第9 章 敏捷测试的收尾与改进/ 344
导读/ 344
9.1 如何分析测试结果和评估测试工作的质量/ 345
9.1.1 如何评估敏捷测试过程/ 345
9.1.2 敏捷测试过程的度量体系/ 346
9.1.3 测试工作质量的分析/ 348
9.1.4 代码覆盖率/ 348
9.1.5 功能覆盖率/ 349
9.1.6 业务覆盖率/ 349
9.1.7 基于缺陷分析测试质量/ 350
9.2 如何获得良好的可追溯性、可视化/ 350
9.2.1 测试管理系统/ 351
9.2.2 需求与测试用例的映射关系,以及测试用例与缺陷的映射关系/ 352
9.2.3 示例:Jira Zephyr 实现可追溯性/ 353
9.2.4 测试与质量度量的可视化/ 355
9.2.5 质量雷达图/ 357
9.3 敏捷测试优秀实践/ 357
9.3.1 微软的优秀实践/ 358
9.3.2 谷歌的优秀实践/ 359
9.3.3 亚马逊的优秀实践/ 360
9.3.4 ThoughtWorks 的优秀实践/ 361
9.3.5 腾讯的优秀实践/ 364
9.3.6 阿里巴巴的优秀实践/ 365
9.4 敏捷过程的反思与持续改进/ 366
9.4.1 敏捷过程的反思/ 367
9.4.2 敏捷测试过程的改进分析/ 368
9.4.3 数据驱动改进/ 369
9.4.4 PDCA 循环/ 369
9.4.5 根因分析/ 371
本章小结/ 372
延伸阅读/ 372
第 10 章 敏捷测试的展望/ 374
导读/ 374
10.1 大数据的测试/ 375
10.1.1 大数据的特性与挑战/ 376
10.1.2 大数据的测试方法/ 378
10.1.3 大数据的测试实践/ 380
10.1.4 大数据的测试工具/ 381
10.2 人工智能系统的测试/ 382
10.2.1 人工智能系统的不确定性和不可解释性/ 383
10.2.2 人工智能系统的白盒测试/ 384
10.2.3 人工智能系统的算法验证/ 386
10.2.4 示例:针对智能语音的设计与执行/ 388
10.3 人工智能助力敏捷测试/ 392
10.3.1 基于图像识别技术的UI测试/ 392
10.3.2 基于人工智能的、全自动化的API 测试/ 397
10.3.3 人工智能助力代码深度分析/ 399
10.3.4 人工智能驱动测试/ 401
10.3.5 人工智能测试工具/ 403
10.4 敏捷测试工具的未来/ 406
10.4.1 敏捷测试工具的发展趋势/ 406
10.4.2 MBT 的前景如何/ 408
10.4.3 无代码化的测试自动化/ 409
10.5 彻底实现持续测试/ 413
10.5.1 重新理解持续测试/ 414
10.5.2 持续测试的实现框架/ 415
10.5.3 持续测试成熟度模型/ 424
10.5.4 彻底的持续测试/ 425
本章小结/ 426
延伸阅读/ 427
附录A 基于Kubernetes 和Docker搭建Jenkins 可伸缩持续集成系统/ 428
导读/ 428
A.1 工作流程图/ 429
A.2 系统配置/ 429
A.3 安装Kubernetes 集群/ 430
A.3.1 安装前的准备/ 430
A.3.2 安装配置/ 430
A.4 Harbor 的安装部署/ 434
A.4.1 下载Harbor 离线安装包/ 434
A.4.2 安装Docker / 435
A.4.3 安装Docker Compose / 435
A.4.4 Harbor 的安装与配置/ 435
A.4.5 客户端访问Harbor 仓库/ 436
A.5 采用Jenkins Pipeline 实现自动构建并部署至k8s / 438
A.5.1 部署Jenkins / 438
A.5.2 新建Spring Boot Java工程/440
A.5.3 配置Jenkins Pipeline任务/ 444
A.5.4 测试Pipeline 任务/ 446
A.5.5 遇到的问题及解决方法/ 449
附录B 敏捷实践发展史/ 451
附录C 后敏捷时代暨DevOps发展史/ 461
附录D 中国敏捷测试大事记/ 463
参考文献/ 465
互联网产品的快速迭代,让敏捷开发在各个领域都得到了广泛应用。同时,也加快了敏捷测试在各家企业落地生根的进程。
《敏捷测试:以持续测试促进持续交付》由测试领域老兵联合10余位测试专家对敏捷测试的实践经验汇总、整理而成。本书分为10章和4个附录。从敏捷开发和敏捷测试基础、人的因素、敏捷测试基础设施、分析与计划、设计与执行、测试右移、收尾与改进、展望等角度入手,几乎涵盖实现高效敏捷测试所需的各个方面的知识,以及测试思维、测试流程、测试基础设施和一系列的优秀实践,对提高测试效率进而提升产品交付质量具有重大的指导意义。
《敏捷测试:以持续测试促进持续交付》理论知识与实际案例深度结合,辅以思维导图、延伸阅读等模块,深入浅出,尤其适合有一定测试实践经验的软件质量保障和测试人员,想要较为深入了解敏捷测试的专业人士阅读参考。