猜你喜欢
深度实践微服务测试

深度实践微服务测试

书籍作者:付彪 ISBN:9787111708216
书籍语言:简体中文 连载状态:全集
电子书格式:pdf,txt,epub,mobi,azw3 下载次数:5514
创建日期:2023-04-15 发布日期:2023-04-15
运行环境:PC/Windows/Linux/Mac/IOS/iPhone/iPad/Kindle/Android/安卓/平板
内容简介
内容简介:
本书是4位作者服务多个大中型知名企业后总结的微服务测试方法论与实战经验,内容翔实、鲜见。全书内容分9章,涵盖测试策略、接口与界面自动化测试、契约测试、性能测试、微服务监控、服务虚拟化、混沌工程、安全测试。一本书破解当下测试工作的众多难题,可为微服务和分布式系统的质量保障提供一站式解决方案。
本书内容具体如下。
第1章梳理各种微服务测试工作的价值与要点,帮助读者快速建立测试工作全局视角。
第2章剖析微服务环境下制定测试策略的要点、影响因素与实战技巧。
第3章介绍接口测试与页面自动化测试的主要思路与常见问题。
第4章重点讲解如何基于Pact与Spring Cloud Contract进行契约测试实践。
第5章分析性能测试在微服务和传统软件环境下的区别,并介绍全链路压测的实施思路要点。
第6章介绍微服务监控的概念、模式分类,以及监控实践、系统搭建与容器化部署。
第7章重点介绍如何在微服务环境下运用服务虚拟化技术来解决各种服务依赖问题。
第8章介绍混沌工程的价值、实施先决条件、原则与实施方法。
第9章包括安全测试的需求分析、测试人员角色定位以及多种测试工具实战。
前言
为什么写作这本书
如今,信息化技术应用早已在社会生活的各个层面呈爆发式增长,从聊天、刷微博到打车、点外卖,这些应用场景的实现无不得益于其后端庞大系统服务的支持。而在这些后端系统中,微服务架构系统毫无疑问占据着绝对的数量优势,因为传统的单体架构系统不管是在业务上还是在性能上都难以承载我国巨大的信息消费市场的技术功能需求。无论是互联网行业的开疆拓土,还是银行保险等传统金融行业的科技化自我重塑,甚至是更宽、更广层面上的政企数字化转型,它们都将各自的上层建筑建立在以微服务架构系统(以下简称“微服务系统”)为根基的信息系统之上。
由此,以微服务架构来构建系统,实现服务的快速开发、部署与生产环境下的自动
扩/缩容,最终为上层提供灵活、稳定和高可靠的数据支撑,这是目前整个信息技术行业所践行的主线。在这条主线上,如何更好地实现微服务系统的测试与质量保障工作是一个必须提出和予以解答的问题。不同于通常的Web测试、App测试或者性能测试这些对象清晰、范畴明确的单项测试活动,当我们讨论微服务测试的时候,我们面对的是一整套系统环境下的复杂服务交互产生的质量保障问题,我们关注的对象不再仅仅是单个进程中运行的程序,而是随着整个系统架构的拓展出现在不同服务之间的信息交互的总和,这些信息的交互有时甚至是跨时间和跨地域的,比如微服务系统下的数据一致性问题等。
如果抛开系统的复杂度而从单纯的测试角度来说,微服务系统下的测试与质量保障工作往往是多种具体测试活动的集合,针对不同的系统对象和开发阶段,需要综合开展包括界面测试、接口测试、性能测试、安全测试、混沌工程、产品监控与运维等各种测试手段在内的一系列工作。这就要求测试人员不仅要有能力完成各种专项测试工作,还要能够合理地统筹和规划不同时期的测试活动的全盘策略和实施方案。毫无疑问,这些都是微服务系统下的测试人员面临的巨大挑战。为了帮助更多的软件测试工程师应对这个挑战,我们编写了本书。
读者对象
对于有一定接口测试经验的测试人员,本书将能够很好地帮其构建整个微服务系统的测试知识体系。
对于没有接触过后端服务测试的测试人员,比如做Web UI测试、手机App测试,以及桌面或者嵌入式应用测试的读者,本书同样能够帮助其上手微服务系统下的各项测试工作。
对于把控整个微服务系统交付的项目组长、系统架构师,本书能帮助其从测试的角度建立对微服务系统质量保障的完整、全面认知。
本书特色
在写作本书时,我们期望能够从更加全面和系统的角度为读者介绍整个微服务环境下的测试与质量保障工作,所以本书除了包含基本的、常见的测试工作,比如接口测试、契约测试、性能测试等,还涵盖了服务虚拟化、混沌工程、服务监控等初看起来与测试无关,但在微服务系统下非常重要的内容。本书本着实用、可上手且具备指导性的初衷,对不同章节内容的讲解力求做到理论与实践相结合,既包含对行业现状、理论概念等体系化知识的介绍,也包含大量读者可以直接上手的实践操作和工程代码。
如何阅读本书
具体来说,本书一共包含9章。
第1章对整个微服务测试工作进行概要阐述,帮助读者快速构建一个比较完整的全局视角。
第2章带领读者认识在微服务环境下制定测试策略的要点。
第3章从最基本的功能测试入手,介绍如何对服务功能进行接口测试及界面自动化测试。
第4章对契约测试的思路、实施方法、工具与实践进行重点讲解。
第5章介绍微服务环境下的性能测试与普通服务端性能测试的区别,以及全链路压测的实施思路与要点。
第6章介绍微服务监控工具的使用与监控指标。从该章开始,我们会跳出测试的范畴,从更高的维度上介绍微服务环境下的质量保障工作。
第7章重点介绍如何在微服务环境下运用服务虚拟化技术来解决各种服务依赖问题。
第8章介绍混沌工程的价值、实施条件、原则与实施方法。
第9章介绍安全测试,聚焦微服务系统最重要的安全问题,概括和总结我们应该如何在微服务系统下实现安全测试。
阅读建议:如果读者初识微服务系统,希望掌握系统性的测试方法,那么按照本书的章节内容安排,逐步深入学习会是一个非常合适的选择。但如果读者已经具备了一定的对微服务系统的测试经验,只是希望在部分方向上有所精进,比如契约测试、服务虚拟化、混沌工程、安全实践等,那么单独深入研究这些章节的内容也是没有问题的,因为本书的各个章节之间并没有相互依赖的关系。
勘误与支持
本书的内容都是根据我们既往的项目和工作经验总结的,如果读者在阅读过程中发现言之有误、述之不达的地方,或者其他疏漏之处,可发送邮件到[email protected],给我们反馈。
致谢
最后,本书的写作历时两年有余,这期间我们都得到各自家庭的巨大支持。我们将本应该照料父母的时间花在了对问题的讨论上,将本应该给孩子辅导功课的时间花在了写作上,还将本应该分担的家务活扔给了妻子,所以没有家人的支持,我们无法完成这本书的写作,在此真诚地感谢我们的家人。

