本書系統(tǒng)地講解了如何把測試的思維和接口測試的技術結合到一起,從而使讀者擁有接口測試能力,這種能力既包含工具的使用、代碼的編寫,也包含用例的設計。本書內容循序漸進、由淺入深,首先介紹接口和接口測試的概念以及接口測試都包含哪些測試活動,然后通過案例闡述如何從流水賬式的接口測試腳本逐步抽象出屬于自己的接口測試框架,接著從場景切入,系統(tǒng)地展示如何測試完全陌生的協(xié)議接口,以及如何在測試微服務接口時使用Mock技術梳理混亂的調用關系,后討論持續(xù)測試和智能化測試。
本書適合測試人員閱讀,也可供計算機相關專業(yè)的師生參考。
陳磊,前測試架構師,阿里云有價值專家(Most Valuable Professional,MVP),華為云MVP,極客時間命題專家,中國商業(yè)聯(lián)合會互聯(lián)網(wǎng)應用工作委員會智庫專家,中關村智聯(lián)軟件服務業(yè)質量創(chuàng)新聯(lián)盟軟件測試標準化技術委員會委員,Asian Journal of Physical Education & Computer Science in Sports編委會委員。具有多年質量工程技術實踐經驗,精通研發(fā)效能提升、手工測試團隊的自動化測試轉型實踐、智能化測試,已發(fā)表近30篇學術論文,擁有專利20余篇。著有圖書《質量團隊轉型實踐從測試到測試開發(fā)的蛻變》。
目 錄
第 1章 測試那點事 1
1.1 軟件測試概述 1
1.2 測試和質量 2
1.3 從找缺陷到質量保障 4
1.4 從質量保障到質量效能 7
1.5 自動化測試 8
1.6 接口 10
1.6.1 內部接口 11
1.6.2 外部接口 11
1.7 接口測試 12
1.8 小結 13
第 2章 為接口測試儲備技術 15
2.1 接口測試都是以網(wǎng)絡協(xié)議為基礎的 15
2.1.1 OSI七層模型 16
2.1.2 TCP/IP四層模型 19
2.2 HTTP/HTTPS 20
2.2.1 HTTP狀態(tài)碼 22
2.2.2 HTTP頭 25
2.3 Web服務器Tomcat 27
2.4 小結 28
第3章 著手準備接口測試 29
3.1 抓包工具Fiddler 29
3.1.1 Fiddler的使用技巧 30
3.1.2 Fiddler中常用的QuickExec命令 32
3.1.3 Fiddler的其他一些常見操作 33
3.2 開源的抓包工具mitmproxy 36
3.2.1 列表操作 38
3.2.2 mitmweb 39
3.3 接口測試的標準輸入 41
3.3.1 理想的接口測試提測項目 41
3.3.2 理想的情況很難發(fā)生 43
3.3.3 開始第 一個接口測試 43
3.3.4 串聯(lián)多個接口 48
3.4 接口測試工具Postman 49
3.4.1 使用測試用例集管理被測接口 49
3.4.2 驗證接口返回結果的正確性 50
3.4.3 使用全局變量解決上下文依賴問題 52
3.5 接口測試的關鍵邏輯 53
3.5.1 明確被測系統(tǒng) 53
3.5.2 開始接口測試 53
3.5.3 Postman的接口測試和持續(xù)集成 57
3.6 小結 59
第4章 接口測試和代碼 60
4.1 測試工程師需要掌握的Python基礎知識 60
4.1.1 Python版的Hello World!程序 60
4.1.2 基本數(shù)據(jù)類型 61
4.1.3 組合數(shù)據(jù)類型 64
4.1.4 None類型 80
4.2 接口測試常用庫requests 81
4.2.1 初識requests庫 81
4.2.2 HTTP頭的模擬 83
4.2.3 響應的處理 88
4.3 為什么要搭建團隊自己的測試框架 89
4.3.1 搭建前的準備工作 90
4.3.2 開始打造測試框架 91
4.3.3 使用新框架完成多接口測試 93
4.4 unittest詳解 98
4.5 小結 105
第5章 接口測試框架進階 106
5.1 支持RESTful風格的接口 106
5.1.1 RESTful是什么 106
5.1.2 RESTful接口測試 108
5.2 讓框架快速支持陌生協(xié)議的接口測試 113
5.2.1 面對陌生協(xié)議的接口測試 113
5.2.2 使用Fiddler查看WebSocket協(xié)議的接口交互信息 114
5.2.3 完成WebSocket接口測試以及擴展之前框架的功能 115
5.2.4 WebSocket一點通 119
5.2.5 WebSocket數(shù)據(jù)幀的格式 121
5.3 使框架擁有RPC接口測試能力 122
5.3.1 RPC和gRPC 122
5.3.2 gRPC接口如何測試 123
5.4 測試數(shù)據(jù)的處理 124
5.4.1 測試數(shù)據(jù)的原始方式 124
5.4.2 建立數(shù)據(jù)驅動方式 126
5.5 測試框架應有的其他一些技術屬性 130
5.5.1 設計base_url 130
5.5.2 建立全局等待時間 131
5.5.3 建立全局變量的管理器 132
5.5.4 處理測試字符串 135
5.6 小結 138
第6章 性能測試 139
6.1 性能測試的一些概念 139
6.1.1 性能測試的常用指標 139
6.1.2 性能測試的分類 140
6.1.3 性能測試的前期準備 141
6.1.4 性能測試的執(zhí)行 143
6.2 性能測試即代碼 144
6.3 Locust和LoadRunner的對比 145
6.3.1 場景設置 146
6.3.2 結果對比 147
6.3.3 對比分析 148
6.4 初識Locust和常用參數(shù) 149
6.5 詳解Locust的關鍵代碼 158
6.6 斷言和參數(shù)化 160
6.7 使用Locust測試gRPC接口的性能 163
6.8 小結 165
第7章 測試主導的服務解耦 166
7.1 微服務下混亂的調用關系 166
7.2 如何進行微服務的解耦 167
7.3 快速、輕便的Moco框架 169
7.3.1 配置Moco的運行環(huán)境 170
7.3.2 Moco的運行 170
7.3.3 Moco的JSON語法 171
7.4 小結 179
第8章 持續(xù)測試 180
8.1 持續(xù)集成、持續(xù)交付和持續(xù)部署下的持續(xù)測試 180
8.2 持續(xù)測試進行時 182
8.2.1 測試左移 182
8.2.2 測試右移 183
8.3 質量門禁 184
8.3.1 開發(fā)階段的質量門禁 184
8.3.2 測試階段的質量門禁 185
8.4 小結 186
第9章 智能化測試 187
9.1 智能化測試是發(fā)展的必然 188
9.2 分層測試模型中的智能化測試 192
9.2.1 開源的智能化單元測試 192
9.2.2 智能化UI測試 194
9.3 小結 195
附錄A HTTP知識點 196
附錄B HTTP代理工具 201
附錄C Python環(huán)境的配置和Battle 系統(tǒng)API 206
附錄D gRPC服務 210
附錄E SonarQube的部署和使用 212
附錄F EvoSuite的配置和使用問題 218