一:接口測試前准備
接口測試是基於協議的功能黑盒測試,在進行接口測試之前,我們要了解接口的信息,然后才知道怎么來測試一個接口,如何完整的校驗接口的響應值。
那么問題來了,那接口信息從哪里獲取呢?常用的有三種方式:
-
通過抓包工具比如fiddle,charles獲取接口信息
-
通過瀏覽器開發者工具,networks查看接口請求信息
-
當然最直接和最靠譜的就是接口文檔,這就是接口的需求文檔
一個規范的接口文檔最基本的應該包含了:
-
接口請求地址、請求方法、請求頭信息說明
-
接口入參說明(包括參數的類型、是否必填、長度范圍等)
-
接口響應示例、響應狀態碼
現在很多公司沒有接口文檔,但是接口的重要性我這里就不累贅了,我認為測試人員應該主動提出來,開發需要編寫接口文檔,在測試工作中需要更加主動。下面是我編寫的swagger的接口文檔,大家可以參考一下:
二:接口測試實戰
一般剛開始接觸接口測試都是基於測試工具,比如接口調試神奇postman,開發和測試都用它來調試和測試接口。
這里演示部分的接口是用Flask搭建的Mock Serve,后續也會分享如何從0搭建接口項目
實例一:demo
接口信息:
地址 :127.0.0.1:5000/api/demo
GET類型
參數為limit 非必填 ,表示獲取數據限制
我們打開postman,請求demo接口,如圖所示:
這個demo接口由於可以不填任何參數,和請求頭部信息,所以操作非常簡潔,輸入接口地址,選擇接口請求方法,點擊send直接請求成功,或者接口的響應狀態碼,和響應值。那如果get請求有參數入參怎么請求呢?如圖所示:
在Params中以鍵值對的形式填寫參數,大家發現這個時候接口響應值里面的info字段只有一條數據信息了,那當然limit為2時,就返回2條數據。細心的朋友可能已經發現get接口的參數直接拼接在url后面,如:http://127.0.0.1:5000/api/demo?limit=1,get接口也可以直接在瀏覽器中請求,獲取響應值
三:理解cookie
通過一個實例12306查詢車次信息接口來理解講接口請求頭信息中的cookie,打開瀏覽器開發者工具獲取接口地址,請求方法,參數,響應值等如圖所示:
然后像實例一在postman里面輸入接口地址和參數,發送請求,但是,請求失敗了,小朋友,你是否有很多問號:
那為什么在網頁中這個接口請求沒有問題,到postman里面來就失敗了。其實當web開發人員去向后端請求這個接口的時候,會把瀏覽器一些網站信息,用戶的登錄狀態,用戶的瀏覽習慣等通過Request Headers中的cookie傳給后端,但是postman就不會。那我就在postman里面模擬添加請求頭信息(頭信息在瀏覽器中可以獲取),如圖所示:
果然就請求成功了,是不是有點意思,通過倆個get接口實例,理解接口測試和cookie。那么接下來我們看一個post類型的接口,順便理解一下常見的token,這也是面試常問的一個問題,問到接口鑒權如何測試
四:接口測試實戰之post接口
接口信息:地址127.0.0.1:5000/api/login POST類型
參數 username 表示登錄用戶名
密碼 password 表示登錄密碼
Content-Type:application/json
如圖所示:
post接口首先選擇Body參數,再輸入參數發送請求。我們可以看到登錄接口如果請求成功了,就返回了一個token,就像身份證ID,每個人都有都是唯一的。該token就是這個人員的通行證。
token鑒權,簡單來說,就是要不要登錄,一般來說,一個系統的所有接口都需要鑒權才能請求,換句話說先要請求這個系統的登錄接口,拿到服務端響應認證,才能去請求其它接口,一般放在請求頭headers或者body參數里面。如果請求其它接口沒有傳token就會提示無權限訪問或者未登錄
對於http協議我們已經掌握常用的get和post接口測試,那當然還有其它很多類型的接口測試,比如delete,put等,還有入參為form-data類型的接口,比如文件上傳接口
那么對於不同協議的接口,比如webservice等,dubbo接口我們都需要通過實例去了解。當理解了各種類型的接口測試之后,我們就可以進行接口自動化了,得到一套落地有效的接口自動化測試方案,可以根據實際測試需求自主封裝搭建適合項目的測試框架。
最后,有需要的可以關注我,公號后台領取視頻演示教程