在过去的十几年中,软件测试技术的演进突破了曾经的局限,发生了翻天覆地的变化,在新的领域有了更广泛的应用场景。
本书从现代软件测试技术的视角,深入探讨近年来涌现和快速发展的测试技术,以及在快速变化的技术环境中依然保持高度相关性和实践价值的方法论与技巧。本书内容主要包括现代软件测试的工程理念,测试策略、分析和设计,测试与系统架构的关系,各项测试技术精要,自动化测试框架的设计与实现,AI产品、大数据产品、区块链、图形图像相关测试技术,以及大模型赋能下的测试智能化等。
我们希望这是一本软件测试技术领域的“百科全书”,无论你是希望在专业领域不断精进的技术专家,还是希望打下扎实基础的入门读者,都能从本书中汲取宝贵的经验。
目 录
第1章 现代软件测试的工程理念 1
1.1 软件的可测试性 1
1.1.1 可测试性的定义 1
1.1.2 可测试性引发的问题 2
1.1.3 可测试性的三个核心观点 4
1.1.4 可测试性的四个维度 5
1.1.5 不同级别的可测试性与工程实践 8
1.2 测试左移和开发者自测 13
1.3 测试右移的工程实践 21
1.4 DevSecOps:从安全测试到安全工程 34
1.5 DevPerfOps:从性能测试到性能工程 41
第2章 软件测试策略 46
2.1 什么是测试策略 46
2.2 常用的测试策略 50
2.3 测试策略的制定方法 62
2.4 测试风险分析 81
2.5 不同研发模式下的测试分层 88
第3章 测试分析和测试设计 93
3.1 测试分析和测试设计概述 93
3.2 测试分析的方法 95
3.3 测试设计的方法 107
第4章 软件测试与系统架构 129
4.1 典型应用系统架构与测试关键指标 129
4.2 缓存架构及其对缓存测试的影响 134
4.3 异步消息驱动架构及其对测试的影响 137
4.4 负载均衡架构及灰度发布对测试的影响 139
4.5 分布式数据库架构及高可用性测试 142
4.6 微服务架构及其对测试的影响 145
4.7 大数据架构及机器学习对测试的影响 148
第5章 Web测试技术精要 151
5.1 Web测试技术概述 151
5.1.1 Web测试技术要点 151
5.1.2 Web自动化测试技术 155
5.2 基于编程语言的Web测试框架 157
5.3 基于编程语言的测试代码的组织 169
5.4 Web自动化测试的痛点 180
5.5 高效执行自动化测试 181
5.6 稳定的自动化测试 184
5.6.1 基于页面或元素状态的等待 184
5.6.2 重试机制 186
5.7 视觉验证测试 186
5.8 自我修复测试 193
5.9 无代码/低代码自动化测试 201
第6章 移动端测试技术精要 204
6.1 移动端测试基础技能 204
6.2 移动端测试进阶 208
6.3 移动端测试的左移和右移 224
第7章 接口测试技术精要 226
7.1 接口测试概述 226
7.2 接口测试关键技术 227
7.3 自动化接口测试关键技术 243
7.4 接口测试的新技术 244
7.5 接口测试平台化 246
7.6 测试右移下的接口测试 249
第8章 代码级测试技术精要 250
8.1 代码级测试技术概述 250
8.2 静态代码分析技术 251
8.3 代码评审技术 263
8.4 契约测试技术 274
8.5 单元测试技术 286
8.6 智能测试技术 301
第9章 性能测试技术精要 312
9.1 性能市场现状 312
9.2 RESAR性能工程概述 313
9.3 性能测试阶段 329
9.4 性能监控分析逻辑 338
9.5 性能分析案例 391
第10章 可靠性测试技术精要 420
10.1 可靠性测试概述 420
10.2 可靠性设计验证 426
10.3 可靠性负向验证 431
第11章 自动化测试框架设计和实现 435
11.1 自动化测试框架概述 435
11.2 自动化测试框架类型 437
11.3 自动化测试框架的通用实现原理 444
11.4 自动化测试框架开发设计指南 448
第12章 测试基础设施能力建设 462
12.1 测试执行环境架构设计基础 462
12.2 测试执行环境架构设计进阶 466
12.3 实战案例:大型全球化电商网站的测试基础架构设计 471
第13章 软件测试新实践和新方法 477
13.1 测试驱动开发 477
13.2 精准测试 483
13.2.1 精准测试的技术实现 484
13.2.2 精准测试的前沿探索 487
13.3 代码注入测试 489
13.4 混沌工程 512
13.5 变异测试 518
13.6 探索式测试 527
13.7 微服务测试 535
第14章 智能化测试技术 557
14.1 从测试视角看AI 557
14.2 基于数据的智能化测试 561
14.3 基于目标的智能化测试 564
14.4 智能化测试的实践 570
第15章 AI产品测试技术 574
15.1 AI产品测试技术概述 574
15.2 AI产品的功能测试 576
15.3 AI产品的非功能测试 583
第16章 大数据产品测试技术 591
16.1 大数据基础知识 591
16.1.1 初识大数据 591
16.1.2 什么是大数据 592
16.1.3 主流大数据架构和产品 593
16.2 大数据产品测试与传统软件测试 594
16.3 测试数据的准备 597
16.4 大数据产品的功能性测试 602
16.5 大数据产品的非功能性测试 610
第17章 区块链测试技术 618
17.1 区块链概述 618
17.2 区块链测试技术总览 620
17.3 DApp测试 626
17.4 分布式共识测试 651
17.5 智能合约测试 685
17.6 P2P网络测试 731
第18章 图形图像相关应用的测试技术实践 765
18.1 机器视觉产品的测试概述 765
18.2 AI技术在画质增强方向的产品 767
18.3 AI技术在人脸识别方向的产品 780
第19章 大模型赋能下的测试智能化 790
19.1 大模型和大语言模型 790
19.2 大模型时代的智能化测试 795
19.3 大模型智能化测试的探索实战 799
第20章 XRunner应用案例 809
20.1 信息系统领域性能保障痛点 809
20.2 解决思路 812
20.3 案例 815
20.4 实践后的效果对比与总结 818
随着云计算、人工智能等前沿科技的蓬勃发展,软件架构与软件测试技术持续革新,这使得传统测试模式在复杂系统架构和多元应用场景的双重挑战下渐显乏力,测试的精准化、高效化与智能化已成为行业发展的关键诉求。本书立足现代测试技术前沿,深度融合前沿理论与丰富的实践经验,全方位、系统性地梳理了从关键基础理念到新兴技术测试的核心要点,构建了全面、深入的知识架构与实操策略,是软件测试领域极具指导意义和实践价值的专业指南,对从业人员的技术提升及企业推进全面数字化转型具有较强的指导性。
中国信息通信研究院云计算与大数据研究所副总工程师 陈屹力
在这个软件开发持续快速迭代的时代,软件测试已不再是一个孤立的环节,而是整个开发过程中的重要一环。如何在日益复杂和动态的开发环境中实施高效且科学的测试,也成为每位软件测试工程师及开发团队必须面对的挑战。本书深入探讨了软件测试的最新技术、方法和实践,从基础的测试理论到前沿的自动化测试、性能测试,再到持续集成与敏捷开发下的测试策略,内容涵盖软件测试的各个维度,可以帮助每位从业者更好地理解和掌握现代软件测试技术,提升软件测试工作的专业性与前瞻性。
北京大学讲席教授 欧洲科学院外籍院士,ACM/IEEE/AAAS会士 谢涛
建议所有渴望深度洞悉现代软件测试技术的读者,不要错过本书。本书汇聚了超过20位行业专家的智慧结晶,将专家们丰富的经验倾囊相授。书中全方位拆解测试的各个细分领域,既有前沿理论,又搭配实用技术。不管你是初涉测试领域的新手,还是寻求测试技术精进的行家,本书都能带你抽丝剥茧,系统掌握核心要点,堪称软件测试领域的佳作。
字节跳动用户增长QA负责人 齐彦松
随着数字化和智能化的持续推进和普及,软件的数量在快速增加,规模不断扩大,复杂度也在快速提升,这不仅给软件测试从业者带来了全新的机遇,也提出了更高的挑战。在这样的背景下,系统学习现代软件测试的知识体系和实践方法显得尤为重要。
在本书中,可以随作者们一起领略测试的艺术,探寻测试的实践,掌握测试的技巧。无论是软件可测试性的定义、测试策略的制定,还是自动化测试框架的设计、测试左移与右移的实践,本书都为你一一详解。本书内容非常丰富,从传统瀑布模型到敏捷开发,从性能测试到智能化测试,从移动端测试到区块链测试,对得起“权威指南”这一名称。
无论你是软件测试的初学者,还是资深人士,都能在本书中找到提升自我、突破难关的宝贵资源。相信这本书可以成为你在软件测试旅程中的得力伙伴,帮助你在复杂多变的软件世界中坚守好质量关。
腾讯研发效能资深技术专家 张乐