什么是接口測試喂击?
接口測試是測試系統(tǒng)組件間接口的一種測試昼榛。接口測試主要用于檢測外部系統(tǒng)與系統(tǒng)之間以及內(nèi)部各個子系統(tǒng)之間的交互點税迷。測試的重點是要檢查數(shù)據(jù)的交換永丝,傳遞和控制管理過程,以及系統(tǒng)間的相互邏輯依賴關(guān)系等箭养。
--來源“百度百科”
我的理解:接口測試就是通過組裝一系列的入?yún)⒌玫较鄳?yīng)的出參后慕嚷,判斷接口是否符合或滿足既定要求。這個要求可以是功能上的毕泌,也可以是性能上的或者是安全方面的喝检。
接口測試中沒有頁面UI、前端交互這些撼泛,只需按接口說明文檔來組裝參數(shù)挠说,模擬用戶請求,驗證返回結(jié)果是否正確愿题。一般我們需要借助工具來完成损俭,如:postman、Jmeter潘酗、SoapUI等杆兵。
這里提到了“前端”,那與之對應(yīng)的就是“后端”仔夺,簡單的講下什么是前端琐脏、后端。
我們打開的網(wǎng)頁缸兔、使用的app就是前端日裙,那些漂亮的頁面,豐富多彩的內(nèi)容就是前端渲染出來的惰蜜。為這些頁面昂拂、內(nèi)容提供數(shù)據(jù)支撐和業(yè)務(wù)邏輯處理的就是后端,通過接口傳輸蝎抽。當(dāng)然前端也會做一些簡單的業(yè)務(wù)處理政钟,如:非空校驗路克、輸入長度限制等樟结。
通常來說,接口有2種:程序內(nèi)部接口和系統(tǒng)對外接口精算。
系統(tǒng)對外接口:從字面意思來理解就是對外部系統(tǒng)提供服務(wù)的瓢宦,像現(xiàn)在我們見到的很多app都有微信登錄的功能,這就是調(diào)用了微信對外提供接口灰羽。像我現(xiàn)在所在公司以app開發(fā)為主驮履,那接觸到的都是對外接口鱼辙。
程序內(nèi)部接口:程序內(nèi)部方法與方法、模塊與模塊之間的交互玫镐。
為什么要做接口測試倒戏?
結(jié)合自身經(jīng)驗,總結(jié)如下:
- 測試先行恐似。在后端人員開發(fā)出接口后杜跷,我們就可以開始測試了,不需要等前端人員開發(fā)完矫夷,能提前發(fā)現(xiàn)并解決一些問題葛闷。
- 一些前端頁面操作發(fā)現(xiàn)不了的問題可以通過接口測試發(fā)現(xiàn)
- 一些前端不好模擬的場景可以通過接口來快速完成,如:多個人同時搶一個紅包
- 檢測異常處理能力
- 檢測系統(tǒng)的性能双藕、安全性等
- 相比UI自動化測試淑趾,接口自動化測試成本更低
接口測試難嗎?
不難忧陪!對于剛?cè)胄械娜藖碚f扣泊,“接口”這個概念可能難以理解,然后就認(rèn)為接口測試好高大上的樣子嘶摊。
萬變不離其宗旷赖,做測試也是如此。任何一種類型的測試都需要先了解需求更卒,熟知業(yè)務(wù)等孵,然后梳理流程,整理測試點蹂空。核心思想有了俯萌,面紗揭開了,剩下的只是實現(xiàn)的手段了上枕。
接口由什么組成咐熙?
做接口測試,首先要知道接口的組成辨萍。通常我們接觸到的是web接口棋恼,常見的web接口有http接口(基于http協(xié)議)、webservice接口(基于soup等協(xié)議)锈玉。
一個接口包含這么幾部分:協(xié)議爪飘,IP、端口(也可以是Host)拉背,請求路徑师崎,參數(shù)及參數(shù)值,請求體椅棺,請求方式犁罩,請求頭齐蔽。
- 請求協(xié)議
常見的有http和https,https是加密的http請求床估,傳輸數(shù)據(jù)更安全
- 請求IP含滴、端口
如:127.0.0.1:8080,也可以是域名丐巫,通常叫Host
- 請求路徑
接口的具體地址
- 請求方式(method)
常用的有以下4種:
get:獲取數(shù)據(jù)
post:提交數(shù)據(jù)蛙吏,如表單,一般是新加內(nèi)容
put:修改數(shù)據(jù)鞋吉,有時候也會用post
delete:刪除數(shù)據(jù)
- 請求參數(shù)及參數(shù)值
接口路徑后“?”后的那一段鸦做,key=value這種形式,多個參數(shù)用“&”連接
- 請求體(body)
請求正文谓着,可以是表單泼诱,也可以是json、xml赊锚、html等格式治筒。
- 請求頭(header)
客戶端環(huán)境以及一些請求的校驗信息,如:cookie舷蒲、token等耸袜。
一般開發(fā)會提供接口說明文檔,我們按照說明文檔來組裝即可牲平。
接口測試用例怎么設(shè)計堤框?
接口測試其實也是一種功能測試,所以在設(shè)計用例時可以參照功能測試用例的思路纵柿。
從大方向來說蜈抓,可以歸結(jié)為以下幾點:
1、單接口的測試用例設(shè)計
正常場景:按接口文檔上的說明昂儒,傳入正確的參數(shù)和值沟使,看能不有得到正確的返回結(jié)果。異常場景:不按文檔說明來傳渊跋,如:必填參數(shù)未填說明傳整形的傳個字符串類型腊嗡;長度為11,傳的10或者12拾酝。參數(shù)組合:有些接口不同的參數(shù)組合會得到不同的結(jié)果燕少,所以需要一一驗證不同的參數(shù)組合時,得到的結(jié)果是不是正確的微宝。
2棺亭、業(yè)務(wù)邏輯測試用例設(shè)計
這個就要具體業(yè)務(wù)具體分析了虎眨,可能會涉及到多個接口間數(shù)據(jù)的傳遞蟋软。舉幾個例子:
支付密碼連續(xù)輸入5次后镶摘,凍結(jié)24小時;
注冊成功后岳守,需要自動登錄(登錄接口要返回用戶token)凄敢;
闖關(guān)需要消耗精力;
拼手氣紅包不能多發(fā)
......
3湿痢、其他場景
根據(jù)實際情況來涝缝,補充在單接口和業(yè)務(wù)邏輯上沒有覆蓋到的場景,如:
接口響應(yīng)時間不能超過200ms譬重;
敏感信息需要加密拒逮;
并發(fā)測試,大量數(shù)據(jù)測試等臀规。
用什么工具測滩援?
接口測試的工具有很多,推薦postman和Jmeter塔嬉。
postman:使用簡單玩徊,功能強大的一款A(yù)PI測試工具,也是開發(fā)人員常用的一款工具谨究,支持用例管理恩袱、自動化、環(huán)境管理胶哲、變量管理畔塔、批量運行、多人協(xié)作等鸯屿。下載地址:https://www.postman.com/downloads/俩檬。
Jmeter:一款由Java語言開發(fā)出來的測試工具,主要用來做性能測試碾盟。Java環(huán)境下直接運行棚辽,無需要安裝,內(nèi)存占用小冰肴,輕便簡單屈藐,免費開源。下載地址:https://jmeter.apache.org/download_jmeter.cgi熙尉。
注意:
在Jmeter中联逻,如果是https請求,端口號填443检痰;
當(dāng)Body Data添加內(nèi)容后包归,需要注意在請求頭里添加對應(yīng)的Content-Type,如:請求體是json格式時铅歼,添加Content-Type的值為application/json(我第一次在Jmeter中添加請求體是json格式的接口時公壤,就踩了這個坑)
說到底工具只是一種手段换可,一種工具會用了,舉一反三厦幅,其他工具也不會太難沾鳄。了解原理,理解業(yè)務(wù)确憨,把握核心才是關(guān)鍵译荞。