接口測(cè)試系列文章之接口測(cè)試的核心概念
開發(fā)口中的接口是什么?
我相信絕大多數(shù)測(cè)試同學(xué)聽聞“接口”二字都源于開發(fā)同學(xué)。書本中的標(biāo)準(zhǔn)接口定義叫Interface,在JAVA編程語言中接口是一個(gè)抽象類型,是抽象方法的集合,接口通常以interface來聲明。一個(gè)類通過implements關(guān)鍵字實(shí)現(xiàn)接口,從而來重寫接口中的抽象方法。
例如:
- interface Animal {
- public void eat();
- public void travel();
- }
- class Cat implements Animal {
- public void eat() {
- // TODO Auto-generated method stub
- }
- public void travel(){
- // TODO Auto-generated method stub
- }
- }
而實(shí)際工作中開發(fā)同學(xué)常常掛在嘴邊的接口并不是理論上的接口interface,通常通過以下面兩種方式體現(xiàn):
1.就是一個(gè)http請(qǐng)求
例如:http://host:port/getAllPeople
這個(gè)請(qǐng)求就是一個(gè)接口,當(dāng)你發(fā)送這個(gè)url后,會(huì)從服務(wù)器端收到請(qǐng)求。服務(wù)端的核心代碼是,有一個(gè)方法來判斷url是什么,如果匹配到getAllPeople,則調(diào)用相關(guān)的方法,例如getAllPeople(){//具體實(shí)現(xiàn)代碼}
2.就是不通過http請(qǐng)求,直接調(diào)用方法getAllPeople(){//具體實(shí)現(xiàn)代碼}
而對(duì)于我們測(cè)試人員最為關(guān)注的是第一種方式,即通過http請(qǐng)求調(diào)用后端服務(wù)代碼,因?yàn)闇y(cè)試同學(xué)代碼相對(duì)薄弱,直接通過代碼調(diào)用的方式進(jìn)行接口測(cè)試難度較高,另外好多公司的研發(fā)代碼是絕對(duì)保密的,研發(fā)團(tuán)隊(duì)以外的人很難獲取代碼。
為什么近年接口測(cè)試這么火爆呢?
傳統(tǒng)的開發(fā)模式轉(zhuǎn)變,從過去的瀑布到如今的敏捷;
移動(dòng)互聯(lián)網(wǎng)的普及,用戶頁面需求變更頻繁,但是服務(wù)端接口相對(duì)穩(wěn)定;
微服務(wù)的興起,好多服務(wù)根本沒有供測(cè)試人員的UI可點(diǎn),我們只能對(duì)服務(wù)端進(jìn)行接口測(cè)試。
常見的接口類型
- HTTP接口,
- RPC接口,
- Web Service接口,
- Dubble接口,
- RESTful接口,
其中RESTful接口是基于HTTP接口的,Web Service及Dubble屬于RPC接口。目前HTTP接口是最核心也是應(yīng)用最廣泛的接口!
接口測(cè)試的核心測(cè)試點(diǎn)
校驗(yàn)接口參數(shù)是否達(dá)到要求(邊界、業(yè)務(wù)規(guī)則)
校驗(yàn)接口返回?cái)?shù)據(jù)的正確性與格式
校驗(yàn)接口覆蓋率是否達(dá)到要求(一般要求核心接口要達(dá)到100%的測(cè)試率,非核心接口根據(jù))
性能指標(biāo)是否滿足要求(接口的響應(yīng)時(shí)間、處理能力)
安全指標(biāo)是否滿足要求(一般接口都不會(huì)暴露在網(wǎng)上任意被調(diào)用,需要做一些限制,比如鑒權(quán)或認(rèn)證。)
接口測(cè)試較UI測(cè)試的優(yōu)勢(shì)
1.接口測(cè)試相對(duì)容易實(shí)現(xiàn)自動(dòng)化持續(xù)集成,且相對(duì)UI自動(dòng)化也比較穩(wěn)定
2.測(cè)試可以更早的介入(具體的時(shí)間點(diǎn)應(yīng)該是在后臺(tái)接口開發(fā)基本完畢之后,需要模塊間進(jìn)行接口聯(lián)調(diào)的時(shí)候)
3.可以發(fā)現(xiàn)功能測(cè)試覆蓋不到的服務(wù)端問題
接口測(cè)試開展的四個(gè)步驟
1.確認(rèn)接口文檔的準(zhǔn)確性,這是接口測(cè)試通過與否的標(biāo)準(zhǔn)
2.準(zhǔn)備接口測(cè)試數(shù)據(jù)
3.構(gòu)建接口
代碼選擇java的httpclient jar包或者python的requests模塊
工具選擇postman、jmeter等
4.校驗(yàn)接口請(qǐng)求,在成功調(diào)用接口后,獲取接口的響應(yīng)數(shù)據(jù),根據(jù)接口文檔來判斷接口測(cè)試的通過與否
做好接口測(cè)試必備的知識(shí)點(diǎn)
了解OSI網(wǎng)絡(luò)模型,TCP/UDP協(xié)議,掌握HTTP/HTTPS協(xié)議,了解RPC, Web Service及REST,理解Session和Cookie;
掌握常用的接口測(cè)試工具Postman,Jmeter,SoupUI等;
掌握基本的抓包工具如Chrome開發(fā)者工具,Fiddler,Wireshark等;
掌握一門編程語言Python或Java;
了解Nginx, Apache, Tomcat等服務(wù)器中間件;
掌握數(shù)據(jù)庫基本查詢命令,及Redis操作,用于檢查響應(yīng)結(jié)果;
掌握基本的Linux日志查詢和篩選命令。
總結(jié)
其實(shí)接口測(cè)試開展的順利與否,技術(shù)并不占主要因素(核心技術(shù)就是我講的這么多,你會(huì)了就可以從事接口測(cè)試了)。個(gè)人覺得溝通才是接口測(cè)試成敗的核心,因?yàn)榻涌跍y(cè)試的開展以及接口文檔的編寫需要開發(fā)人員大量的配合,這是極其需要溝通技巧的!(溝通問題不是本文的討論范圍)