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