天天看點

API接口自動化前置知識一、HTTP協定二、接口測試概述

一、HTTP協定

HTTP 協定最大的特點是 通訊雙方 分為

用戶端

服務端

到了 1.1 版本, 建立連接配接後,這個連接配接可以保持一段時間(keep alive), 這段時間,雙方可以多次進行 請求和響應, 無需重建立立連接配接。

浏覽器中檢視請求和響應HTTP:

摁F12,打開開發者控制台,點選network子產品

HTTP請求方式

請求通路文本或圖像等資源的一端稱為用戶端。而提供資源響應的一 端稱為伺服器端。

請求方法如下表

方法 說明 支援的HTTP協定版本
GET 擷取資源 1.0、1.1
POST 傳輸實體主體 1.0、1.1
PUT 傳輸檔案 1.0、1.1
HEAD 擷取封包首部 1.0、1.1
DELETE 删除檔案 1.0、1.1
OPTIONS 詢問支援的方法 1.1
TRACE 追蹤路徑 1.1
CONNECT 要求用隧道協定連接配接代理 1.1
LINK 建立與資源之間的聯系 1.0(已被 HTTP/1.1 廢棄,不再支援 )
UNLINE 斷開連接配接關系 1.0(已被 HTTP/1.1 廢棄,不再支援 )

常用的方法有:

1、GET (擷取)

2、POST (添加)

3、PUT (更新)

4、DELETE (删除)

HTTP封包

HTTP封包的結構:

  1. 封包首部:伺服器端或用戶端需處理的請求或響應的内容及屬性
  2. 請求行:包含用于請求的方法,請求uri和HTTP版本
    例如:
    
    GET /src/index.html HTTP/1.1
    表示要擷取資源 請求資源的位址為/src/index.html,使用的協定為http 版本為1.1
    
    POST /src/message HTTP/1.1
    表示要傳送資源 傳送資源的目标位址為/src/message,使用的協定為http 版本為1.1
               
  3. 狀态行:包含狀态碼,原因短語和HTTP版本
    例如:
    
    HTTP/1.1 200 OK
    表示使用的協定為http 版本為1.1 狀态碼為200 短語為200,即請求正常處理完畢
               
    HTTP響應狀态碼:
    類别 原因短語
    1XX Informational(資訊性狀态碼) 接收的請求正在處理
    2XX Success(成功狀态碼) 請求正常處理完畢
    3XX Redirection(重定向狀态碼) 需要進行附加操作以完成請求
    4XX Client Error(用戶端錯誤狀态碼) 伺服器無法處理請求
    5XX Server Error(伺服器錯誤狀态碼) 伺服器處理請求出錯
  4. 首部字段:包含表示請求和響應的各種條件和屬性的各類首部。

    一般有4種首部,分别是:通用首部、請求首部、響應首部和實體首部。

    比如,
    	Host:請求發送的服務端域名
    	Accept:接受的資訊類型/優先級
    	Accept-Language:語言集
    	Pragma:封包指令
    	... ...
               
    單個請求頭的格式為:

    名字: 值

    。一個請求頭,占據一行。

    在開發過程中,也可以根據需要,在HTTP消息中添加自己定義的請求頭。

  5. 其他:可能包含HTTP的RFC裡未定義的首部(cookie等)

HTTP請求和響應消息

請求封包:

  1. 請求行
  2. 請求頭:請求首部字段、通用首部字段、實體首部字段等
  3. 消息體/封包主體:資料等

    WEB API 響應消息體 ,常見的文本格式有:Json、Xml、www-form-urlencoded

響應封包:

  1. 狀态行
  2. 響應頭:響應首部字段、通用首部字段、實體首部字段等(與請求頭類似)
  3. 消息體/封包主體:資料等

    如果 HTTP 響應 有消息體, 協定規定需要在 消息頭和消息體之間插入一個空行

    CR+LF

    , 隔開它們。

空行(

CR+LF

):

CR+LF

回車符和換行符

封包主體:應被發送的資料

HTTP封包執行個體:

API接口自動化前置知識一、HTTP協定二、接口測試概述

二、接口測試概述

