天天看點

Python接口測試實戰1(下)- 接口測試工具的使用

如有任何學習問題,可以添加作者微信: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面闆

  1. Console: 外觀及功能控制
    • 錄制:記錄或停止記錄請求
    • 清空: 清空所有請求
    • 抓取快照:按幀捕獲螢幕事件
    • 過濾: 請用關閉過濾功能
    • 搜尋:搜尋請求
    • Group by frame:按架構分組
    • Preserve log:頁面重載時保留請求
    • Disable cache:禁用緩存
    • Offline:斷網及弱網模拟
  2. Filters: 請求過濾器
  3. Overview: 資源時間軸
  4. Requests Table: 請求清單
    • Name: 資源名稱
    • Status: HTTP狀态碼
    • Initiator: 請求源
    • Size: 從伺服器下載下傳的檔案和請求的資源大小。如果是從緩存中取得的資源則該列會顯示(from cache)
    • Timeline: 顯示所有網絡請求時間狀态軸
  5. 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

  1. 高效學習,快速掌握Python自動化所有領域技能
  2. 同步快速解決各種問題
  3. 配套實戰項目練習

繼續閱讀