如有任何學習問題,可以添加作者微信:superz-han
課程目錄
Python接口測試實戰1(上)- 接口測試理論
Python接口測試實戰1(下)- 接口測試工具的使用
Python接口測試實戰2 - 使用Python發送請求
Python接口測試實戰3(上)- Python操作資料庫
Python接口測試實戰3(下)- unittest測試架構
Python接口測試實戰4(上) - 接口測試架構實戰
Python接口測試實戰4(下) - 架構完善:用例基類,用例标簽,重新運作上次失敗用例
Python接口測試實戰5(上) - Git及Jenkins持續內建
Python接口測試實戰5(下) - RESTful、Web Service及Mock Server
更多學習資料請加QQ群: 822601020擷取
PDF下載下傳:連結:https://pan.baidu.com/s/1OwAa8nl1eeBj8fcrgd3sBA 密碼:e9d8
本節内容
- 抓包工具的使用
- Postman的使用
抓包工具簡介
- Chrome/Firefox 開發者工具: 浏覽器内置,友善易用
- Fiddler/Charles: 基于代理的抓包,功能強大,可以手機抓包,模拟弱網,攔截請求,定制響應
- Fiddler: 免費,隻支援Win
- Charles: 收費,支援Win/Linux/Mac
- wireshark/tcpdumps:給予網卡層的抓包,資料量大,可以抓取tcp/udp等多種協定的資料包(需要做好過濾)
- wireshark: 支援Win/Linux/Mac
- tcpdumps: Linux抓包指令,功能強大,常用作服務端抓包
什麼是代理?
正向代理與反向代理
- 正向代理中, 代理和用戶端在一個區域網路内,對伺服器透明
- 反向代理中,代理和伺服器在一個區域網路内,對用戶端透明
例如:使用代理通路Google屬于正向代理,通過不同的域名通過Nginx向同一台伺服器請求不同的網站屬于反向代理
- 反向代理可以做負載均衡
- 反向代理接口測試一般要先綁定本地hosts
怎麼手動添加代理?
- 啟動代理伺服器,如開啟Postman的代理服務(本機ip,預設端口5555)
- Win設定->代理 -> 配置代理ip和域名
手機設定上網代理(手機抓包)
- 筆記本和手機使用同一wifi上網
- 筆記本上啟動代理伺服器,如開啟Postman的代理服務(本機ip,預設端口5555)
- 手機上長按wifi->選擇管理網絡或進階-> 手動配置代理 -> 配置代理ip和域名
** 綁定hosts(适用于反向代理)**
- Win: notepad C:\Windows\System32\drivers\etc\hosts
- Linux: vim /etc/hosts(格式: ip 域名)
Chrome開發者工具
- Elements: HTML元素面闆,用于定位檢視元素源代碼
- Console: js控制台面闆,js指令行,檢視前端日志
- Sources: 資源面闆,用于斷點調試js
- Network: 請求資訊面闆,檢視請求及響應資訊
- Timeline: 時間線面闆,記錄網站生命周期内所發生的各類事件
- Profiles: 事件詳情面闆
- Application: 本地存儲,Session存儲等資源資訊
- Secuity: 判斷目前網頁是否安全
- Audits: 網絡性能診斷
Network面闆
- Console: 外觀及功能控制
- 錄制:記錄或停止記錄請求
- 清空: 清空所有請求
- 抓取快照:按幀捕獲螢幕事件
- 過濾: 請用關閉過濾功能
- 搜尋:搜尋請求
- Group by frame:按架構分組
- Preserve log:頁面重載時保留請求
- Disable cache:禁用緩存
- Offline:斷網及弱網模拟
- Filters: 請求過濾器
- Overview: 資源時間軸
- Requests Table: 請求清單
- Name: 資源名稱
- Status: HTTP狀态碼
- Initiator: 請求源
- Size: 從伺服器下載下傳的檔案和請求的資源大小。如果是從緩存中取得的資源則該列會顯示(from cache)
- Timeline: 顯示所有網絡請求時間狀态軸
- Summary: 請求總數,資料傳輸量,加載時間資訊
- DOMContentLoaded:頁面上DOM完全加載并解析完畢
- load:頁面上所有DOM、CSS、JS、圖檔完全加載完畢
導出請求:右擊請求 -> Copy -> Copy as fetch / Copy as cUrl
Fiddler簡介
Fiddler 4.6 下載下傳 http://www.downza.cn/soft/234727.html
為什麼使用Fiddler?
- 可以抓到請求資料,檢視Raw格式/表單格式/Json/XML格式
- 可以攔截和修改請求
- 更強大的過濾器
- 可以抓取Postman/接口腳本發送的請求,友善調試
- 可以抓包手機請求 ...
Fiddler主界面
Fiddler的主界面分為 工具面闆、會話面闆、監控面闆、狀态面闆
- Inspectors: 檢查員
- Raw:請求的原始格式
- WebForm: 請求的表單格式
- Json:請求的Json格式請求
- XML:請求的XML格式
- AutoResponsder: 自動回複,可用于構造響應,Mock,不修改伺服器檔案調試接口
- Composer: 設計者, 發送和調試請求
- FidderScript:
- Filters: 過濾器
- Hosts: 按伺服器過濾
- Clients Process: 按用戶端程式過濾
- Request Headers: 按請求頭過濾
- Breakpoints: 設定斷點
- Response Status Code: 按狀态碼過濾
- Response Type and Size: 按響應類型及大學過濾
- Response Headers: 按響應頭過濾
自動斷點設定
菜單Rules -> Automatic Breakpoints -> Before Requests/After Requests
手機抓包
安裝fiddler的筆記本和手機使用同一wifi -> 手機長按該wifi,選擇進階 -> 添加代理 ip為筆記本ip, 端口為8888 -> 筆記本開啟fiddler, 手機端通路網頁
參考: Fiddler詳細教程
服務端抓包 - tcpdumps
常見接口測試工具
- Postman: 簡單友善的接口調試工具,便于分享和協作。具有接口調試,接口集管理,環境配置,參數化,斷言,批量執行,錄制接口,Mock Server, 接口文檔,接口監控等功能
- JMeter: 開源接口測試及壓測工具,支援Linux及無界面運作
- LR: 商業版接口性能測試工具,簡單易用,功能強大
- SoupUI: 開源,WebService接口常用測試工具,也可以測試Rest接口及接口安全
新版Postman使用簡介
Postman 6.1.4 獨立安裝版 下載下傳 http://www.downza.cn/soft/205171.html
工具欄
- New: 建立,可以建立Request請求,Collection請求集,環境等等
- Import: 導入,可以導入别人導出的請求集
- Runner: 運作一個請求集(批量執行)
- Invite: 邀請(需要注冊,邀請進行協作)
- 同步圖示: (需要注冊,同步你的項目到雲端)
- 抓包圖示: 抓包/捕獲請求,用于開啟Postman代理, 手動設定代理(或手機代理)後可抓包/錄制請求
- 設定圖示: Postman設定
- 消息圖示: 官方及協助消息
- 收藏圖示: 我的收藏(需要注冊)
- 雲端圖示: 使用者雲端資料(需要注冊)
接口管理區
- History: 請求曆史記錄,可以查詢到之前的請求記錄
- Collections: 接口集,相當于一個接口項目或測試計劃,接口集中可以建立無限極子檔案夾,用于對接口進行分組管理
環境管理區
- 環境切換:用于切換環境
- 環境預覽:用于快速預覽環境中的所有變量
- 環境管理:用于添加修改環境及環境變量,以及全局變量
什麼是環境
接口完整位址 = 服務位址 + 接口位址, 如
www.sojson.com + /open/api/weather/json.shtml
環境是一套配置,包含許多環境變量。在接口測試中,根據部署在不同的伺服器上,伺服器位址有可能不同,而同一個接口,接口位址是不變的。為了測試部署在不同伺服器上的同一套接口,我們可以建立不同的環境,不同環境中host變量使用不同的位址
接口設計區
可以通過上方tab邊上的+号,建立多個請求。接口設計區從上到下分為請求區和響應區
- 請求區
- 請求位址行:可以選擇請求方法(GET/POST/...),填寫請求位址,發送請求和儲存請求到測試集
- 請求資料區:分為授權,請求頭,請求資料,請求發送前執行的腳本(用于準備資料),請求結束後執行的腳本(用于斷言)
- 響應區:
- 響應内容: 可以檢視Pretty(美化格式),Raw(原始格式),Preview(HTML預覽格式)
- 響應Cookie
- 響應頭
- 測試結果,對應請求中Tests中設定的斷言
Collection請求集
測試集是Postman中接口管理的一個“整體”機關,運作、導出、分享等都是基于測試集的。
- 建立測試集: New按鈕->Collection 或 直接點選測試集清單上方的建立測試集按鈕
- 授權: 測試集及其子檔案夾下的接口統一使用該授權,不用每個接口再都單獨設定一遍
- 請求前腳本: 測試集的每個接口公用的請求前腳本
- 請求後斷言: 測試集每個接口公用的請求後腳本
- 請求集變量: 請求集中公用的一些變量
-
子檔案夾
子檔案夾的屬性中同樣擁有描述,授權,請求前腳本,和請求後斷言(沒有變量,一個請求集的變量統一管理),實作了不同範圍(Scope)的Fixture功能。
- 請求集導出:請求集可以導出并發送給别人(不攜帶環境資訊),别人通過導入來使用你的接口
- 請求集分享: 請求集直接分享給别人(雙方都需要注冊)
** 環境管理**
我們可以環境中設定多個變量,以供在請求中使用
環境變量使用方法:
選擇環境,在請求URL或者請求Body裡使用{{變量名}}來使用環境變量,變量可以在請求Body的各種格式中使用,但不能直接在請求前腳本(Pre-request Script)和請求後腳本(Tests)中使用
環境管理中還可以點選“Global”添加全局變量,環境變量隻有當選擇了該環境時生效,全局變量在任何環境中生效,測試集中的變量隻在目前測試集生效,當測試集變量,環境變量,全局變量有重複的變量名時,優先級為:環境變量>全局變量>測試集變量
Params使用
當請求URL中參數很多時,不友善進行添加和檢視,可以點選URL輸入框後的Params按鈕,以表格的方式添加變量及值,從表格添加後,變量和值會自動添加到URL中
請求設計
- 授權:如果接口需要授權,可以在該頁面設定授權方式(type)和授權資訊
- Header: 請求頭,可以設定請求類型(Content-Type)和Cookie
- Body: 請求資料
- form-data:混合表單,支援上傳檔案
- x-www-form-urlencoded:文本表單
- raw:原始格式,支援JSON/XML格式(後面可選擇)
- binary: 二進制格式,用于發送二進制資料流
- Pre-request Script: 請求前腳本,Javascript文法,用于在發送請求前生成一些動态資料或做一些處理
- Tests:請求後腳本,Javascript文法,用于請求傳回後做一些處理或斷言結果
Postman發送各種格式請求的方法:
注意:選擇不同的請求可是,會自動在Header中添加Content-Type資訊
Tests斷言
- HTTP狀态碼斷言:
tests["HTTP狀态碼200"]=responseCode.code == 200;
- 響應包含内容斷言:
tests["狀态碼200"] = responseBody.has("登入成功");
接口樣例:
POST https://demo.fastadmin.net/admin/index/login.html 使用者名/密碼: admin/123456
- JSON響應斷言
var jsonData = JSON.parse(responseBody);
tests["code為200"] = jsonData.code==200
tests["msg為success"] = jsonData.msg == "success"
GET http://www.tuling123.com/openapi/api?key=ec961279f453459b9248f0aeb6600bbe&info=你好
Runner: 測試集批量執行
- 支援設定疊代次數
- 支援加載csv或json類測試資料
操作方法:
如https://demo.fastadmin.net/admin/index/login.html接口
- 建立一個Collection,比如名稱Demo2
- 填入URL:https://demo.fastadmin.net/admin/index/login.html, 選擇POST方法
- 請求資料(Body)格式選x-www-form-urlecoded,請求資料填寫username {{username}} password {{password}},這裡使用了兩個變量來做參數化
- 儲存請求到Demo2中
- 在電腦上建立一個data.csv檔案,第一行為變量名,下面是資料,如下圖
- 點選Postman工具欄的Runner按鈕,Collection選擇Demo2, Data選擇資料檔案data.csv, 點選運作Demo2
此為北京龍騰育才 Python進階自動化(接口測試部分)授課筆記
課程介紹
想要參加現場(北京)/網絡課程的可以聯系作者微信:lockingfree
- 高效學習,快速掌握Python自動化所有領域技能
- 同步快速解決各種問題
- 配套實戰項目練習