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