深度實踐微服務測試
內容描述
本書是4位作者服務多個大中型知名企業後總結的微服務測試方法論與實戰經驗,內容翔實、鮮見。
全書內容分9章,涵蓋測試策略、接口與界面自動化測試、契約測試、
性能測試、微服務監控、服務虛擬化、混沌工程、安全測試。
一本書破解當下測試工作的眾多難題,可為微服務和分佈式系統的質量保障提供一站式解決方案。
本書內容具體如下。
第1章梳理各種微服務測試工作的價值與要點,幫助讀者快速建立測試工作全局視角。
第2章剖析微服務環境下制定測試策略的要點、影響因素與實戰技巧。
第3章介紹接口測試與頁面自動化測試的主要思路與常見問題。
第4章重點講解如何基於Pact與Spring Cloud Contract進行契約測試實踐。
第5章分析性能測試在微服務和傳統軟件環境下的區別,並介紹全鏈路壓測的實施思路要點。
第6章介紹微服務監控的概念、模式分類,以及監控實踐、系統搭建與容器化部署。
第7章重點介紹如何在微服務環境下運用服務虛擬化技術來解決各種服務依賴問題。
第8章介紹混沌工程的價值、實施先決條件、原則與實施方法。
第9章包括安全測試的需求分析、測試人員角色定位以及多種測試工具實戰。
目錄大綱
序
前言
第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