Python接口測試實戰1(下)- 接口測試工具的使用
若有任何學習問題,能夠添加做者微信:lockingfreejavascript
課程目錄
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 Serverhtml
更多學習資料請加QQ羣: 822601020獲取前端
本節內容
- 抓包工具的使用
- Postman的使用
抓包工具的使用
抓包工具簡介
- Chrome/Firefox 開發者工具: 瀏覽器內置,方便易用
- Fiddler/Charles: 基於代理的抓包,功能強大,能夠手機抓包,模擬弱網,攔截請求,定製響應
- Fiddler: 免費,只支持Win
- Charles: 收費,支持Win/Linux/Mac
- wireshark/tcpdumps:給予網卡層的抓包,數據量大,能夠抓取tcp/udp等多種協議的數據包(須要作好過濾)
- wireshark: 支持Win/Linux/Mac
- tcpdumps: Linux抓包命令,功能強大,經常使用做服務端抓包
什麼是代理?
java
正向代理與反向代理
chrome
- 正向代理中, 代理和客戶端在一個局域網內,對服務器透明
- 反向帶來中,代理和服務器在一個局域網內,對客戶端透明
例如:使用代理訪問Google屬於正向代理,經過不一樣的域名經過Nginx向同一臺服務器請求不一樣的網站屬於反向代理數據庫
- 反向代理能夠作負載均衡
- 檢討代理接口測試通常要先綁定本地hosts
怎麼手動添加代理?json
- 啓動代理服務器,如開啓Postman的代理服務(本機ip,默認端口5555)
- Win設置->代理 -> 配置代理ip和域名
手機設置上網代理(手機抓包)vim
- 筆記本和手機使用同一wifi上網
- 筆記本上啓動代理服務器,如開啓Postman的代理服務(本機ip,默認端口5555)
- 手機上長按wifi->選擇管理網絡或高級-> 手動配置代理 -> 配置代理ip和域名
** 綁定hosts(適用於反向代理)**api
- 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的使用
常見接口測試工具
- 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