你是否有這樣的疑慮节芥?
1平匈、到底什么是接口,接口長什么樣?
2增炭、什么情況下進(jìn)行接口測試忍燥?
3、接口文檔到底是什么隙姿?
4梅垄、測試接口的正確姿勢是什么?
什么情況下展開接口測試输玷?
1队丝、項目處于開發(fā)階段,前后端聯(lián)調(diào)接口是否請求成功
2欲鹏、有接口文檔机久,開發(fā)已完成聯(lián)調(diào),功能測試展開之前
3赔嚎、專項測試:如測流量大小膘盖、查看圖片壓縮大小、測試接口請求響應(yīng)時間
4尤误、版本上線前侠畔,進(jìn)入整體回歸測試,查看接口是否有異常
5损晤、版本功能文檔后软棺,接口自動化
什么是接口?
計算機(jī)中包括硬件接口和軟件接口尤勋。電腦等信息機(jī)器硬件組件間的接口叫硬件接口喘落,是可以看到的以實(shí)物存在的如串口、并口等最冰;而電腦等信息機(jī)器軟件組件間的接口叫軟件接口揖盘。而軟件接口則是虛擬存在的接口。
接口廣義的定義為:泛指實(shí)體把自己提供給外界的一種抽象化物(可以為另一實(shí)體)锌奴,用以由內(nèi)部操作分離出外部溝通方法兽狭,使其能被修改內(nèi)部而不影響外界其他實(shí)體與其交互的方式。
接口狹義的定義為:是指特定的函數(shù)集合鹿蜀,一般是用interface(Delphi)聲明的箕慧,它表示一個方法集合,這個集合被成為一個命名接口茴恰。一個命名接口中的方法必須在一個類中實(shí)現(xiàn)后才能被使用颠焦,一個類繼承實(shí)現(xiàn)一個接口,稱為這個類實(shí)現(xiàn)了該接口往枣,一個接口可以被多個類實(shí)現(xiàn)伐庭,一個類也可以實(shí)現(xiàn)繼承多個接口粉渠,這樣就形成了一種靈活的接口調(diào)用的方式,從而實(shí)現(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請求來實(shí)現(xiàn)前后端的數(shù)據(jù)傳遞授霸。這也可認(rèn)為是接口測試,調(diào)用的登錄接口還是查詢接口识椰,傳參的是用戶密碼還是搜索關(guān)鍵字绝葡。
2深碱、外部接口測試:這個很典型的例子就是第三方登錄腹鹉,比如你做的新系統(tǒng)免于新用戶重新注冊的麻煩會提供第三方登錄,那用戶在登錄的時候調(diào)用的就是第三方登錄的接口敷硅,由第三方驗(yàn)證用戶名和密碼并且返回給當(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)定猿挚。
然而,在實(shí)際的開發(fā)過程中驶鹉,開發(fā)人員并沒有充足的時間編寫單元測試绩蜻,并且他們往往對自己編寫的代碼有足夠的信心,不愿意將時間“浪費(fèi)”在編寫單元測試身上室埋。這個時候接口測試就肩負(fù)著重要的作用办绝。
2伊约、將 bug 控制在項目前期:
就筆者所做的微信活動而言,后端系統(tǒng)比較成熟孕蝉,對于前端開發(fā)來說屡律,每個活動都有很大不同。這就導(dǎo)致后端接口開發(fā)只需要一天就可完成昔驱,而前端開發(fā)的工作量至少需要兩疹尾、三天。而在這個空當(dāng)期就可以充分的對接口進(jìn)行測試骤肛,從而盡早的發(fā)現(xiàn)系統(tǒng) bug纳本;減少功能測試的工作量,縮短產(chǎn)品的發(fā)布周期腋颠。
3繁成、檢查服務(wù)器的異常處理能力:
我們通常把前端的驗(yàn)證稱為弱驗(yàn)證,因?yàn)樗苋菀妆焕@過淑玫,這個時候如果只站在功能的層面時行測試巾腕,就很難發(fā)現(xiàn)一些安全的問題。不以前功能為入口的接口測試就會發(fā)揮出它的作用絮蒿。
接口測試的用例設(shè)計流程
首先尊搬,明確出發(fā)點(diǎn)。和所有的測試一樣土涝,接口測試出發(fā)點(diǎn)是你要證明所測的程序是錯誤的佛寿。以這個出發(fā)點(diǎn)為導(dǎo)向,你的設(shè)計行為就會盡量朝這個方向發(fā)展但壮,更易發(fā)現(xiàn)問題冀泻,不會出現(xiàn)大方向的偏差。
其次蜡饵,選擇好測試對象弹渔。對于一個系統(tǒng)做接口測試選擇好的測試對象是接口測試關(guān)鍵。一個系統(tǒng)有無數(shù)的接口溯祸,每個接口如果分別測試肢专,那將是很痛苦的一件事情,不光繁瑣浪費(fèi)焦辅,而且任何一個內(nèi)部接口的變動泞当,都將導(dǎo)致我們用例的不可用谎僻。這里推薦把整個系統(tǒng)作為一個整體鹰贵,選擇整個系統(tǒng)提供給外部使用辰妙、交互的最外層接口作為你的測試對象,以此為測試對象的用例將有很好的健壯性仆抵,并且更高效跟继。另外种冬,根據(jù)數(shù)據(jù)的流向,又可將這些最外層的接口分為兩類:一類是數(shù)據(jù)進(jìn)入系統(tǒng)的接口舔糖;一類是數(shù)據(jù)流出系統(tǒng)的接口娱两。進(jìn)入系統(tǒng)的接口實(shí)際是我們用例的執(zhí)行調(diào)用的接口〗鹇穑可通過變化參數(shù)對這些接口進(jìn)行調(diào)用十兢,模擬外部的使用;而流出的接口則是我們用例真正該驗(yàn)證的點(diǎn)摇庙。數(shù)據(jù)從哪里流出旱物,流出時的狀態(tài)如何,此時系統(tǒng)又是什么狀態(tài)都是我們所應(yīng)該驗(yàn)證的卫袒。
然后宵呛,確認(rèn)完整的測試對象的功能:確認(rèn)外部接口提供給使用這些接口的外部用戶什么樣的功能,外部用戶真正需要什么樣的功能夕凝。此兩個功能一定要準(zhǔn)確詳細(xì)宝穗,用例的設(shè)計要嚴(yán)格按照測試對象功能設(shè)計才是正確的用例。
最后當(dāng)出發(fā)點(diǎn)码秉、對象逮矛、功能都確定了,就可以真正設(shè)計用例了转砖。
接口測試用例設(shè)計舉例
我覺得接口測試用例的設(shè)計方法其實(shí)和功能測試用例的設(shè)計方法是類似的须鼎,參考如下:
1.輸入?yún)?shù)測試: 針對輸入的參數(shù)進(jìn)行測試,也可以說是假定接口參數(shù)的不正確性進(jìn)行的測試堪藐,確保接口對任意類型的輸入都做了相應(yīng)的處理:
輸入?yún)?shù)合法莉兰,
輸入?yún)?shù)不合法挑围,
輸入?yún)?shù)為空礁竞,
輸入?yún)?shù)為null,
輸入?yún)?shù)超長杉辙;
2.功能測試:接口是否滿足了所提供的功能模捂,相當(dāng)于是正常情況測試,如果一個接口功能復(fù)雜時推薦對接口用例進(jìn)行結(jié)構(gòu)劃分蜘矢,這樣子用例具有更好的可讀性和維護(hù)性狂男。
3.邏輯測試:邏輯測試嚴(yán)格講應(yīng)為單元測試,單元測試應(yīng)保持內(nèi)部邏輯的正確性品腹,可單元測試和接口測試界限并不是那么清楚岖食,所以我們也可以從給出的設(shè)計文檔中考慮內(nèi)部邏輯錯誤的分支情況和異常;
4.異常情況測試:接口實(shí)現(xiàn)是否對異常情況都進(jìn)行了處理舞吭,接口輸入?yún)?shù)雖然合法泡垃,但是在接口實(shí)現(xiàn)中析珊,也會出現(xiàn)異常,因?yàn)閮?nèi)部的異常不一定是輸入的數(shù)據(jù)造成的蔑穴,而有可能是其他邏輯造成的忠寻,程序需要對任何的異常都進(jìn)行處理。
接口文檔舉例
下圖為豆瓣接口文檔存和,包括URL奕剃,調(diào)用方式,傳入?yún)?shù)捐腿,返回值纵朋,狀態(tài)碼等等~~