接口學習

一、粗談接口測試

  接口有兩種分類:一種是程序內部的接口,一種是系統對外的接口。目前最常用的兩種接口就是webservice接口和http api接口。其中webservice接口是走soap協議通過http傳輸,請求報文和報文都是xml格式的。http api接口是走http協議,通過路徑來區分調用的方法,請求報文都是key-value形式的,返回報文都是json串。http接口最常見的的兩種請求方式get和post,兩者區分在於一般get請求用來獲取數據,post請求用來發送數據。 
  接口測試其實就是通過接口規範文檔上的調用地址、請求參數、拼接報文,然後發送請求,檢測返回結果。接口測試的必要性有以下幾點:(1)可以發現很多在頁面上操作發現不了的bug;(2)檢測系統的異常處理能力;(3)檢測系統的安全性、穩定性;(4)後端不變下,接口改動,前端隨意變。 
  接口測試一般考慮測試點包括:通過性測試(備註:根據接口文檔上參數,正常傳入)、業務邏輯驗證測試(根據自己項目的業務邏輯來)、參數組合測試、接口安全測試和異常驗證。其中接口安全主要測試四點:(1)是否能繞過驗證:比如購買商品,提交訂單時候,通過接口修改商品價格,驗證是否能提交成功;(2)是否能繞過身份授權:比如某個功能只有A權限用戶可以使用,通過接口傳B權限用戶,驗證是否能使用該功能;(3)關鍵參數是否加密:比如登陸接口的用戶名和密碼是否加密 ;(4)加密安全規則是否複雜。其中異常驗證包括兩種:不按照接口文檔上要求輸入參數(比如:必傳非必傳、參數類型、入參長度),還有一種就是一些異常的場景(比如:網路連接異常,數據庫連接不上,服務斷開重連等等)。 
  接口請求報文拼接,兩種調用方式:key_value形式和json串傳參。key_value形式就是問號前面是請求url,後面是請求的參數名和參數值,多個參數用&拼接;json串傳參就不能拼接參數,需要用第三方測試工具來完成比如postman。 
  接口測試基本流程:需求評審->開發提供接口文檔->編寫接口測試用例->用例評審-進入測試階段->提交測試報告。 
  接口文檔包含的基本內容有接口描述、請求地址、請求方式、入參(要說明數據類型、是否必填)、返回參數說明和示例。接口測試用例包含的要素有項目、模塊、用例id、接口名稱、用例標題、請求方式、請求url、請求參數、前置條件、結果驗證、請求報文、返回報文、測試結果和測試人員等。 
  目前接口測試工具太多,http api接口的測試工具比如有:fiddler、postman、restclient、charles、jemeter,webservice接口的測試工具有soapui。

二、 SoapUI工具

webservice接口不需要拼報文,直接在SoapUI導入,就可以看到裏面的所有接口。SoapUI工具基本上就是解析wsdl地址,針對出現的接口設計建立testcase進行全面測試,簡單如下所示: 
SoapUI

三、postman

postman是谷歌瀏覽器的一個插件,它可以用來做接口測試,發送get、post請求,添加cookie、header、權限驗證信息,查看接口返回接口,接口響應時間等。

發送get、post請求

  • get請求直接在接口請求地址後面拼接參數,參數之間通過“&”拼接。同時get請求可以直接在瀏覽器裏訪問。get請求例子如下所示:

這裏寫圖片描述

  • post請求參數一般放在body裏,key-value參數類型可以直接在請求地址後面拼接參數,json串參數類型就不能直接在請求地址後面拼接參數。post請求例子如下:

這裏寫圖片描述

不同的參數類型

傳參類型包括key_value和json串兩種形式。

  • key_value傳參如下:

這裏寫圖片描述

  • json串傳參如下: 
    body裏選擇“raw”,同時選擇“json”,例子如下: 
    這裏寫圖片描述

添加信息

添加信息包括http請求添加權限驗證Authorization、添加header頭信息、添加cookie信息。

  • 添加權限驗證例子如下:

這裏寫圖片描述

  • 添加header頭信息例子如下:

這裏寫圖片描述

  • headers裏添加“Cookie”,同時添加cookie需要裝inerceptor插件,例子如下: 
    這裏寫圖片描述

上傳文件

  • body裏添加名稱爲“file”的Key。請求上傳文件例子如下:

這裏寫圖片描述

四、fiddler

fiddler有很多功能,比如自動發請求,修改請求頭、修改請求響應、設置斷點和限速等等。這裏主要說用fiddler設置代理,抓取相關接口請求,打上斷點,修改接口信息操作。

  • 過濾請求Filters

    filters可以過濾只顯示指定的請求。最關鍵的是‘Hosts Filter’,其中‘No Host Filter’是不過濾host的請求,‘Hide the following Hosts’是隱藏不顯示指定的域名請求,‘Show only the following Hosts’是僅僅顯示指定的域名請求,最後一個‘Flag the following Hosts’是標記指定的域名請求,其他的請求也會顯示,只是不做標記。

    下面是過濾指定顯示天天網和百度網的請求例子,如下所示: 
    這裏寫圖片描述

  • 請求重定向AutoResponder

請求重定向就是把前端的一些css、js、圖片和接口請求等返回結果替換成我們想要的結果。重要提示:記得一定要勾選‘Enable rules’和‘Unmatched requests passthrough’

(1)替換接口請求響應數據。比如修改登錄接口返回的數據,使得用戶登錄失敗的例子。接口返回的json格式數據,則先寫好我們要替換上去的json文件,然後fiddler抓到登錄請求接口,讓它請求到我們的json文件,效果如下:

這裏寫圖片描述

這裏寫圖片描述

(2)替換圖片請求資源文件

我們使用fiddler抓捕這個文件請求,替換圖片。比如土豆網的視頻封面,替換成本地的任意圖片的例子如下: 
這裏寫圖片描述

這裏寫圖片描述

(3)請求響應設置404或502等狀態碼,查看頁面加載樣式。 
這裏寫圖片描述

這裏寫圖片描述

  • 修改請求頭Before Requests(從前端讀到請求後,在請求被髮送到服務端之前)

    (1)先打開勾選Rules->Automatic Breakpoints->Before requests

    這裏寫圖片描述

(2)刷新頁面重新請求,fiddler截取請求,修改請求頭。比如截取土豆網的發送評論接口,修改評論內容,截圖所示:

這裏寫圖片描述

(3)點擊‘Run to Completion’,查看請求響應和前端顯示是否成功。

這裏寫圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章