摘自http://www.51testing.com/html/15/n-3721815.html
你是否有這樣的疑慮综苔?
1位岔、到底什么是接口,接口長什么樣杨刨?
2擦剑、什么情況下進行接口測試?
3、接口文檔到底是什么捉撮?
4妇垢、測試接口的正確姿勢是什么肉康?
什么情況下展開接口測試灼舍?
1骑素、項目處于開發(fā)階段炫乓,前后端聯(lián)調(diào)接口是否請求成功
2末捣、有接口文檔创橄,開發(fā)已完成聯(lián)調(diào),功能測試展開之前
3邦邦、專項測試:如測流量大小醉蚁、查看圖片壓縮大小、測試接口請求響應(yīng)時間
4郭赐、版本上線前确沸,進入整體回歸測試,查看接口是否有異常
5观谦、版本功能文檔后桨菜,接口自動化
什么是接口?
計算機中包括硬件接口和軟件接口泻红。電腦等信息機器硬件組件間的接口叫硬件接口霞掺,是可以看到的以實物存在的如串口菩彬、并口等潮梯;而電腦等信息機器軟件組件間的接口叫軟件接口惨恭。而軟件接口則是虛擬存在的接口脱羡。
接口廣義的定義為:泛指實體把自己提供給外界的一種抽象化物(可以為另一實體),用以由內(nèi)部操作分離出外部溝通方法轻黑,使其能被修改內(nèi)部而不影響外界其他實體與其交互的方式氓鄙。
接口狹義的定義為:是指特定的函數(shù)集合,一般是用interface(Delphi)聲明的升酣,它表示一個方法集合态罪,這個集合被成為一個命名接口。一個命名接口中的方法必須在一個類中實現(xiàn)后才能被使用绩聘,一個類繼承實現(xiàn)一個接口耗啦,稱為這個類實現(xiàn)了該接口,一個接口可以被多個類實現(xiàn)衅谷,一個類也可以實現(xiàn)繼承多個接口似将,這樣就形成了一種靈活的接口調(diào)用的方式,從而實現(xiàn)更加靈活和節(jié)省資源的多態(tài)玷氏。
接口測試的分類
接口測試分為模塊接口測試和Web接口測試预茄。模塊接口測試需要對代碼有一定的掌握能力,可以劃分到白盒測試中;而Web接口測試分為服務(wù)器接口測試和外部接口測試刨沦。
1、服務(wù)器接口測試:是測試瀏覽器與服務(wù)器的接口召庞。這個很容易理解来破,我們知道web開發(fā)一般分前端和后端徘禁,前端開發(fā)人員用HTML/CSS/JavaScript等技術(shù)。后端開發(fā)人用PHP/JAVA/Python/Ruby等各種語言娘荡。用戶輸入的數(shù)據(jù)是輸入到的前端頁面上驶沼,怎樣把這些數(shù)據(jù)傳遞的后臺的呢?通過HTTP協(xié)議的GET與POST請求來實現(xiàn)前后端的數(shù)據(jù)傳遞大年。這也可認(rèn)為是接口測試玉雾,調(diào)用的登錄接口還是查詢接口抹凳,傳參的是用戶密碼還是搜索關(guān)鍵字。
2赢底、外部接口測試:這個很典型的例子就是第三方登錄幸冻,比如你做的新系統(tǒng)免于新用戶重新注冊的麻煩會提供第三方登錄,那用戶在登錄的時候調(diào)用的就是第三方登錄的接口庞溜,由第三方驗證用戶名和密碼并且返回給當(dāng)前系統(tǒng)。
接口測試的意義
1又官、保證系統(tǒng)的穩(wěn)定性:
一個系統(tǒng)的服務(wù)端越接近底層漫试,對系統(tǒng)的影響就越大,甚至有可能牽一發(fā)而動全身外构,服務(wù)端的一個缺陷可能會引起客戶端的幾個甚至十幾個缺陷播掷,更可怕的是服務(wù)端的缺陷有可能引起系統(tǒng)的崩潰歧匈,這對整個系統(tǒng)來說垒酬,損失將是不可估量的,因此服務(wù)端接口的質(zhì)量將直接影響到系統(tǒng)的正確和穩(wěn)定眯亦。
然而伤溉,在實際的開發(fā)過程中,開發(fā)人員并沒有充足的時間編寫單元測試妻率,并且他們往往對自己編寫的代碼有足夠的信心乱顾,不愿意將時間“浪費”在編寫單元測試身上。這個時候接口測試就肩負(fù)著重要的作用宫静。
2走净、將bug控制在項目前期:
就筆者所做的微信活動而言,后端系統(tǒng)比較成熟孤里,對于前端開發(fā)來說伏伯,每個活動都有很大不同捌袜。這就導(dǎo)致后端接口開發(fā)只需要一天就可完成说搅,而前端開發(fā)的工作量至少需要兩、三天虏等。而在這個空當(dāng)期就可以充分的對接口進行測試弄唧,從而盡早的發(fā)現(xiàn)系統(tǒng)bug;減少功能測試的工作量霍衫,縮短產(chǎn)品的發(fā)布周期候引。
3、檢查服務(wù)器的異常處理能力:
我們通常把前端的驗證稱為弱驗證敦跌,因為它很容易被繞過澄干,這個時候如果只站在功能的層面時行測試,就很難發(fā)現(xiàn)一些安全的問題。不以前功能為入口的接口測試就會發(fā)揮出它的作用麸俘。
接口測試的用例設(shè)計流程
首先辩稽,明確出發(fā)點。和所有的測試一樣疾掰,接口測試出發(fā)點是你要證明所測的程序是錯誤的搂誉。以這個出發(fā)點為導(dǎo)向,你的設(shè)計行為就會盡量朝這個方向發(fā)展静檬,更易發(fā)現(xiàn)問題,不會出現(xiàn)大方向的偏差并级。
其次拂檩,選擇好測試對象。對于一個系統(tǒng)做接口測試選擇好的測試對象是接口測試關(guān)鍵嘲碧。一個系統(tǒng)有無數(shù)的接口稻励,每個接口如果分別測試,那將是很痛苦的一件事情愈涩,不光繁瑣浪費望抽,而且任何一個內(nèi)部接口的變動,都將導(dǎo)致我們用例的不可用履婉。這里推薦把整個系統(tǒng)作為一個整體煤篙,選擇整個系統(tǒng)提供給外部使用、交互的最外層接口作為你的測試對象毁腿,以此為測試對象的用例將有很好的健壯性辑奈,并且更高效。另外已烤,根據(jù)數(shù)據(jù)的流向鸠窗,又可將這些最外層的接口分為兩類:一類是數(shù)據(jù)進入系統(tǒng)的接口;一類是數(shù)據(jù)流出系統(tǒng)的接口胯究。進入系統(tǒng)的接口實際是我們用例的執(zhí)行調(diào)用的接口稍计。可通過變化參數(shù)對這些接口進行調(diào)用裕循,模擬外部的使用臣嚣;而流出的接口則是我們用例真正該驗證的點。數(shù)據(jù)從哪里流出费韭,流出時的狀態(tài)如何茧球,此時系統(tǒng)又是什么狀態(tài)都是我們所應(yīng)該驗證的。
然后星持,確認(rèn)完整的測試對象的功能:確認(rèn)外部接口提供給使用這些接口的外部用戶什么樣的功能抢埋,外部用戶真正需要什么樣的功能。此兩個功能一定要準(zhǔn)確詳細(xì),用例的設(shè)計要嚴(yán)格按照測試對象功能設(shè)計才是正確的用例揪垄。
最后當(dāng)出發(fā)點穷吮、對象、功能都確定了饥努,就可以真正設(shè)計用例了捡鱼。
接口測試用例設(shè)計舉例
我覺得接口測試用例的設(shè)計方法其實和功能測試用例的設(shè)計方法是類似的,參考如下:
1.輸入?yún)?shù)測試:針對輸入的參數(shù)進行測試酷愧,也可以說是假定接口參數(shù)的不正確性進行的測試驾诈,確保接口對任意類型的輸入都做了相應(yīng)的處理:
輸入?yún)?shù)合法,
輸入?yún)?shù)不合法溶浴,
輸入?yún)?shù)為空乍迄,
輸入?yún)?shù)為null,
輸入?yún)?shù)超長士败;
2.功能測試:接口是否滿足了所提供的功能闯两,相當(dāng)于是正常情況測試,如果一個接口功能復(fù)雜時推薦對接口用例進行結(jié)構(gòu)劃分谅将,這樣子用例具有更好的可讀性和維護性漾狼。
3.邏輯測試:邏輯測試嚴(yán)格講應(yīng)為單元測試,單元測試應(yīng)保持內(nèi)部邏輯的正確性饥臂,可單元測試和接口測試界限并不是那么清楚逊躁,所以我們也可以從給出的設(shè)計文檔中考慮內(nèi)部邏輯錯誤的分支情況和異常;
4.異常情況測試:接口實現(xiàn)是否對異常情況都進行了處理擅笔,接口輸入?yún)?shù)雖然合法志衣,但是在接口實現(xiàn)中,也會出現(xiàn)異常猛们,因為內(nèi)部的異常不一定是輸入的數(shù)據(jù)造成的念脯,而有可能是其他邏輯造成的,程序需要對任何的異常都進行處理弯淘。
接口文檔舉例
下圖為簡單的接口文檔绿店,包括URL,調(diào)用方式庐橙,傳入?yún)?shù)假勿,返回值,狀態(tài)碼等等~~