目录

前言
第1章 微服务测试概述1
1.1 微服务测试的要点1
1.1.1 一份有效的测试策略1
1.1.2 一个构建接口层数据的好办法2
1.1.3 端到端测试,减少耗时2
1.1.4 把握微服务系统整体质量3
1.1.5 隔离依赖,实现独立测试4
1.1.6 守住第一道安全防护层4
1.2 微服务中的自动化测试5
1.3 本章小结6
第2章 微服务测试策略7
2.1 传统测试策略与敏捷测试策略7
2.1.1 传统测试策略7
2.1.2 敏捷测试策略9
2.2 微服务中的测试策略14
2.2.1 测试象限14
2.2.2 测试金字塔16
2.2.3 环境管理策略19
2.2.4 流水线策略22
2.3 影响微服务测试策略制定的因素23
2.3.1 质量目标24
2.3.2 被测系统的具体实现与可测试性24
2.3.3 人员能力25
2.3.4 开发与测试的协作模式25
2.3.5 产品演进的不同阶段26
2.4 微服务的测试策略实战27
2.4.1 迭代027
2.4.2 迭代N35
2.4.3 重构37
2.5 本章小结38
第3章 接口测试及界面自动化测试39
3.1 接口测试简介39
3.1.1 接口说明文档与测试用例类型40
3.1.2 接口测试重点42
3.2 接口自动化测试实战46
3.3 接口测试的常见问题56
3.4 前端界面测试思路57
3.5 前端界面自动化测试59
3.6 本章小结64
第4章 契约测试65
4.1 初识契约测试65
4.2 基于Pact的契约测试实战67
4.2.1 Pact的测试理念67
4.2.2 被测应用69
4.2.3 消费者Miku服务与生产者服务间的契约测试73
4.2.4 Gradle的相关配置88
4.2.5 消费者Nanoha服务与生产者服务间的契约测试90
4.2.6 验证我们的测试98
4.3 基于Spring Cloud Contract的契约测试实践99
4.3.1 认识Spring Cloud Contract99
4.3.2 验证被测微服务系统102
4.3.3 在生产者服务端的测试102
4.3.4 在消费者服务端的测试110
4.4 契约测试高阶解惑112
4.4.1 关于测试的表述113
4.4.2 为什么要做契约测试114
4.4.3 契约测试和接口测试、集成测试的区别118
4.4.4 契约测试可以替代集成测试吗120
4.4.5 关于Pact和Spring Cloud Contract的博弈121
4.4.6 消费者服务端的集成测试需要做到什么程度122
4.4.7 关于“生产者驱动的契约测试”123
4.5 本章小结124
第5章 性能测试125
5.1 接口的性能测试125
5.1.1 性能测试难在哪里125
5.1.2 基本概念126
5.1.3 测试方式分类127
5.1.4 测试工具128
5.1.5 性能测试场景129
5.1.6 测试过程131
5.1.7 性能瓶颈分析132
5.2 全链路压测135
5.2.1 实施思路136
5.2.2 实施过程137
5.3 做好性能测试能否成为资深测试专家141
5.4 本章小结142
第6章 微服务监控143
6.1 了解微服务监控143
6.1.1 为什么要监控你的微服务144
6.1.2 微服务监控与传统监控的区别145
6.2 微服务监控模式的分类146
6.2.1 健康检查146
6.2.2 服务日志监控149
6.2.3 链路追踪151
6.2.4 监控指标156
6.3 微服务监控实践162
6.3.1 利用Spring Boot Actuator进行服务监控162
6.3.2 Spring Boot Actuator结合
   Prometheus和Grafana进行可视化监控168
