內容簡介:
本書是4位作者服務多個大中型知名企業(yè)后總結的微服務測試方法論與實戰(zhàn)經(jīng)驗,內容翔實、鮮見。全書內容分9章,涵蓋測試策略、接口與界面自動化測試、契約測試、性能測試、微服務監(jiān)控、服務虛擬化、混沌工程、安全測試。一本書破解當下測試工作的眾多難題,可為微服務和分布式系統(tǒng)的質量保障提供一站式解決方案。
本書內容具體如下。
第1章梳理各種微服務測試工作的價值與要點,幫助讀者快速建立測試工作全局視角。
第2章剖析微服務環(huán)境下制定測試策略的要點、影響因素與實戰(zhàn)技巧。
第3章介紹接口測試與頁面自動化測試的主要思路與常見問題。
第4章重點講解如何基于Pact與Spring Cloud Contract進行契約測試實踐。
第5章分析性能測試在微服務和傳統(tǒng)軟件環(huán)境下的區(qū)別,并介紹全鏈路壓測的實施思路要點。
第6章介紹微服務監(jiān)控的概念、模式分類,以及監(jiān)控實踐、系統(tǒng)搭建與容器化部署。
第7章重點介紹如何在微服務環(huán)境下運用服務虛擬化技術來解決各種服務依賴問題。
第8章介紹混沌工程的價值、實施先決條件、原則與實施方法。
第9章包括安全測試的需求分析、測試人員角色定位以及多種測試工具實戰(zhàn)。
序
前言
第1章 微服務測試概述1
1.1 微服務測試的要點1
1.1.1 一份有效的測試策略1
1.1.2 一個構建接口層數(shù)據(jù)的好辦法2
1.1.3 端到端測試,減少耗時2
1.1.4 把握微服務系統(tǒng)整體質量3
1.1.5 隔離依賴,實現(xiàn)獨立測試4
1.1.6 守住第一道安全防護層4
1.2 微服務中的自動化測試5
1.3 本章小結6
第2章 微服務測試策略7
2.1 傳統(tǒng)測試策略與敏捷測試策略7
2.1.1 傳統(tǒng)測試策略7
2.1.2 敏捷測試策略9
2.2 微服務中的測試策略14
2.2.1 測試象限14
2.2.2 測試金字塔16
2.2.3 環(huán)境管理策略19
2.2.4 流水線策略22
2.3 影響微服務測試策略制定的因素23
2.3.1 質量目標24
2.3.2 被測系統(tǒng)的具體實現(xiàn)與可測試性24
2.3.3 人員能力25
2.3.4 開發(fā)與測試的協(xié)作模式25
2.3.5 產品演進的不同階段26
2.4 微服務的測試策略實戰(zhàn)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 接口自動化測試實戰(zhàn)46
3.3 接口測試的常見問題56
3.4 前端界面測試思路57
3.5 前端界面自動化測試59
3.6 本章小結64
第4章 契約測試65
4.1 初識契約測試65
4.2 基于Pact的契約測試實戰(zhàn)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 驗證被測微服務系統(tǒng)102
4.3.3 在生產者服務端的測試102
4.3.4 在消費者服務端的測試110
4.4 契約測試高階解惑112
4.4.1 關于測試的表述113
4.4.2 為什么要做契約測試114
4.4.3 契約測試和接口測試、集成測試的區(qū)別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章 微服務監(jiān)控143
6.1 了解微服務監(jiān)控143
6.1.1 為什么要監(jiān)控你的微服務144
6.1.2 微服務監(jiān)控與傳統(tǒng)監(jiān)控的區(qū)別145
6.2 微服務監(jiān)控模式的分類146
6.2.1 健康檢查146
6.2.2 服務日志監(jiān)控149
6.2.3 鏈路追蹤151
6.2.4 監(jiān)控指標156
6.3 微服務監(jiān)控實踐162
6.3.1 利用Spring Boot Actuator進行服務監(jiān)控162
6.3.2 Spring Boot Actuator結合
Prometheus和Grafana進行可視化監(jiān)控168
6.3.3 利用docker-compose快速搭建監(jiān)控系統(tǒng)169
6.3.4 Kubernetes環(huán)境下SkyWalking容器化部署175
6.4 本章小結180
第7章 服務虛擬化181
7.1 服務虛擬化價值與簡單示例181
7.2 基于WireMock的服務虛擬化184
7.2.1 模擬系統(tǒng)184
7.2.2 基于Java的基本使用189
7.2.3 基于獨立執(zhí)行文件的基本使用194
7.2.4 錄制與回放197
7.2.5 異常模擬204
7.2.6 狀態(tài)行為208
7.3 基于Hoverfly的服務虛擬化213
7.3.1 理解Hoverfly的服務方式214
7.3.2 選擇合適的工作模式216
7.3.3 深入simulation的細節(jié)225
7.3.4 使用模板實現(xiàn)動態(tài)響應228
7.3.5 Hoverfly的狀態(tài)行為233
7.3.6 使用中間件244
7.4 提供Web UI的輕量級服務虛擬化方案253
7.4.1 最簡單的交互式服務虛擬化工具:Mockit253
7.4.2 支持團隊協(xié)作的服務虛擬化工具: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 混沌工程實驗和傳統(tǒng)測試的區(qū)別與聯(lián)系273
8.2.2 混沌工程與故障注入測試的區(qū)別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 建立系統(tǒng)穩(wěn)定狀態(tài)的假設278
8.4.2 用多樣的現(xiàn)實世界事件做驗證278
8.4.3 在生產環(huán)境運行實驗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 測試工具與實戰(zhàn)312
9.3.1 被測微服務系統(tǒng)示例312
9.3.2 SAST工具之SonarQube實戰(zhàn)312
9.3.3 DAST工具之OWASP ZAP實戰(zhàn)323
9.3.4 SCA工具之Dependency Check實戰(zhàn)329
9.3.5 滲透測試工具簡介332
9.4 本章小結334
后記335