本书旨在讲述如何通过持续测试交付一个功能完善、质量完美的系统,满足测试人员快速交付、快速迭代的需求。本书首先概述了什么是持续测试,以及持续测试和自动化测试的异同,介绍了如何提升持续测试的效率和效果,然后讨论了如何通过持续测试中的非功能性测试保障软件的可靠性、可用性、可移植性、性能效率等质量特性,如何通过建立质量门禁保障所交付系统的质量,并通过自动化提升质量效能,最后介绍了持续测试技术的发展,讨论了如何通过有效的度量促进质量的成熟,以及持续测试下测试工程师的自我修养。
本书适合测试人员阅读。
第 1章 持续测试概述 1
1.1 概述 1
1.2 测试的生命周期 3
1.3 测试用例也是工程实践 4
1.3.1 黑盒测试用例设计方法 6
1.3.2 白盒测试用例设计方法 12
1.3.3 测试用例也要分级 13
1.3.4 测试用例的形式 15
1.4 测试细分 17
1.4.1 按照开发阶段划分 18
1.4.2 按照测试实施组织划分 18
1.4.3 按照测试技术划分 19
1.4.4 测试左移 19
1.4.5 测试右移 21
1.4.6 测试左移、测试、测试右移的关系 22
1.5 质量模型和测试 24
1.6 小结 28
第 2章 自动化测试是持续测试的必要条件 29
2.1 分层自动化测试 29
2.2 静态测试 31
2.3 单元测试 33
2.4 自动化测试的设计模式 35
2.4.1 自动化测试的PageObject设计模式 36
2.4.2 自动化测试的ScreenPlay设计模式 48
2.5 UI自动化新思路 49
2.6 接口测试和接口自动化测试 54
2.6.1 接口测试 54
2.6.2 接口自动化测试的价值 56
2.6.3 与接口自动化测试相关的实现技术 57
2.6.4 如何开始接口测试 59
2.7 测试驱动开发 60
2.8 小结 63
第3章 持续测试中的非功能测试 64
3.1 性能测试 64
3.1.1 性能测试工具概述 65
3.1.2 Locust和LoadRunner 68
3.1.3 使用Locust完成性能测试 72
3.1.4 监控工具和结果分享分析 85
3.1.5 性能测试实践方案 87
3.2 全链路压测 90
3.2.1 全链路压测的本质 90
3.2.2 全链路压测是技术驱动的测试 92
3.3 兼容性测试矩阵 95
3.3.1 获取兼容性测试因素 95
3.3.2 兼容性矩阵设计 96
3.4 混沌工程和故障演练 97
3.4.1 从故障制造到混沌工程 97
3.4.2 故障演练的实施要点 99
3.5 小结 101
第4章 质量门禁和流水线 102
4.1 质量门禁 102
4.1.1 开发阶段的质量门禁 103
4.1.2 测试阶段的质量门禁 104
4.1.3 上线阶段的质量门禁 105
4.2 代码审查门禁设置 105
4.2.1 代码评审方法论 105
4.2.2 代码评审的工具支持 108
4.3 SonarQube技术卡点 109
4.3.1 部署SonarQube 110
4.3.2 在本地开发环境中集成SonarQube扫描服务 111
4.3.3 在Maven项目中集成SonarQube扫描服务 114
4.3.4 在Jenkins中集成SonarQube 115
4.4 小结 118
第5章 测试技术和持续测试 119
5.1 契约测试 119
5.2 流量录制技术 121
5.2.1 Nginx的插件 123
5.2.2 Sandbox 123
5.2.3 TcpCopy 124
5.2.4 GoReplay 125
5.2.5 技术本质 125
5.3 测试代码生成 126
5.3.1 基于二进制文件的测试代码生成 126
5.3.2 基于通用文件的测试代码生成 133
5.4 精准测试 136
5.5 测试平台化 138
5.6 智能化测试 140
5.6.1 开源的智能化单元测试框架 145
5.6.2 开源的智能化UI测试框架 150
第6章 有效的度量促进质量的成熟 153
6.1 正确的质量度量 153
6.2 有效的质量运营 160
6.3 小结 163
第7章 持续测试下测试工程师的自我修养 164
7.1 测试理论基础的必要性 164
7.2 接纳并尝试新技术 167
附录A 性能测试并发用户数估算方法 170
附录B HTTP代理工具 173
附录C 关于HTTP应知应会的知识 178
附录D EvoSuite的配置和使用 185
附录E nmon 194
附录F Postman 200
本书旨在讲述如何通过持续测试交付一个功能完善、质量完美的系统,满足测试人员快速交付、快速迭代的需求。本书首先概述了什么是持续测试,以及持续测试和自动化测试的异同,介绍了如何提升持续测试的效率和效果,然后讨论了如何通过持续测试中的非功能性测试保障软件的可靠性、可用性、可移植性、性能效率等质量特性,如何通过建立质量门禁保障所交付系统的质量,并通过自动化提升质量效能,最后介绍了持续测试技术的发展,讨论了如何通过有效的度量促进质量的成熟,以及持续测试下测试工程师的自我修养。
本书适合测试人员阅读。
全书以持续测试为主线,系统探讨了自动化测试在持续测试过程中的作用,详细介绍了非功能性测试和混沌工程,还讲述了持续测试中的很多前沿实践。本书还对质量运营和测试工程师的自我修养展开了讨论,系统展示了持续测试的知识全景图。强烈推荐本书。
——茹炳晟
腾讯微信支付技术主管,腾讯研究院特约研究员,中国计算机学会TF 研发效能 SIG主席
从测试左移、测试、测试右移的关系,到持续测试中自动化测试的各个层面,再到非功能测试的各项专项测试,最后延伸到测试的度量和质量门禁,本书既有对理论知识的解析,又有各种技术的介绍,还有落到组织层面的具体实践,几乎可以作为测试管理的手册。
——徐琨
北京云测总裁
本书的内容详尽,从测试理念和方法,讲到自动化测试、非功能测试等测试技术;从DevOps持续交付流水线及其质量门禁,讲到契约测试、流量录制、精准测试、智能测试等实践;还包括对质量度量、测试工程师自我提升等内容的精彩阐述。本书的出版可谓恰逢其时,很好地结合了时代发展的特点和研发人员的诉求,本书对想在测试领域持续提升技能或者对该领域感兴趣的读者有很大帮助。
——张乐
腾讯技术工程事业群 DevOps与研发效能资深技术专家
持续测试是 DevOps 开发流程的重要组成部分。在整个项目交付中,不仅执行自动化测试,还需要持续地对业务和技术风险进行评估、分析,以保障业务连续、稳定运行。通过阅读本书,我们可以掌握持续测试的实施步骤,建立持续测试体系,结合自身测试修养,形成自己团队的测试文化。
—白连东,PerfMa公司技术VP,IT东方会联合发起人
对于持续集成与持续发布,要配合持续测试才能完成软件研发活动的闭环,才能有效地保证软件价值的顺利交付。本书深入浅出地介绍了测试活动各个方面的道、法、术、器,特别提出通过测试左移与测试右移实现全环节的质量内建。本书能为关注软件质量的读者带来启发。
—冯斌,ONES公司联合创始人兼CTO
只有持续、快速地交付有价值且有质量的产品或者服务,才能应对剧烈的变化和竞争。要实现这一点,持续测试是至关重要的一环。本书系统阐述了持续测试的重要性、方法和流程,是软件研发团队实践持续测试的参考指南,推荐每一位测试管理人员或者项目管理人员阅读。
—王春生,禅道项目管理软件创始人
作者在测试领域耕耘十几年,在自动化测试和接口测试方面的功底在本书中得到了充分体现,而且本书涉及目前主流的测试技术,从全链路压测、流量录制技术、精准测试、智能化测试到测试平台化、混沌工程等。本书对测试工程师的工作和自我提升都有良好的参考价值。
—朱少民,QECon大会发起人,《全程软件测试》
《敏捷测试:以持续测试促进持续交付》作者
在测试技术和质量保障方面,陈磊实践了十几年,非常高兴看到陈磊在这个领域的深入思考和经验总结。持续测试能帮助我们在早期就发现问题,解决问题,大幅度降低交流成本和软件修复成本,提高软件开发和维护的效率。强烈推荐本书!
—邹欣,CSDN副总裁
作者将软件测试和软件质量保障理论与自己丰富的实践经验相结合,并尝试以国际标准和国家标准、行业规范等作为质量保障的基础,精心编写了本书。作者以软件测试人员的身份讲述了很多新概念和新方法,让读者不仅能从本书中系统化地了解软件测试的理念、理论、技术和方法,还能从本书中获得宝贵的实践经验,从而更好地规避风险,更好地完成质量保障工作。
—周震漪,ISTQB中国分会(CSTQB) 副理事长,TMMi基金会中国分会副理事长
人民邮电出版社是工业和信息化部主管的大型专业出版社,成立于1953年10月1日。人民邮电出版社坚持“立足信息产业、面向现代社会、传播科学知识、服务科教兴国”的出版宗旨,不断发展壮大,成为集图书、期刊、音像电子出版物和网络出版为一体的,在国内外有专业特色和品牌影响的综合性科技出版大社。