前言
當我們學(xué)習(xí)到如何理解接口的本質(zhì)叉袍、一個接口的原理,以及接口測試的意義(http://www.reibang.com/p/bb242391be6d)刽酱。接下來我們就通過一些項目實操進一步理解接口測試:
首先喳逛,接口測試是基于協(xié)議的黑盒測試,在進行接口自動化之前棵里。所以我們首先不得不來看看一個最簡單的接口長什么樣润文,然后怎么來測試一個接口蜡峰,校驗接口的響應(yīng)值斟或。
就如同我們的功能測試一樣缴饭,所有基于界面的功能UI自動化也是在功能測試完成之后進行的娩梨,大多數(shù)用于回歸測試怕享。
由于歷史原因鸥印,剛開始接觸接口測試震束,一般是基于測試工具淑倾。比如接口調(diào)試神器postman乔夯,開發(fā)和測試都用它來調(diào)試和測試接口砖织。
那么問題來了,我需要測試接口末荐,接口信息從哪里獲取呢侧纯?
常用的有三種方式:
1、通過抓包工具比如fiddle甲脏、charles獲取接口信息眶熬。
2妹笆、通過瀏覽器開發(fā)者工具,networks查看接口請求信息娜氏。
3拳缠、最直接最靠譜的就是接口文檔,就是接口的需求文檔贸弥。一個規(guī)范的接口文檔最基本的應(yīng)該包含了:接口請求地址窟坐、請求方法、請求頭信息說明绵疲、接口入?yún)⒄f明(包括參數(shù)的類型哲鸳、是否必填、長度范圍等)盔憨、接口響應(yīng)示例等徙菠。
當然現(xiàn)在很多公司沒有接口文檔,但接口的重要性這里就不敘述了郁岩,這個時候我認為測試人員應(yīng)當主動提出來婿奔,開發(fā)需要編寫接口文檔,在測試工作中不能太被動问慎。
這里演示部分的接口是我本地用Flask搭建的mockserve脸秽,需要搭建的朋友可以聯(lián)系我。
實例一:demo
接口信息:
地址 :127.0.0.1:5000/api/demo
GET類型:
參數(shù)為limit 非必填 蝴乔,表示獲取數(shù)據(jù)限制
打開postman记餐,請求demo接口,如圖所示:
這個demo接口由于可以不填任何參數(shù)薇正,和請求頭部信息片酝,所以操作非常簡潔。輸入接口地址挖腰,選擇接口請求方法雕沿,點擊send直接請求成功,或者接口的響應(yīng)狀態(tài)碼猴仑,和響應(yīng)值审轮。
那如果get請求有參數(shù)入?yún)⒃趺凑埱竽兀咳鐖D所示:
在Params中以鍵值對的形式填寫參數(shù)辽俗,大家發(fā)現(xiàn)這個時候接口響應(yīng)值里面的info字段只有一條數(shù)據(jù)信息了疾渣,那當然limit為2時,就返回2條數(shù)據(jù)崖飘。細心的朋友可能已經(jīng)發(fā)現(xiàn)get接口的參數(shù)直接拼接在url后面榴捡,如:http://127.0.0.1:5000/api/demo?limit=1,get接口也可以直接在瀏覽器中請求朱浴,獲取響應(yīng)值吊圾。
下面我們通過一個實例2306查詢車次信息接口來理解之前講到的接口請求頭信息中的cookie达椰。
實例二
通過瀏覽器開發(fā)者工具獲取接口地址,請求方法项乒,參數(shù),響應(yīng)值等如圖所示:
然后像實例一在postman里面輸入接口地址啰劲、參數(shù)、發(fā)送請求檀何,卻發(fā)現(xiàn)請求失敗了呈枉。(小朋友,你是否有很多問號埃碱?)
那為什么在網(wǎng)頁中這個接口請求沒有問題,到postman里面來就失敗了呢酥泞。其實當web開發(fā)人員去向后端請求這個接口的時候砚殿,會把瀏覽器一些網(wǎng)站信息、用戶的登錄狀態(tài)芝囤、用戶的瀏覽習(xí)慣等通過Request Headers中的cookie傳給后端似炎,但是postman卻不會。
那我就在postman里面模擬添加請求頭信息(頭信息在瀏覽器中可以獲取)悯姊,如圖所示:
請求成功了羡藐,是不是有點意思。通過兩個get接口實例悯许,理解接口測試和cookie仆嗦。那么接下來我們看一個post類型的接口,順便理解一下常見的token先壕,這也是面試常問的一個問題瘩扼,問到接口鑒權(quán)如何測試。
實例三:login
接口信息:
地址127.0.0.1:5000/api/login POST類型
參數(shù) username 表示登錄用戶名
密碼 password 表示登錄密碼
Content-Type:application/json
如圖所示:
post接口首先選擇body參數(shù)垃僚,再輸入?yún)?shù)發(fā)送請求集绰。可以看到登錄接口如果請求成功了谆棺,就返回了一個token栽燕,就像身份證id,每個人都有一個唯一的改淑。
對面試經(jīng)驗碍岔、軟件、接口朵夏、自動化測試感興趣的可以175317069付秕,群內(nèi)會有不定期免費資料鏈接發(fā)放,這些資料都是從各個技術(shù)網(wǎng)站搜集侍郭、整理出來的询吴。
token鑒權(quán)掠河,簡單來說就是要不要登錄。一般來說猛计,一個系統(tǒng)的所有接口都需要鑒權(quán)才能請求唠摹,換句話說先要請求這個系統(tǒng)的登錄接口,拿到服務(wù)端響應(yīng)認證奉瘤,才能去請求其它接口勾拉,一般放在請求頭headers或者body參數(shù)里面。如果請求其它接口沒有傳token就會提示無權(quán)限訪問或者未登錄盗温。
OK藕赞,我們已經(jīng)對常用的get和post掌握了,當然還有其它很多類型的接口測試卖局,比如delete斧蜕、put等,還有入?yún)閒orm-data類型的接口砚偶,比如文件上傳接口批销,還有不同協(xié)議的接口,比如webservice等染坯,我們都需要通過實例去了解均芽。
當理解了各種類型的接口測試之后,我們就可以進行接口自動化了单鹿,得到一套落地有效的接口自動化測試方案掀宋,可以根據(jù)實際測試需求自主封裝搭建適合項目的測試框架,然后后面可以聊一聊自動化測試框架仲锄。