一、粗談接口測試
接口有兩種分類:一種是程序內部的接口,一種是系統對外的接口。目前最常用的兩種接口就是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進行全面測試,簡單如下所示:
三、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’,查看請求響應和前端顯示是否成功。