網路封包大剖析:HTTP介面自動化測試原理 | 運動資訊第一站 - 2024年11月
網路封包大剖析:HTTP介面自動化測試原理
用Fiddler、Wireshark、JMeter、Selenium玩轉網路封包
自動化、測試、秒殺、搶票最佳實戰
本書不僅全面介紹如何使用Fiddler 進行HTTP 封包截取,還提供豐富的應用場景實戰範例。除了介紹HTTP 封包截取及其應用,還介紹許多Web應用方面的相關知識。全書內容深入淺出、圖文並茂,閱讀起來非常輕鬆。對HTTP 封包截取技術的知識系統重新進行了梳理,加入了作者在工作中新的實踐、新的歸納。
全書分為30章,每章的內容都搭配實例和大量的圖片,方便讀者參考並動手實踐。讀者可以很快學完一章,每學一章都會有成就感。
第1~11章中補充了一些HTTP的知識,包括如何使用Fiddler來抓HTTP封包、如何分析HTTP封包。
第12~22章則介紹如何透過JMeter、Postman和Python+requests來發送HTTP封包,以實現軟體自動化測試和介面的自動化測試。
第23~26章中,透過列舉很多有意思的案例,介紹如何使用封包截取工具來實現安全測試和性能測試。
最後的第27~30章,則運用本書所說明的內容,實現幾個日常生活中應用比較廣泛的綜合實例。
本書特色
◎實例豐富:作者多年介面測試的經驗總結,幫助解決實際工作中的難題。
◎圖文並茂:讀者閱讀無障礙,容易上手。
作者簡介
肖佳
Vmware高級測試工程師,博客園知名博主(網名小坦克),「佳貓教育」創始人。
從事軟體發展測試工作十餘年,有豐富的手動測試和自動化測試經驗,個人博客閱讀量已經超過500萬,樂於分享,擅長用淺顯的語言來講解技術。
前言
01封包截取的用處
1.1 Fiddler 封包截取的應用
1.2 學習HTTP
1.3 爬蟲
1.4 Fiddler 在測試中的作用
1.5 前端開發人員使用Fiddler偵錯Web
1.6 後端開發人員使用Fiddler封包截取
1.7 安全測試
1.8 檢查網站的簡單問題
1.9 自動化小工具的開發
1.10 概念的區別
1.11 本章小結
02 Fiddler 如何封包截取
2.1 Fiddler 必須要做的3 個設定
2.2 不允許封包截取
2.3 Fiddler 抓不到封包
2.4 Fiddler 封包太多找不到自己想要的
2.5 HTTPS 是否安全
2.6 電腦連接手機熱點封包截取
2.7 用Fiddler 測試App 升級
2.8 短網址
2.9 本章小結
03 Session 分類和查詢
3.1 Session 的概念
3.2 為什麼Fiddler 中有這麼多Session
3.3 Session 的類型
3.4 搜索Session
3.5 用命令列工具查詢Session
3.6 給Session 下中斷點
3.7 本章小結
04 FiddlerScript 的進階用法
4.1 FiddlerScript 的介面
4.2 Fiddler 的事件函數
4.3 在FiddlerScript 中使用正規表示法
4.4 忽略封包截取
4.5 顯示用戶端和伺服器的IP
4.6 顯示回應時間
4.7 讀寫本機txt 檔案
4.8 保存請求
4.9 重新發送請求
4.10 本章小結
05 常見的封包截取工具
5.1 常見的封包截取工具
5.2 瀏覽器開發者工具
5.3 vConsole
5.4 Charles 封包截取工具
5.5 Wireshark 封包截取工具
5.6 本章小結
06 用Python 發送HTTP請求
6.1 requests 框架介紹
6.2 發送GET 請求
6.3 發送POST 請求
6.4 階段維持
6.5 用Python 發送各種請求
6.6 用Python 下載檔案
6.7 本章小結
07 用正規表示法提取資料
7.1 正規表示法測試工具
7.2 利用正規表示法提取資料
7.3 提取訂單號
7.4 提取token 字串
7.5 從JSON 字串中提取
7.6 提取Cookie 字串
7.7 爬蟲提取資料
7.8 本章小結
08 HTTP 的9 種請求方法
8.1 HTTP 常見的9 種請求方法
8.2 HTTP 冪等性
8.3 9 種請求方法的特性
8.4 HTTP 和資料的增刪改查操作的對應關係
8.5 PUT 方法
8.6 DELETE 方法
8.7 HEAD 方法
8.8 OPTIONS 方法
8.9 CONNECT 方法
8.10 PATCH 方法
8.11 TRACE 方法
8.12 本章小結
09 內容類別
9.1 Content-Type 介紹
9.2 POST 提交資料的方式
9.3 3 種常見的POST 提交資料的方式
9.4 HTTP 中的負荷
9.5 錯誤的POST 提交方法
9.6 根據介面文件呼叫介面實例
9.7 鍵值對和JSON 的混合
9.8 本章小結
10 HTTP 上傳和下載
10.1 HTTP 上傳檔案的兩種方式
10.2 multipart/form-data
10.3 application/octet-stream
10.4 用HTTP 下載檔案
10.5 HTTP 中斷點續傳
10.6 本章小結
11 HTTP 對各種類型程式的封包截取
11.1 用Fiddler 抓取視訊
11.2 用Fiddler 抓音訊檔案
11.3 用Fiddler 抓Flash
11.4 用Fiddler 抓公眾號
11.5 用Fiddler 封包截取小程式
11.6 用AJAX 封包截取
11.7 用Fiddler 封包截取C#
11.8 用Fiddler 封包截取Java
11.9 用Fiddler 封包截取Postman
11.10 用Fiddler 捕捉macOS
11.11 用Fiddler 捕捉Linux 系統
11.12 用Fiddler 封包截取堅果雲
11.13 本章小結
12 自動登入和登入安全
12.1 登入的較量
12.2 登入的風險
12.3 登入的風控
12.4 登入用GET 還是POST
12.5 安全的原則
12.6 使用POST 方法登入的網站
12.7 登入回應攜帶隱藏的token 字串
12.8 用JavaScript 中的MD5給密碼加密
12.9 用JavaScript 動態加密密碼
12.10 簡訊驗證碼登入
12.11 二維碼掃碼登入
12.12 拼圖登入
12.13 普通圖片驗證登入
12.14 獨特的驗證方式
12.15 本章小結
13 圖片驗證碼辨識
13.1 圖片驗證碼
13.2 用Python 實現圖片驗證碼登入
13.3 本章小結
14 綜合實例—自動按讚
14.1 給文章自動按讚
14.2 用JMeter 實現博客園文章自動按讚
14.3 使用Python 實現博客園文章自動按讚
14.4 本章小結
15 前端和後端
15.1 Web 架構圖
15.2 前端開發和後端開發的區別
15.3 前端驗證和後端驗證
15.4 後端驗證的Bug
15.5 Fiddler 繞過前端實現投票
15.6 後台和後台管理的區別
15.7 本章小結
16 介面和介面測試
16.1 介面的概念
16.2 登入介面範例
16.3 介面文件的維護
16.4 介面測試的工具
16.5 介面測試的本質
16.6 介面測試的目的
16.7 登入介面的測試使用案例
16.8 介面測試是自動化測試嗎
16.9 如何設計介面測試使用案例
16.10 介面內部狀態碼
16.11 本章小結
17 JSON 資料格式
17.1 JSON 格式在介面中的應用
17.2 JSON 的概念
17.3 JSON 的應用場合
17.4 JSON 的語法
17.5 JSON 值的類型
17.6 JSON 應該使用雙引號
17.7 JSON 陣列
17.8 JSON 的巢狀結構
17.9 JSON 格式錯誤
17.10 JSON 解析工具
17.11 拼接JSON 字串
17.12 JMeter 中的JSON 提取器
17.13 本章小結
18 HTTP 和RESTful服務
18.1 什麼是RESTful
18.2 RESTful 的優點
18.3 RESTful 的主要原則
18.4 本章小結
19 用Postman 測試分頁介面
19.1 介面介紹
19.2 設計測試使用案例
19.3 用Postman 實現介面自動化
19.4 介面測試的發展方向
19.5 本章小結
20 用JMeter 測試單一介面
20.1 JMeter 介紹
20.2 增加客房介面介紹
20.3 設計介面的測試使用案例 x
20.4 JMeter 的操作過程
20.5 資料驅動測試
20.6 本章小結
21 介面的token 認證
21.1 介面的認證
21.2 token 認證
21.3 token 和Cookie 一起用
21.4 在JMeter 中如何處理token 字串
21.5 介面的三大安全性問題
21.6 請求參數被篡改
21.7 重放攻擊
21.8 本章小結
22 發送封包常見的錯誤
22.1 發送封包的本質
22.2 比較HTTP 請求
22.3 用JMeter 發送封包常見的錯誤
22.4 Postman 發送封包常見問題
22.5 JMeter 和Postman 的區別
22.6 介面測試尋求幫助
22.7 本章小結
23 秒殺活動的壓力測試
23.1 秒殺活動的壓力測試方案
23.2 使用Fiddler 來測試秒殺活動
23.3 捕捉App 上的優惠券活動
23.4 使用JMeter 來測試秒殺活動
23.5 壓力測試報告
23.6 本章小結
24 用Fiddler 和JMeter進行性能測試
24.1 性能測試概述
24.2 Web 頁面載入時間測試
24.3 介面的回應時間測試
24.4 視訊播放的性能測試
24.5 模擬5 個使用者同時登入網站
24.6 模擬5 個不同的使用者同時登入網站
24.7 本章小結
25 HTTP 中的支付安全測試
25.1 修改支付價格
25.2 漏洞發生的原因
25.3 支付漏洞的解決方法
25.4 修改充值金額測試
25.5 多執行緒提現測試
25.6 轉帳金額修改測試
25.7 重複支付
25.8 本章小結
26 Web 安全滲透測試
26.1 敏感資訊洩露測試
26.2 重置密碼測試
26.3 修改任意帳號的電子郵件密碼
26.4 Cookie 是否是HttpOnly屬性
26.5 越權存取漏洞
26.6 資源必須登入才能存取
26.7 修改VIP 會員到期時間
26.8 本章小結
27 綜合實例—自動提交訂單
27.1 背景
27.2 回歸測試
27.3 讓回歸測試自動化
27.4 產品的架構
27.5 自動化測試方案
27.6 哪些測試使用案例可以自動化
27.7 下單的測試使用案例
27.8 用JMeter 實現自動提交訂單
27.9 用Python 實現自動提交訂單
27.10 用JMeter 實現自動取消訂單
27.11 用Python 實現自動取消訂單
27.12 模擬100 個使用者同時下1000 個訂單
27.13 本章小結
28 綜合實例—自動申請帳號
28.1 一鍵申請帳號
28.2 用JMeter 實現自動創建使用者
28.3 本章小結
29 綜合實例—自動簽到領積分
29.1 自動簽到的想法
29.2 手機封包截取
29.3 某電子商務簽到領豆子
29.4 某金融App 簽到
29.5 自動運行指令稿
29.6 本章小結
30 綜合實例—App 約課幫手
30.1 App 約課幫手的想法
30.2 自動化方案
30.3 模擬App 端還是Web 端
30.4 網課約課幫手開發
30.5 本章小結
前言
介面自動化測試是以後的主流
在現在的行動網際網路時代,介面測試具備以下的優點。
■ 投入產出比高。一個測試工程師一天能寫完十幾個介面自動化測試。
■ 公司需求大。大部分公司首選有介面自動化測試能力的技術人員。基本上所有的應徵要求測試工程師會介面自動化測試。
■ 產品品質有保障。在快速疊代的過程中,一個完整的介面測試系統能夠在很大程度上保證產品的品質。
UI 自動化的真面目會慢慢被發現
在過去幾年,測試產業中比較流行的是UI 自動化測試,然而在行動網際網路時代,UI 自動化有一些缺點使其不太適合再使用。
■ 投入產出比非常低。
■ UI 自動化程式維護困難。產品前端的快速變化,會使 UI 程式的自動化管理的複雜程度呈幾何級數增長。如果沒有規劃好,那麼修改程式的成本將是一場災難,即使自動化系統高度解耦,UI 元素的管理和偵錯的成本也非常巨大。
■ UI 自動化對測試人員的技術水準要求非常高。
■ 最致命的是 UI 自動化找不到太多的 Bug,還不如手工測試。
在高速疊代的行動網際網路時代,越來越多的公司拋棄使用 UI 自動化而選擇了介面自動化。
寫書的過程
本書花了一年半的時間才寫完。寫書的過程非常累,非常痛苦,而且費腦子。每天早上5 點多就起床,利用早上的2 小時來寫書。因為這個時候頭腦最清醒,效率最高。
本書針對的讀者群
本書適合測試工程師或想要學習介面測試的讀者。如果你是「大神」等級的人物,請忽略本書。
本書可以幫助軟體測試人員在較短的時間內快速掌握介面自動化測試,為專案中實施介面自動化測試提供更多的想法。
本書的獨特之處
本書的內容都是我多年從事介面測試的經驗歸納,非常接近我們的實際工作,能幫助大家解決實際工作中的難題。
本書的內容較簡單,實例豐富,讀者閱讀起來會感覺比較輕鬆、容易上手,讀完本書不需要花費太多時間。如果讀者透過本書的學習,能夠自行開發出一個訂票工具,或實現一個電子商務網站的自動下訂單操作,那麼恭喜你,你已經掌握了本書的所有知識。
本書所介紹技術的適用場景
本書適用軟體測試人員或介面開發人員學習HTTP 介面測試。
本書的內容和組織結構
本書分為30 章,每章的內容並不多,但配有生動有趣的實例和大量的圖片,方便讀者參考並動手實踐。讀者可以很快學完一章,每學一章都會有成就感。
第1 ~ 11 章:補充了一些HTTP 的知識,包括如何使用Fiddler 來抓HTTP 封包、如何分析HTTP 封包。
第12 ~ 22 章:介紹了如何透過JMeter、Postman 和Python+requests 來發送HTTP 封包,以實現軟體自動化測試和介面的自動化測試。
第23 ~ 26 章:透過列舉很多有意思的案例,介紹如何使用封包截取工具來實現安全測試和性能測試。
第27 ~ 30 章:運用本書所說明的內容,實現了幾個日常生活中應用比較廣泛的綜合實例。
繁體中文版說明
本書原作者為中國大陸人士,原文為簡體中文,為維持全書原貌,本書範例及程式圖例均保持簡體中文介面,讀者閱讀時請參考圖例上下文。
致謝
感謝多位讀者幫忙對這本書進行公測。我寫完後找了讀者試讀,讀者提供了很有用的建議。感謝陳慧楠、胡卉。
另外要感謝人民郵電出版社的武曉燕編輯,在本書寫作過程中給予的大力支持。
肖佳