本書以接口自動化測試技術(shù)為主線,測試方向主要涉及HTTP、WebSerivce、WebSocket、gRPC協(xié)議接口自動化測試實現(xiàn),實用數(shù)據(jù)驅(qū)動自動化測試框架的實現(xiàn)過程,持續(xù)集成的實現(xiàn)等實用技術(shù)知識體系。
全書共分為3部分,基礎(chǔ)篇(第1~5章)圍繞接口自動化測試中所涉及協(xié)議、抓包等基礎(chǔ)知識,以實例方式引導(dǎo)讀者快速熟悉HTTP基礎(chǔ)知識,結(jié)合Python Requests主流接口測試模式實例講解接口測試知識。工具篇(第6~8章)以工作中主流接口測試工具Postman、Apifox、JMeter為依托,實例講解接口自動化測試中常見的測試場景,結(jié)合常見協(xié)議進行實例演示。框架篇(第9~14章)涵蓋接口自動化測試實施過程中主流的數(shù)據(jù)驅(qū)動模式、實用接口自動化測試框架的實現(xiàn)、CI實施等內(nèi)核技術(shù)。本書內(nèi)容充實、邏輯嚴密,是一部接口自動化測試的案頭工具書。
本書適合對從事軟件測試開發(fā)和接口自動化測試工作的人,對軟件接口測試技術(shù)感興趣的初學(xué)者,也適合自動化測試從業(yè)者對專項技術(shù)參考。對于高等院較和培訓(xùn)班的學(xué)生,本書更是學(xué)習(xí)時的一本教材。
本書是一本適合自學(xué)的接口自動化測試技術(shù)參考書,有以下幾個特色:
(1)涵蓋Postman、JMeter、Apifox等主流接口測試工具。
(2)以實例代碼驅(qū)動接口測試知識點的講解。
(3)基于Python Selenium Requests架構(gòu)的接口測試框架講解。
最近總在思考一個問題: 在這些年所從事的軟件技術(shù)相關(guān)的工作中,沉淀了些什么可以作為經(jīng)驗講述給后來者?荀子在《勸學(xué)》中給出的答案是傳道、授業(yè)、解惑。團隊中每年都會有新人進來,在對新入職員工培訓(xùn)時,通常會告訴他們快速融入團隊需要掌握哪些知識和解答他們在工作中遇到的問題,F(xiàn)在看來,這算是授業(yè)和解惑了。
勝任一份接口自動化測試工作,首先需要熟悉的就是協(xié)議。這就相當(dāng)于接口測試的心法,再配合被測軟件使用場景具體的業(yè)務(wù)知識,基本就可以做接口測試了。本書重點介紹了HTTP相關(guān)的基礎(chǔ)知識,對WebService、WebSocket、gRPC也有所涉及。接口測試工具在這個過程中所充當(dāng)?shù)木褪枪ぞ叩谋玖x。就像框架的存在是為了提升工作效率。從這個角度理解,本書中所涉及的幾款接口測試工具,其實就是工具化的接口測試框架。
作為一名IT從業(yè)者,筆者的職業(yè)生涯里接觸了很多編程語言、工具、框架,其中的一個或者幾個在一段特定的時間里會成為工作中的主要內(nèi)容。隨著時間的推移,有些技術(shù)會更迭,有些工具會升級(或者被新的工具所取代),有時甚至因為工作的緣故某些特定的技術(shù)和工具被束之高閣。面對新的技術(shù)和工具,需要具有快速學(xué)習(xí)和上手的能力。這也是技術(shù)崗在招聘時很在意學(xué)習(xí)能力的原因吧,因此在本書的寫作過程中,筆者有意識地將自己學(xué)習(xí)技術(shù)和工具的方法融入具體技術(shù)的講解中,希望這種學(xué)習(xí)方法能夠幫助更多后來者。
筆者現(xiàn)在主要是帶團隊做CNAS、CMA軟件相關(guān)的第三方評測工作,同時樂于將自己工作中所沉淀下來的技術(shù)分享出來。本書是筆者的第2本技術(shù)類作品,不足之處請多包涵。如果在學(xué)習(xí)接口自動化測試技術(shù)時,從本書中得到了一些幫助,則是筆者的榮幸。
本書目標讀者
本書未涉及Python基礎(chǔ)的講解,因此在學(xué)習(xí)本書前需要有一些Python基礎(chǔ)知識。書中內(nèi)容適合大多數(shù)有意學(xué)習(xí)或提升接口自動化測試技能的讀者。目標讀者可以概括為以下幾類。
(1) 對軟件接口自動化測試技術(shù)感興趣的初學(xué)者,跟著書中的順序?qū)W習(xí)即可。
(2) 接口測試工程師,通過本書系統(tǒng)化自己所掌握的自動化測試技術(shù)。
(3) 性能測試工程師,通過本書的學(xué)習(xí)可以手工編寫和優(yōu)化性能測試腳本。
(4) 高等院校測試專業(yè)或測試培訓(xùn)班的學(xué)生,提升自己的崗位競爭力。
(5) 有意愿提升自己接口測試技術(shù)的從業(yè)者或準從業(yè)者,學(xué)習(xí)永遠不晚。
本書的特色
本書是一本適合自學(xué)的接口自動化測試技術(shù)參考書,主要有以下幾個特色。
(1) 涵蓋Postman、JMeter、Apifox等主流接口測試工具。
(2) 以實例代碼驅(qū)動接口測試知識點的講解。
(3) 基于Requests unittest Python架構(gòu)的接口測試框架講解。
本書主要內(nèi)容
基礎(chǔ)篇(第1~5章): 本篇主要介紹接口自動化測試行業(yè)現(xiàn)狀,基礎(chǔ)環(huán)境的搭建與配置,主流接口測試工具的介紹及下載并安裝; HTTP基礎(chǔ)知識; Fiddler抓包工具的使用,常用命令,基于手機端App抓包及實用技巧; 第三方接口工具包Requests的初級使用。
工具篇(第6~8章): 本篇主要介紹Postman的基本使用方法及Newman的使用; Apifox接口測試及接口文檔的管理,HTTP、WebSocket、WebService和gRPC接口實例; JMeter接口測試流程、斷言、輸出和案例。
框架篇(第9~14章): 本篇主要介紹數(shù)據(jù)驅(qū)動在測試框架中的應(yīng)用; 基于數(shù)據(jù)驅(qū)動模式的自動化框架實現(xiàn)及框架實戰(zhàn)案例; 持續(xù)集成的部署與運行。
掃描封底的文泉云盤防盜碼,再掃描目錄上方的二維碼可下載本書源代碼。
致謝
首先要感謝清華大學(xué)出版社趙佳霓編輯,你的寬容和責(zé)任心讓本書得以順利出版。還要感謝我的恩師趙慎龍老師和鄧祖華老師對我的幫助。最后要感謝我的妻子在本書寫作期間給予我的支持。感謝一路走來所有關(guān)心和幫助過我的人。
胡勝強2024年10月
胡勝強,華軟盛創(chuàng)始人兼CTO,多年互聯(lián)網(wǎng)從業(yè)經(jīng)驗。從開發(fā)入道,轉(zhuǎn)戰(zhàn)測試。薪火相傳,希望自己的技術(shù)能夠幫助更多后來者。
單鏡石,軟達啟航聯(lián)合創(chuàng)始人兼CTO,曾任職方正科技、新大陸等多家IT企業(yè),資深測試達人,熱衷分享最新測試方法和成果。
李睿,軟達啟航聯(lián)合創(chuàng)始人兼CEO,北京航空航天大學(xué)軟件工程碩士畢業(yè);從事軟件測試工作多年,兼修各種測試技術(shù),軟件測試經(jīng)驗豐富。
本書源碼
基礎(chǔ)篇
第1章接口自動化測試概述
1.1接口自動化測試的現(xiàn)狀
1.1.1接口測試與手工測試
1.1.2接口測試的流程
1.1.3接口自動化測試與UI自動化測試
1.2接口自動化測試的優(yōu)勢
1.2.1接口測試與測試開發(fā)
1.2.2適合做接口自動化測試的項目
1.2.3適合做接口自動化測試的團隊
1.3主流接口自動化測試工具
1.3.1Postman
1.3.2Robot Framework
1.3.3Apifox
1.3.4Apache JMeter
1.3.5Requests
1.4接口自動化測試的發(fā)展趨勢
1.4.1接口用例平臺化
1.4.2協(xié)議及服務(wù)的多樣性
第2章HTTP基礎(chǔ)
2.1HTTP介紹
2.1.1HTTP的發(fā)展歷程
2.1.2HTTP的工作原理
2.1.3URL的組成
2.1.4資源、事務(wù)、報文
2.1.5HTTPS介紹
2.2HTTP請求與響應(yīng)
2.2.1HTTP常用請求方法
2.2.2響應(yīng)返回類型
2.3常見HTTP狀態(tài)碼
2.3.1狀態(tài)碼的作用
2.3.2常見正常返回狀態(tài)碼
2.3.3常見異常返回狀態(tài)碼
2.4Cookie和Session機制
2.4.1Cookie的原理
2.4.2Session的原理
第3章抓包利器: Fiddler
3.1Fiddler的安裝與配置
3.1.1Fiddler介紹
3.1.2Fiddler下載與安裝
3.1.3Fiddler配置
3.2Fiddler捕獲與內(nèi)容解析
3.2.1工作區(qū)介紹
3.2.2Fiddler捕獲數(shù)據(jù)
3.2.3Fiddler抓包數(shù)據(jù)解析
3.3使用Fiddler做接口驗證
3.3.1驗證GET接口請求
3.3.2驗證POST接口請求
3.3.3驗證帶附件接口請求
3.4使用Fiddler捕獲App請求
3.4.1Fiddler參數(shù)設(shè)置
3.4.2App端證書安裝及代理設(shè)置
3.4.3捕獲App端接口數(shù)據(jù)
3.5Fiddler使用技巧
3.5.1捕獲內(nèi)容的過濾
3.5.2常用Fiddler命令及快捷鍵
3.5.3接口響應(yīng)擋板設(shè)置
第4章接口測試環(huán)境的準備
4.1Postman安裝與配置
4.1.1軟件下載
4.1.2Postman的安裝
4.1.3軟件運行調(diào)試
4.2Python的安裝與配置
4.3Apifox安裝與配置
4.3.1軟件下載
4.3.2Apifox的安裝
4.3.3軟件運行調(diào)試
4.4Apache JMeter安裝與配置
4.4.1JDK的安裝與配置
4.4.2Apache JMeter的安裝
4.4.3軟件運行調(diào)試
4.5Requests安裝與配置
4.5.1PyCharm的安裝與配置
4.5.2Requests的安裝
4.5.3軟件運行調(diào)試
第5章Requests初級使用
5.1Requests介紹
5.1.1GET方法的使用
5.1.2POST方法的使用
5.1.3PUT方法的使用
5.1.4HEAD方法的使用
5.1.5PATCH方法的使用
5.2基于GET方法的接口測試
5.2.1GET方法參數(shù)解析
5.2.2基于GET方法的請求類型
5.2.3常見Requests響應(yīng)參數(shù)
5.3基于POST方法的接口測試
5.3.1POST方法參數(shù)解析
5.3.2消息主體: Data類型實例
5.3.3消息主體: JSON類型實例
5.3.4消息主體: XML類型實例
5.3.5消息主體: File類型實例
5.4接口測試常用方法
5.4.1Cookies的傳遞
5.4.2身份認證
5.4.3生成測試執(zhí)行報告
工具篇
第6章接口測試工具: Postman
6.1Postman介紹
6.1.1Postman界面
6.1.2Postman使用流程
6.2使用Postman做接口測試
6.2.1基于GET方法的接口請求
6.2.2基于POST方法的接口請求
6.3Postman的斷言
6.3.1Postman內(nèi)置斷言
6.3.2使用JavaScript自定義斷言
6.3.3斷言使用實例
6.4Postman的參數(shù)處理
6.4.1參數(shù)化請求數(shù)據(jù)
6.4.2前置參數(shù)處理
6.4.3Cookie的處理
6.5Newman的應(yīng)用
6.5.1Newman的配置
6.5.2Newman的使用
第7章接口測試工具: Apifox
7.1Apifox介紹
7.1.1Apifox的特點
7.1.2Apifox使用流程
7.2接口文檔的定義與管理
7.2.1設(shè)計接口文檔
7.2.2接口管理
7.3使用Apifox發(fā)送接口請求
7.3.1HTTP接口實例
7.3.2WebSocket 接口實例
7.3.3WebService 接口實例
7.3.4gRPC接口實例
第8章接口測試工具: JMeter
8.1JMeter介紹
8.1.1JMeter的優(yōu)勢
8.1.2JMeter主要組成
8.1.3JMeter接口測試流程
8.1.4使用Fiddler錄制接口腳本
8.2JMeter接口請求的發(fā)送
8.2.1GET請求發(fā)送實例
8.2.2POST請求發(fā)送實例
8.2.3FTP請求發(fā)送實例
8.3JMeter的斷言與參數(shù)化
8.3.1JMeter斷言
8.3.2JMeter的參數(shù)化
8.4JMeter結(jié)果輸出
8.4.1JMeter內(nèi)置結(jié)果輸出
8.4.2與Ant配合輸出測試報告
8.5基于JMeter的接口測試實例
8.5.1測試思路
8.5.2腳本設(shè)計
8.5.3結(jié)果輸出
框架篇
第9章unittest的使用
9.1unittest介紹
9.1.1unittest框架的構(gòu)成
9.1.2第1個unittest接口示例
9.2TestCase與TestFixture的應(yīng)用
9.2.1TestCase的執(zhí)行順序
9.2.2TestFixture的使用
9.3TestSuite的應(yīng)用
9.3.1測試套件的創(chuàng)建
9.3.2discover執(zhí)行更多用例
9.3.3批量執(zhí)行用例
9.4TestRunner的應(yīng)用
9.4.1斷言的使用
9.4.2裝飾器的使用
9.4.3生成測試報告
9.5Requests與unittest框架整合應(yīng)用
9.5.1框架設(shè)計思路
9.5.2case模塊用例
9.5.3data模塊數(shù)據(jù)
9.5.4config模塊
9.5.5utils模塊
9.5.6bin運行模塊
9.5.7report輸出模塊
第10章pytest的使用
10.1pytest介紹
10.1.1框架構(gòu)成
10.1.2軟件安裝
10.1.3運行規(guī)則
10.1.4測試用例
10.2Fixture與參數(shù)化
10.2.1Fixture的優(yōu)勢
10.2.2用例運行的級別
10.2.3conftest.py配置文件
10.2.4測試數(shù)據(jù)的參數(shù)化
10.3裝飾器與斷言
10.3.1裝飾器的使用
10.3.2斷言的使用
10.3.3用例執(zhí)行的順序
10.3.4執(zhí)行異常的用例處理
10.3.5用例執(zhí)行后的輸出
10.4Requests與pytest的整合實例
10.4.1框架整體設(shè)計思路
10.4.2Case模塊的實現(xiàn)
10.4.3配置模塊的實現(xiàn)
10.4.4結(jié)果輸出模塊的實現(xiàn)
第11章數(shù)據(jù)驅(qū)動測試應(yīng)用
11.1數(shù)據(jù)驅(qū)動在接口測試中的重要性
11.1.1從文件中讀取測試數(shù)據(jù)
11.1.2將測試結(jié)果寫入數(shù)據(jù)文件
11.2基于ddt數(shù)據(jù)驅(qū)動的實現(xiàn)
11.2.1ddt介紹及安裝
11.2.2ddt讀取測試數(shù)據(jù)
11.2.3ddt對不同數(shù)據(jù)源的管理
11.3基于Excel方式的數(shù)據(jù)管理
11.3.1Excel管理數(shù)據(jù)的介紹及安裝
11.3.2Excel表數(shù)據(jù)的讀取
11.3.3Excel表數(shù)據(jù)的寫入
11.3.4模塊化Excel數(shù)據(jù)操作
11.4基于JSON方式的數(shù)據(jù)管理
11.4.1JSON管理數(shù)據(jù)介紹
11.4.2JSON數(shù)據(jù)的讀取
11.4.3JSON數(shù)據(jù)的寫入
11.4.4模塊化JSON數(shù)據(jù)操作
第12章Requests使用進階
12.1接口請求中的實用方法
12.1.1Cookies傳遞的處理
12.1.2請求超時及安全證書處理
12.1.3文件上傳實例
12.1.4文件下載實例
12.1.5HTML返回結(jié)果參數(shù)提取實例
12.2基于Token和Sessions處理
12.2.1請求中Token參數(shù)的處理
12.2.2請求中Sessions的處理
12.3接口傳輸加密解密
12.3.1參數(shù)傳遞前的加密處理
12.3.2獲得響應(yīng)結(jié)果后的解密處理
第13章基于Web的接口測試框架案例
13.1框架設(shè)計思路
13.2case模塊的實現(xiàn)
13.3數(shù)據(jù)文件的處理
13.3.1config數(shù)據(jù)
13.3.2data數(shù)據(jù)
13.4utils模塊的實現(xiàn)
13.4.1獲取配置文件信息
13.4.2獲取Excel文件測試數(shù)據(jù)
13.4.3將測試結(jié)果寫入Excel文件
13.4.4測試用例執(zhí)行前的初始化
13.4.5發(fā)送測試結(jié)果郵件
13.5運行模塊的實現(xiàn)
13.6結(jié)果文件的展示
13.6.1HTML運行結(jié)果報告展示
13.6.2Excel運行結(jié)果報告展示
第14章基于Jenkins持續(xù)集成的實現(xiàn)
14.1什么是持續(xù)集成
14.2Jenkins的安裝配置
14.2.1軟件的下載
14.2.2JDK的安裝和配置
14.2.3Tomcat的安裝和配置
14.2.4Jenkins的安裝和配置
14.3構(gòu)建定時任務(wù)
14.3.1構(gòu)建Project的基本流程
14.3.2構(gòu)建基于Python接口腳本的項目