本书内容聚焦于“现代”软件测试技术,既包括近几年颇受关注的前沿软件测试技术,也包括一些“老技术”在新场景下的应用。作者希望将这些技术剖析清楚,在此基础上给出一些常见的实践案例或应用场景,让读者深入理解这些软件测试技术的来龙去脉,并能够将其快速应用到实践中。本书分为7章,主要内容包括软件测试新理念、软件测试新方法、软件测试新技术、软件测试基础设施、软件测试常见困惑、软件测试行业案例等。
本书内容通俗易懂,案例丰富,既适合软件测试从业人员(测试工程师、测试开发工程师、测试架构师、测试经理、测试总监等)阅读,也适合软件开发人员、架构师和企业管理人员阅读,还适合作为高等院校相关专业的教学用书。
全彩色印刷,内容聚焦于“现代的”软件测试中的前沿技术和新方法的应用,通过新技术和新方法的应用,体现测试技术之美!
前沿的新技术:ChatGPT(大模型)实现自动化测试、机器学习在测试中的应用、大数据测试、低代码测试、混沌工程、微服务测试。
新方法的应用:流量回放、精确测试、变异测试、全链路压测、安全测试、测试中台。
● 人工智能等前沿新技术助力软件测试人员提高测试效率和准度,发现一些传统测试技术难以发现的软件问题;
● 契约测试、探索式测试、低代码测试、精准测试、流量回放等新方法在新场景中的应用,能帮助测试人员更好地解决软件测试中的难点;
● 新实践案例,能帮助测试人员解决经常面临的各种各样的挑战,例如,测试资源不足、测试数据缺乏、测试用例的维护难度大等,使测试人员获得解决问题的成就感。
茹炳晟,腾讯 Tech Lead,腾讯研究院特约研究员,中国计算机学会技术前线委员会研发效能SIG 主席,《软件研发效能度量规范》标准核心编写专家,中国商业联合会互联网应用工作委员会智库专家,腾讯云、阿里云、华为云“具价值专家”,《测试工程师全栈技术进阶与实践》的作者。自媒体号“茹炳晟聊软件研发”的主理人。
吴骏龙,某大型互联网公司质量与效能团队技术总监,腾讯云“具价值专家”,曾任 Wish中国测试总监、阿里巴巴本地生活高级测试经理。在软件质量体系、服务容量保障、服务稳定性建设、软件研发效能等领域深耕多年,善于通过创新手段解决工程难题。他是测试行业优秀的实践者和前沿技术的传播者,多次受邀参加 QCon、QECon、CCF 等行业峰会并进行演讲。
刘冉,现任Thoughtworks软件测试和质量专家,具有 20 年软件开发和测试工作经验;对Web 应用测试、服务器性能测试、移动测试、安全测试、敏捷测试、测试驱动开发、测试分层一体化解决方案,以及代码管理、持续集成、持续交付和 DevOps 等有深入研究,曾是多个行业峰会的演讲嘉宾。
第 1章 软件测试新理念 1
1.1 测试左移 2
1.1.1 传统瀑布模型下软件测试的挑战 2
1.1.2 测试左移的早期实践 3
1.1.3 当前软件测试工程化的困局与解法 4
1.1.4 测试左移的进阶实践 7
1.1.5 测试左移的深度思考 9
1.1.6 总结 9
1.2 测试右移 9
1.2.1 A/B测试 9
1.2.2 灰度发布 10
1.2.3 线上监控 12
1.2.4 用户体验分析 12
1.2.5 总结 14
1.3 可测试性设计 14
1.3.1 可测试性的定义 15
1.3.2 可测试性差引发的问题 15
1.3.3 可测试性的3个核心观点 17
1.3.4 可测试性的4个维度 18
1.3.5 不同级别的可测试性与工程实践 21
1.3.6 总结 25
1.4 测试分析与测试设计 25
1.4.1 什么是测试分析与测试设计 25
1.4.2 测试分析与测试设计的分类 26
1.4.3 基于用户行为和业务场景的测试分析与测试设计 28
1.4.4 测试分析与测试设计的未来 28
第 2章 软件测试新方法 30
2.1 契约测试 31
2.1.1 什么是契约测试 31
2.1.2 契约测试存在的问题 32
2.1.3 契约测试的主要实践 32
2.1.4 总结 37
2.2 测试驱动开发 38
2.2.1 TDD是什么 38
2.2.2 TDD怎么做 40
2.2.3 “TDD已死”? 44
2.2.4 总结 46
2.3 探索式测试 46
2.3.1 探索式测试的历史与简介 46
2.3.2 探索式测试的现状 47
2.3.3 探索式测试在敏捷开发中的实践 48
2.3.4 探索式测试的产出度量 50
2.3.5 总结 50
2.4 低代码测试 50
2.4.1 低代码测试的切入点 51
2.4.2 低代码GUI测试 51
2.4.3 低代码API测试 55
2.4.4 总结 56
2.5 混沌工程 57
2.5.1 混沌工程的理念 57
2.5.2 混沌工程的发展历程 57
2.5.3 混沌工程的价值 58
2.5.4 核心观点和常见误区 59
2.5.5 实施混沌工程的原则 61
2.5.6 实施混沌实验的步骤 62
2.5.7 混沌工程常用工具和使用演示 63
第3章 软件测试新技术(上) 71
3.1 流量回放 72
3.1.1 使用GoReplay和Diffy进行流量回放 73
3.1.2 使用jvm-sandbox-repeater进行流量回放 75
3.1.3 基于Service Mesh进行流量回放 76
3.1.4 总结 78
3.2 精准测试 78
3.2.1 精准测试的技术实现 79
3.2.2 精准测试的前沿探索 81
3.2.3 总结 82
3.3 模糊测试 82
3.3.1 模糊测试介绍 82
3.3.2 模糊测试实施步骤 83
3.3.3 模糊测试实例 84
3.3.4 展望 85
3.4 变异测试 86
3.4.1 单元测试代码覆盖率的局限性 86
3.4.2 变异测试的基本概念 86
3.4.3 变异测试是新技术吗 86
3.4.4 实施变异测试的步骤 87
3.4.5 主流变异测试工具用法简介 88
3.4.6 变异测试的工程化实践 94
3.4.7 变异测试在接口测试中的应用与探索 95
3.5 服务虚拟化 96
3.5.1 服务虚拟化介绍及面对的问题 96
3.5.2 解决方案 97
3.5.3 服务虚拟化实例 —— Hoverfly 100
3.5.4 总结 102
第4章 软件测试新技术(下) 103
4.1 全链路压测 104
4.1.1 压测数据隔离 104
4.1.2 压测模型构建 106
4.1.3 应用服务改造 108
4.1.4 压测流量制造 108
4.1.5 风险控制 109
4.1.6 组织协作 110
4.1.7 总结 110
4.2 安全测试新技术 110
4.2.1 安全测试的基本方法 111
4.2.2 安全测试的效果度量 111
4.2.3 软件安全漏洞的分类 113
4.2.4 安全测试的分类 114
4.2.5 不同类型项目的安全测试 116
4.2.6 DevSecOps:从安全测试到安全工程 117
4.3 移动测试新技术 123
4.3.1 移动测试现状 123
4.3.2 移动应用的测试策略与测试架构 123
4.3.3 移动测试的分类与框架 126
4.3.4 移动测试的未来 128
4.4 大数据测试 128
4.4.1 大数据的特征 129
4.4.2 大数据测试的策略 130
4.4.3 大数据测试的步骤 131
4.4.4 大数据测试的挑战 132
4.4.5 总结 132
4.5 人工智能测试 132
4.5.1 人工智能应用概述 133
4.5.2 传统软件测试技术的局限性 133
4.5.3 机器学习在 GUI 自动化测试执行领域的应用与创新 134
4.5.4 机器学习在测试设计领域的应用与创新 135
4.5.5 机器学习在测试结果分析领域的应用与创新 138
4.5.6 总结 139
4.6 ChatGPT在自动化测试领域的应用 139
4.6.1 ChatGPT简介 139
4.6.2 ChatGPT和自动化测试 140
4.6.3 使用ChatGPT生成基于Cucumber的GUI自动化测试用例 140
4.6.4 ChatGPT在自动化测试应用中的一些问题 143
4.6.5 总结 143
第5章 软件测试基础设施 144
5.1 测试环境 145
5.1.1 容器化的“One-Box”方案 145
5.1.2 容器化的“软隔离”方案 146
5.1.3 测试环境的稳定性巡检 148
5.1.4 总结 148
5.2 测试执行环境 149
5.2.1 测试执行环境的痛点 149
5.2.2 基于Selenium Grid的解决方案 149
5.2.3 测试基础架构的基本概念 154
5.2.4 测试基础架构的设计 155
5.2.5 测试基础架构的选型原则 161
5.3 测试数据新知 162
5.3.1 测试数据的现状 162
5.3.2 测试数据的分类 162
5.3.3 测试数据的未来 164
5.4 测试中台 164
5.4.1 统一测试执行服务 165
5.4.2 统一测试数据服务 165
5.4.3 测试执行环境准备服务 166
5.4.4 被测系统部署服务 166
5.4.5 测试报告服务 166
5.4.6 全局测试配置服务 167
5.4.7 大型全球化电商网站测试中台的使用示例 168
第6章 软件测试常见困惑 170
6.1 测试人员和开发人员的理想比例是多少? 171
6.2 系统出现漏测,这个“锅”应该谁来背? 172
6.3 测试工程师如何应对“一句话需求”? 173
6.4 测试工程师必须要有开发能力吗? 174
6.5 编写测试用例文档花费了大量的时间和精力,是否真的值得? 174
6.6 现在很多公司都在去测试化,我们究竟还要不要专职的测试人员? 175
6.7 质量与效能,鱼和熊掌真的不能兼得吗? 176
6.8 大规模敏捷团队中有哪些测试问题和痛点? 177
6.8.1 背景介绍 177
6.8.2 问题和痛点 177
6.8.3 总结 181
第7章 软件测试行业案例 183
7.1 某大型电商公司推动质量中台建设的成功经验与失败教训 184
7.1.1 背景 184
7.1.2 推动质量基础设施建设所走过的弯路 185
7.1.3 质量中台建设 186
7.1.4 总结 186
7.2 某“头部”券商数字化转型中的软件测试实践探索 186
7.2.1 背景 186
7.2.2 数字化转型中的测试技术应用 187
7.2.3 总结 191
7.3 AI技术在质量领域的实践 191
7.3.1 背景 192
7.3.2 AI应用场景 192
7.3.3 落地效果 198
7.3.4 未来方向与展望 201