接口/接口測試

  1. 接口可以分為内部接口和外部接口
    • 内部接口:是伺服器端内部代碼互動時用到的接口,一般不需要大量的測試,開發人員可以自己進行測試。如白盒測試就是測試内部接口。

      例如:在一個學生成績管理系統中,登入普通學生的帳号去調用隻有管理者才能使用的API接口,例如修改學生成績,如果隻通過前端的操作發送請求是無法完成的,是以就要保證在普通學生帳号登入後沒有修改成績這一操作選項。

    • 外部接口:是用戶端與伺服器端互動時用到的接口,如HTTP接口。

      例如: 阿裡雲服務提供的 API 接口, 微信支付系統提供 的支付 API 接口, 作為 阿裡雲 或者 微信支付 的測試工程師,就要對其進行測試了

  2. 進行接口測試時,可以采用工具/Python的request庫
    • 經常采用Postman、JMeter、SoapUI、Insomnia等工具,其中使用較為頻繁的工具是Postman。
    • 工具的核心功能:建構HTTP請求消息,并且解析收到的HTTP響應消息, 使用者來判斷是否符合預期
    • 自動化測試可采用Python的request庫
  3. API接口請求消息和HTTP消息
    • API接口傳遞資料資訊是通過HTTP協定進行收發的,網站擷取網頁、圖檔、css等資源,也是通過HTTP協定進行收發的
    二者差別如下:
    • HTTP消息:網頁、圖檔、css 這些資源,都是

      靜态資源

      一個個檔案存儲在伺服器上的,擷取這些資訊,服務端直接讀取檔案,傳回給用戶端即可,無需特别的資料處理。
    • API接口請求消息:通常都需要服務端程式進行 一番處理

      比如:對請求的權限檢查,從資料庫中讀出資料,進行資訊過濾和 格式轉換,最後在HTTP響應中傳回給用戶端。

  4. 接口測試可以了解為軟體系統 消息互動接口 的測試。
    • 網頁前端、APP與後端伺服器之之間,都會有消息的互動。
  5. 對于系統而言後端會比前端更為穩定。是以對服務端的測試做的比較多
    • 接口測試本身是忽略了前端,直接與服務端來進行測試的一個過程
    • 接口是為系統提供資料服務的,所有前端肉眼可見的資料,基本上都是基于接口來擷取的
    • 目前測試網絡協定多數的是HTTP
    • HTTP協定的特點:用戶端發出一個HTTP請求給 服務端,服務端就傳回一個HTTP響應。好像程式的API調用。是以 接口測試 通常又被稱之為

      API接口測試

      或者

      WEB API接口測試

  6. 接口測試範圍
    1. 業務功能(包括正常、異常場景是否實作)
    2. 業務規則(覆寫度是否全面)
    3. 參數驗證(邊界、業務規則是否達到要求)
    4. 異常場景(重複送出、并發送出、事務中斷、多機環境、大資料量測試)
    5. 性能測試**(響應時間、吞吐量、并發數、資源要求)**
    6. 安全測試(權限驗證、SQL注入等)
  7. 接口測試的重點

    1、檢查接口傳回的資料是否與預期結果一緻。

    2、檢查接口的容錯性,假如傳遞資料的類型錯誤時是否可以處理。

    3、接口參數的邊界值。例如,傳遞的參數足夠大或為負數時,接口是否可以正常處理。

    4、接口的性能,HTTP請求接口大多與後端執行的SQL語句性能、算法等比較相關。

    5、接口的安全性,外部調用的接口尤為重要。

  8. 總結

    接口測試的工作内容:

    • 讀文檔:擷取接口文檔,評審文檔,了解接口的實作細節
    • 寫測試用例:根據接口文檔,寫出測試用例,
    • 測試驗證:等産品釋出後,根據測試用例,使用軟體工具,直接通過消息接口 對 被測系統 進行消息收發,驗證被測系統行為是否正确

接口文檔

這裡有一個騰訊開放平台的一個API文檔:判斷是否認證空間粉絲

通過

接口

進行測試 和 通過

使用者界面

進行測試一樣, 都需要有

測試用例

測試用例的依據就是

需求設計文檔

接口測試用例當然也需要 接口的 需求設計文檔,通常稱之為 接口文檔。

接口文檔 通常 是由 開發人員提供, 接口文檔中包含了測試人員要測試的系統接口的具體資訊。閱讀文檔時,要與開發人員溝通接口文檔正确,我們才能確定最終請求傳回值是否正确,這很重要。然後才能進行測試用例的編寫。

測試用例

根據接口文檔(接口的需求設計文檔)編寫測試用例。

要素:

必要:用例編号、用例名稱、前置條件、用例輸入、測試步驟、期望輸出、實際輸出、備注

視情況:測試背景、優先級、重要級

編寫測試用例的時候,通常可以采用 條件組合、邊界值、錯誤猜測(白盒測試)等方法。