6.3.3 利用docker-compose快速搭建监控系统169
6.3.4 Kubernetes环境下SkyWalking容器化部署175
6.4 本章小结180
第7章 服务虚拟化181
7.1 服务虚拟化价值与简单示例181
7.2 基于WireMock的服务虚拟化184
7.2.1 模拟系统184
7.2.2 基于Java的基本使用189
7.2.3 基于独立执行文件的基本使用194
7.2.4 录制与回放197
7.2.5 异常模拟204
7.2.6 状态行为208
7.3 基于Hoverfly的服务虚拟化213
7.3.1 理解Hoverfly的服务方式214
7.3.2 选择合适的工作模式216
7.3.3 深入simulation的细节225
7.3.4 使用模板实现动态响应228
7.3.5 Hoverfly的状态行为233
7.3.6 使用中间件244
7.4 提供Web UI的轻量级服务虚拟化方案253
7.4.1 最简单的交互式服务虚拟化工具:Mockit253
7.4.2 支持团队协作的服务虚拟化工具:YApi256
7.5 服务虚拟化技术的灵活运用264
7.5.1 在集成测试中的运用264
7.5.2 在性能测试中的运用265
7.5.3 在视觉测试中的运用265
7.5.4 在契约测试中的运用266
7.5.5 在UI自动化测试中的运用266
7.5.6 不要滥用服务虚拟化267
7.6 本章小结268
第8章 混沌工程269
8.1 初识混沌工程269
8.1.1 混沌工程的起源269
8.1.2 微服务为什么需要混沌工程270
8.1.3 混沌工程的两类场景270
8.2 混沌工程实验与测试273
8.2.1 混沌工程实验和传统测试的区别与联系273
8.2.2 混沌工程与故障注入测试的区别274
8.2.3 QA In Production与混沌工程274
8.3 实施混沌工程的先决条件275
8.3.1 我的项目需要实施混沌工程吗275
8.3.2 实施混沌工程的先决条件275
8.4 混沌工程原则277
8.4.1 建立系统稳定状态的假设278
8.4.2 用多样的现实世界事件做验证278
8.4.3 在生产环境运行实验280
8.4.4 利用CI/CD进行混沌工程实验281
8.4.5 最小化爆炸半径283
8.5 设计混沌工程实验284
8.5.1 实验可行性评估285
8.5.2 观测指标设计与对照287
8.5.3 实验场景设计287
8.6 混沌工程实践288
8.6.1 Chaos Monkey实践288
8.6.2 Chaos Blade实践294
8.6.3 Chaos Mesh实践297
8.7 本章小结303
第9章 安全测试304
9.1 安全测试需求304
9.1.1 基于功能的安全测试需求306
9.1.2 基于风险的安全测试需求307
9.2 测试人员的定位308
9.2.1 测试人员的职责308
9.2.2 测试人员的角色309
9.2.3 安全内建310
9.3 测试工具与实战312
9.3.1 被测微服务系统示例312
9.3.2 SAST工具之SonarQube实战312
9.3.3 DAST工具之OWASP ZAP实战323
9.3.4 SCA工具之Dependency Check实战329
9.3.5 渗透测试工具简介332
9.4 本章小结334
后记335