前言
这本书是我们第一本书《敏捷软件测试:测试人员与敏捷团队的实践指南》的延续。我们避免重复在第一本书中已经涵盖的内容,但也提供了足够的背景信息,即使你没有读过《敏捷软件测试》也能够理解这本书。当我们觉得值得读者多了解一些基本概念的相关信息时,我们会提到第一本书中的内容。
这本书为谁而写?
我们假定阅读这本书的你,并非敏捷测试世界的初学者,而是已经有一些敏捷和测试的经验,正在寻求那些敏捷测试已超出领域的帮助。如果你感觉你自己需要在读这本书之前,先了解敏捷开发和敏捷下做测试的一些基础知识,《敏捷武士》(2010年,作者Rasmussen)是个很优秀的入门之选。
这本书适用于任何对敏捷团队的测试活动感兴趣的人。基于我们的经验,这不只包括测试人员和测试经理,也包括程序员、产品负责人、业务分析师、DevOps实践者、直线经理,差不多就是所有人。
接收测试
除了分享过去这些年的所学,我们想让这本书也像我们第一本书那样对读者有用。我们想知道,读者们在读过第一本书之后还需要知道些什么,于是就要求敏捷测试邮件组的实践者们把他们对第二本书的“接收测试”发给我们。我们把这些回复提取成本书的一组接收测试,并在写书时努力满足这些预期。
你会发现,我们采取了BDD(行为驱动开发)的风格,我们会在第11章进行探讨:
假定
<前提条件>
,
前提条件>
如果
<触发、行为>
,
触发、行为>
那么
<预期结果>
预期结果>
● 假定我是一名敏捷测试人员或测试经理,如果我要招募没有敏捷经验的新测试人员,那么我就要学会如何让他们尽快上手,并避免没给救生衣就把他们扔进深水区。
● 假定我是敏捷团队一员,如果我读完了这本书,那么我就能知道怎么把探索式测试融入自动化测试,并能了解整体的测试覆盖情况,而不必求助重型工具。
● 假定我是一名经验丰富的敏捷测试经理,如果我读完了这本书,那么我就理解如何将敏捷测试技术运用于多个团队,从而帮助我成功的敏捷组织继续成长。
● 假定我是一名经验丰富的测试经理,如果我读完了这本书,那么我就能学到协调多个迭代和团队的测试自动化活动的办法和改进的思路。
● 假定我是一名经验丰富的敏捷经理,如果我读完了这本书,那么我就能理解其他团队如何调整敏捷测试实践以适应他们自己的环境,并能知道如何将它们运用于我的团队。
● 假定我是对测试感兴趣的一名敏捷团队成员,如果我读完了这本书,那么我能举例来说测试应该是怎样的、不应该是怎样的,以及怎样有效地设计测试。
● 假定我是一名经验丰富的敏捷测试人员,如果我发现想要深入了解书中的某些有趣话题,那么我能轻易找到参考用的网络资源或其他书籍。
● 假定我是正在阅读此书的一名经验丰富的敏捷教练或经理,如果我看到一个可能对我团队有帮助的概念,那么我能有足够的信息可以制定出策略让团队进行实验尝试。
● 假定我是关注着测试和客户知情权的一名敏捷团队成员,如果我读完了这本书,那么我将学到跟客户团队成员沟通测试活动的好办法。
● 假定我是一名经验丰富的测试经理,如果我读完了这本书,那么我就能在有测试人员应聘我们团队职位时知道他们组织测试人员的工作环境(注意:这个接收测试并不属于这次发布版本的内容,但我们认为书中的某些例子和故事有助于达成此测试)。
如何阅读这本书
尽管我们自认为是按照最顺畅的方式组织了这本书,但你无须非得从第1章开始往后读。跟《敏捷软件测试》一样,你可以选择任何对你最有用的章节开始读。我们尝试做到每个话题只详细介绍一次,但因为这些概念、实践和原则大多数都是相互关联的,你会发现有些内容在多个章节里都有提及。
第Ⅰ部分:简介
阅读这部分可以理解敏捷团队中测试始于何处,又是如何演进成为产品的敏捷开发和持续交付的基石。成功敏捷开发的一部分,就是组织学会取得敏捷测试长期成功的关键因素的能力。
● 第1章“敏捷测试有了什么样的发展”
● 第2章“组织文化的重要性”
第Ⅱ部分:为更好地测试而学习
不管是测试的技术还是工艺,都在不断地演进,而不同职能之间的界限也在变得越来越模糊。即便是经验丰富的实践者也必须不断地增长自己的技能。这一部分包含了测试人员和业务分析师、编码员等其他职能面对更难测试挑战所需要知道的内容。我们解释了泛才化专家的优势,并列出了一些能够帮助测试人员和团队提升的无形的思考技能和特定的技术性测试技能。如下章节涵盖了学习的对象和方法的不同方面:
● 第3章“角色和能力”
● 第4章“测试的思维技能”
● 第5章“技术意识”
● 第6章“如何学习”
第Ⅲ部分:计划—— 不要忘了全局
计划“仅够”是一种寻找平衡的行为。当我们需要基于小增量开展工作时,我们必须留意更大的特性集以及整个系统。这部分涵盖了测试规划的不同方面,从发布级别向下一直到任务级别。它还探讨了不同模型,例如敏捷测试象限,以及人们建议的一些改版。
● 第7章“计划的精度层级”
● 第8章“使用模型帮助制定计划”
第Ⅳ部分:商业价值的测试
如果你们也跟诸多敏捷团队一样,及时地交付可靠代码,只为能发现它是否真是客户想要的,那么这部分的内容就能帮到你。我们涵盖了工具和实践,尤其是来自敏捷业务分析专业领域的那一部分,帮助你尽早地验证想法和假设、确保所有人都知道要交付什么。我们还涉及了其他重叠的职能以及扩展的思维。这是一个很大的领域,所以分为好几个章节:
● 第9章“你在做正确的产品吗?”
● 第10章“拓展型测试人员的思维:这是我的工作吗?”
● 第11章“获取实例”
第Ⅴ部分:研究型测试
程序员已经提交了一些代码可供测试。你从哪里开始?如果你或你们团队缺少探索式测试的经验,那么可以在这里找到帮助。我们列出了一些探索式技术,例如使用用户角色人物和探测来辅助产生测试章程的思路,以及使用基于会话的测试管理和基于线程的测试管理来管理这些章程。
除了这些探索式测试的不同做法,我们还考虑了验证已交付代码是否满足一大波业务和用户需求的其他一些方式。这部分涵盖了采用多种不同类型测试降低风险和产生有效信息的方式,以协助团队应对这些挑战。研究型测试的章节包括:
● 第12章“探索式测试”
● 第13章“其他类型的测试”
第Ⅵ部分:测试自动化
我们看到越来越多的团队在设法想要做成测试自动化。然而,对于多数团队来说,自动化测试产生的那些偶发性失败调查起来是非常耗时的。花费在每个失败上的时间(成本)可能远超过测试本身的价值。自动化测试的陷阱非常多。这部分我们举例说明了让测试的技术债可视化的方法。我们探讨了可有效利用测试金字塔的不同方式,协助你思考如何规划自动化。我们介绍了几个从不同的视角看待自动化的备选金字塔模型。你将学到围绕最佳可靠性和维护简易性设计自动化测试的方法。这部分也列举将测试自动化扩展到一家大型企业全公司范围的实例。
第Ⅵ部分的章节包括:
● 第14章“测试中的技术债”
● 第15章“自动化金字塔”
● 第16章“测试自动化设计模式和方法”
● 第17章“选择测试自动化方案”
第Ⅶ部分:你的环境是什么?
你们的敏捷测试方式必然取决于你们的环境上下文。你在为大型企业级系统工作吗?或许你是新接手移动应用或嵌入式软件的测试。或许你们团队被要求要找到好办法去测试支持业务做出决策的数据。你是否也曾纠结过敏捷如何适用于测试受监管软件?最终,我们还探讨了测试和DevOps运动的协同。这部分的章节涵盖的领域很广泛,所以我们也讲述了一些来自于工作在这些领域的人们的故事。有些章节可能不一定适用于你今天的工作环境,但明天呢,谁知道呢?
● 第18章“企业级敏捷测试”
● 第19章“分布式团队的敏捷测试”
● 第20章“移动和嵌入式系统的敏捷测试”
● 第21章“监管环境中的敏捷测试”
● 第22章“数据仓库和商业智能系统的敏捷测试”
● 第23章“测试和DevOps”
第Ⅷ部分:实践中的敏捷测试
作为本书的收尾,我们探讨了团队如何可视化质量和测试,并对那些能增强你们信心做出发布决定的敏捷测试实践进行了总结。建立团队的共同愿景是成功的关键,我们还分享了有助于将测试活动带入整个团队的一个模型。如果你感觉有点不知所措,不确定该从哪里开始看,那就先阅读这些章节吧:
● 第24章“可视化你的测试”
● 第25章“综述”
此书有两篇附录:附录A“Page对象实战实例”;附录B“诱导初学者”。
其他元素
考虑到团队使用的敏捷实践和方法的范围非常广,我们试着尽可能使用通用术语。为确保我们跟你有共同语言,我们还提供了所用术语的术语表。
你会发现书中某些书页边缘有一些小图标,那是我们想要吸引你注意某个特定的实践。在第1章和第25章,你能找到所有六种图标。在下一段落的边上,你就能看到表示学习的图标。
我们期待着你想要学习更多有关这些实践、技术和工具的知识。请翻阅参考书目章节的参考书籍、网站、文章和博客。我们按对应的部分进行了编排,以便你在阅读时能轻松地找到更多信息。书中直接提到的资源,都已按字母顺序罗列在参考清单里,以便查阅。
《敏捷软件测试》的思维导图概览可从本书配书网站(www.agiletester.com)获取,方便你在没有读过那本书的情况下,能大概知道它讲了什么。
实验!
好几年前,Linda Rising鼓励我们小步实验、评估结果、持续迭代地解决问题,并达成目标。如果你发现书中有些内容讲得不错,可能对你或你们团队有帮助,那就给它机会尝试一两个迭代。通过回顾来检查它是否有帮助,必要的话,进行调整。即使它不起作用,你也会有所了解,然后可以再尝试点不同的东西。我们祝愿你能够从书页之中发现很多可以尝试的实验。
作者简介
Janet Gregory是敏捷质量流程咨询和培训公司DragonFire的创始人。Janet热衷于帮助团队构建高质量的系统。作为一名教练和测试人员,Janet近十五年来将敏捷实践引入各种规模的公司,帮助用户和测试人员理解他们的敏捷角色。Janet经常在敏捷和测试软件会议上发表演讲,是敏捷测试社区的一名主要贡献者。
Lisa Crispin是一位经验丰富的敏捷测试从业者和教练,她定期举办敏捷测试研讨会,经常为敏捷软件出版物撰稿。Lisa十分享受加盟优秀敏捷团队与他人携手构建高质量软件的过程。从1982年至今,Lisa曾在多个行业的软件团队担任多个角色。从2000年首次加入敏捷团队开始,Lisa一直孜孜不倦地向其他团队和从业者学习,不断充实和提高自己的技术能力。
目录
第Ⅰ部分 简 介
第1章 敏捷测试有了什么样的发展 3
第2章 组织文化的重要性 7
2.1 时间投入 8
2.2 学习型文化的重要性 11
2.3 培养学习型文化 11
2.4 透明度和反馈周期 13
2.5 教育组织 13
2.6 测试人员管理 15
2.7 总结 15
第Ⅱ部分 为更好地测试而学习
第3章 角色和能力 19
3.1 能力与角色 20
3.2 T型技能集 22
3.3 泛才化专家 26
3.4 招募正确的人才 28
3.5 测试人员的入职 29
3.6 总结 29
第4章 测试的思维技能 31
4.1 引导 32
4.2 问题解决 32
4.3 给予和接受反馈 33
4.4 学习业务领域知识 34
4.5 辅导和倾听的技能 35
4.6 差异化思维 36
4.7 组织 37
4.8 协作 38
4.9 总结 39
第5章 技术意识 41
5.1 用示例指导开发 41
5.2 自动化和编码技能 42
5.3 常规技术能力 43
5.4 开发环境 44
5.5 测试环境 44
5.6 持续集成和源码控制系统 45
5.7 测试质量属性 47
5.8 测试设计技术 48
5.9 总结 49
第6章 如何学习 51
6.1 学习方式 51
6.2 学习资源 53
6.2.1 大会、课程、聚会和协作 53
6.2.2 出版物、播客和在线社区 55
6.3 学习的时间 56
6.4 帮助其他人学习 58
6.5 总结 60
第Ⅲ部分 计划——不要忘了全局
第7章 计划的精度层级 63
7.1 不同的观点 63
7.1.1 产品版本层 64
7.1.2 特性层 66
7.1.3 故事层 69
7.1.4 任务级 69
7.2 回归测试计划 70
7.3 可视化你正在测试什么 70
7.4 总结 72
第8章 使用模型帮助制定计划 73
8.1 敏捷测试象限 73
8.1.1 针对Q1测试的计划 76
8.1.2 针对Q2测试的计划 76
8.1.3 针对Q3测试的计划 76
8.1.4 针对Q4测试的计划 77
8.2 针对此象限的质疑 77
8.3 使用其他模型对计划的影响 81
8.4 针对测试自动化的计划 82
8.5 总结 83
第Ⅳ部分 商业价值的测试
第9章 你在做正确的产品吗? 87
9.1 从“为什么”开始 87
9.2 客户契约工具 88
9.2.1 影响地图 88
9.2.2 故事地图 90
9.2.3 7个产品维度 92
9.3 用于尽早探索的更多工具或
技术 95
9.4 在正确的事项上投资 95
9.5 总结 96
第10章 拓展测试人员的思维:这是我
的工作吗? 97
10.1 这是谁的工作? 97
10.1.1 业务分析技能 97
10.1.2 用户体验设计能力 99
10.1.3 文档技能 100
10.2 积极主动 100
10.3 总结 101
第11章 获取实例 103
11.1 使用实例的威力 103
11.2 用实例指导开发 105
11.2.1 ATDD 106
11.2.2 BDD 108
11.2.3 SBE 108
11.3 在哪里获取实例 109
11.4 使用实例的好处 111
11.5 使用实例的陷阱 112
11.5.1 陷入细节 112
11.5.2 缺乏投入 112
11.5.3 过多的回归测试 113
11.5.4 还不够清楚 113
11.6 使用实例去指导编码的原理 113
11.7 总结 114
第Ⅴ部分 研究型测试
第12章 探索式测试 117
12.1 制定测试规程 119
12.2 形成测试规程思路 121
12.2.1 以人物角色进行探索 121
12.2.2 边漫游边探索 123
12.2.3 其他思路 124
12.3 测试规程管理 124
12.3.1 基于会话的测试管理 125
12.3.2 基于线索的测试管理 126
12.4 分组探索 129
12.5 记录探索式测试会话的结果 131
12.6 敏捷测试的哪些地方适用
探索式测试 133
12.7 总结 134
第13章 其他类型的测试 135
13.1 如此多的测试需求 135
13.2 并发测试 137
13.3 国际化和本地化 138
13.4 回归测试的挑战 141
13.5 用户验收测试 142
13.6 A/B测试 142
13.7 用户探索式测试 144
13.8 总结 145
第Ⅵ部分 测试自动化
第14章 测试中的技术债 149
14.1 使其可见 150
14.2 整个团队共同解决最严重的
问题 153
14.3 总结 155
第15章 自动化金字塔 157
15.1 金字塔原型 157
15.2 替代形式的金字塔模型 158
15.3 放弃自动化测试的危险 161
15.4 使用金字塔去展示不同的
维度 163
15.5 总结 165
第16章 测试自动化设计模式和
方法 167
16.1 全员参与 167
16.2 正确的开始 168
16.3 设计原则和模式 169
16.3.1 通过API进行测试
(服务层) 169
16.3.2 通过用户界面进行测试 171
16.4 测试维护 174
16.5 总结 176
第17章 选择测试自动化方案 177
17.1 针对转型团队的解决方案 177
17.2 和整个团队一起应对新的
自动化挑战 180
17.3 团队就自动化解决方案达成
共识 182
17.4 多少自动化才够充分? 183
17.5 针对工具选择的协作解决
方案 184
17.6 将自动化范围扩大到大型
组织 185
17.7 其他自动化注意事项 187
17.8 总结 187
第Ⅶ部分 你的环境是什么?
第18章 企业级敏捷测试 193
18.1 我们所说的“企业”是指
什么? 193
18.2 “扩展”敏捷测试 194
18.3 协调多个团队 198
18.4 一致的工具 202
18.4.1 通过持续集成进行协调 202
18.4.2 版本控制方法 203
18.4.3 测试覆盖 204
18.5 依赖的管理 204
18.5.1 与第三方合作伙伴一起
工作 204
18.5.2 让客户参与到大型
组织中 206
18.6 冲出交付团队之外的好处 207
18.7 总结 207
第19章 分布式团队的敏捷测试 209
19.1 为什么不在同一地点? 211
19.2 共性的挑战 211
19.2.1 文化问题 211
19.2.2 语言 212
19.2.3 时区 213
19.2.4 依赖 213
19.2.5 计划 213
19.3 应对策略 215
19.3.1 整合团队 215
19.3.2 沟通和协作 216
19.3.3 通过测试进行协作 217
19.4 近岸外包测试 218
19.5 分布式团队工具思想 222
19.5.1 沟通工具 222
19.5.2 协作工具 222
19.6 总结 224
第20章 移动应用和嵌入式系统的
敏捷测试 225
20.1 相似,但不同 226
20.2 测试是关键 227
20.3 敏捷方法 228
20.4 总结 232
第21章 监管环境中的敏捷测试 233
21.1 “缺乏文档”的神话 233
21.2 敏捷与合规性 233
21.3 总结 237
第22章 数据仓库和商业智能系统的
敏捷测试 239
22.1 商业智能或数据仓库的测试
有什么独特性? 239
22.2 使用敏捷原则 241
22.3 数据——关键资产 242
22.4 大数据 245
22.5 总结 247
第23章 测试和DevOps 249
23.1 DevOps简介 249
23.2 DevOps和质量 250
23.3 测试人员如何增加DevOps的
价值 255
23.4 总结 258
第Ⅷ部分 实践中的敏捷测
以下为对购买帮助不大的评价