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