根據(jù)網(wǎng)絡(luò)資料劫灶,總結(jié)了以下一些常見(jiàn)的接口測(cè)試面試題:
- 為什么要做接口測(cè)試南缓?
- 接口測(cè)試能發(fā)現(xiàn)哪些問(wèn)題目锭?
- 接口測(cè)試怎么測(cè)和泌?
- 用什么工具測(cè)接口村缸?
- WebService接口是如何測(cè)試的?
- 沒(méi)有接口文檔如何做接口測(cè)試武氓?
- 在接口測(cè)試過(guò)程中梯皿,上下游接口有數(shù)據(jù)依賴(lài)如何處理?
- 依賴(lài)第三方數(shù)據(jù)的接口如何進(jìn)行測(cè)試县恕?
- 當(dāng)一個(gè)接口出現(xiàn)異常時(shí)东羹,你是如何分析異常的?
- 如何模擬弱網(wǎng)測(cè)試忠烛?
- 如何分析一個(gè)bug是前端的還是后端的属提?
為什么要做接口測(cè)試
在討論為什么要做接口測(cè)試之前,我們先稍微了解下接口是什么美尸?
接口可以很不準(zhǔn)確的理解成是與資源打交道冤议,這個(gè)資源可能是本系統(tǒng)的,也可能是其他系統(tǒng)的师坎。
舉個(gè)例子恕酸,假如我們?cè)陂_(kāi)發(fā)1個(gè)bug管理系統(tǒng),該系統(tǒng)需要拿到公司的所有開(kāi)發(fā)和測(cè)試人員的信息胯陋,這樣開(kāi)發(fā)和測(cè)試人員不用注冊(cè)都可以登錄進(jìn)去了蕊温,這應(yīng)該很好理解。
那么這些人員的信息儲(chǔ)存在哪里呢遏乔?一般存儲(chǔ)在hr系統(tǒng)里∈偃酰現(xiàn)在的需求更加明確了,我們要到hr系統(tǒng)中去拿到人員信息按灶,獲取hr系統(tǒng)中的人員資源症革。
怎么拿呢?很多種方式鸯旁,可以直接把hr系統(tǒng)的數(shù)據(jù)庫(kù)拷貝一份放到bug管理系統(tǒng)里噪矛,不過(guò)這樣不好量蕊,因?yàn)閿?shù)據(jù)的同步會(huì)有點(diǎn)麻煩;還可以直接連hr系統(tǒng)的數(shù)據(jù)庫(kù)去查艇挨,這樣也不太好残炮,這樣我們就需要了解hr系統(tǒng)的數(shù)據(jù)存儲(chǔ)結(jié)構(gòu)和邏輯,一旦hr系統(tǒng)的數(shù)據(jù)字段發(fā)生改變缩滨,bug管理系統(tǒng)也要去該势就,以便同步。
比較好的做法是脉漏,hr系統(tǒng)暴露一些接口苞冯,通過(guò)這些接口去獲取人員信息資源,這樣bug系統(tǒng)就不需要關(guān)心hr系統(tǒng)的數(shù)據(jù)存儲(chǔ)實(shí)現(xiàn)了侧巨。
這些接口可能是這樣的:
- 登錄的接口舅锄,提供人員的用戶名和密碼,去hr系統(tǒng)中判斷該人員是否存在司忱,如果存在驗(yàn)證用戶名和密碼皇忿,如果驗(yàn)證通過(guò)就返回1個(gè)token,該token就是這個(gè)人員的通行證坦仍,通過(guò)token可以登錄到bug管理系統(tǒng)中去鳍烁;
- 獲取人員信息的接口,返回該人員的職位:測(cè)試還是開(kāi)發(fā)繁扎,以及用戶名老翘,昵稱(chēng)等信息;
綜上:接口可以理解成是不同系統(tǒng)或模塊之間資源交流方式锻离。
接口測(cè)試實(shí)際上是黑盒測(cè)試铺峭,基本的測(cè)試思路是根據(jù)輸入和輸出判斷被測(cè)系統(tǒng)或?qū)ο蟮倪壿嫛+@取人員的信息汽纠,我需要把人員的用戶名傳給hr系統(tǒng)接口卫键,這樣hr系統(tǒng)的接口會(huì)返回給我用戶的一些更加具體的信息。這里的輸入是用戶名虱朵,輸出是用戶的詳細(xì)信息莉炉。
既然是接口獲取和操作資源的方式,而大部分系統(tǒng)和產(chǎn)品中碴犬,資源一般都是產(chǎn)品的核心絮宁,比如微信核心資源就是通訊錄關(guān)系鏈和聊天記錄等,因此資源是必測(cè)的服协。
另外接口中大部分的內(nèi)容是數(shù)據(jù)绍昂,通過(guò)數(shù)據(jù)的對(duì)比我們能推測(cè)到系統(tǒng)和產(chǎn)品的邏輯,測(cè)接口就是測(cè)邏輯。
最后接口中的返回相對(duì)單純窘游,不像web頁(yè)面唠椭,html代碼中有太多ui的東西,ui最不穩(wěn)定忍饰,變化太快贪嫂,接口相對(duì)穩(wěn)定一點(diǎn)點(diǎn),但是里面的干擾信息更少艾蓝,斷言相對(duì)容易很多力崇。
請(qǐng)看以下一個(gè)案例,如下圖一個(gè)提現(xiàn)功能
比如這個(gè)輸入框赢织,平常拿到這個(gè)web頁(yè)面亮靴,會(huì)對(duì)輸入框做用例設(shè)計(jì):
- 輸入一個(gè)負(fù)數(shù)(如:-100),點(diǎn)提交
- 輸入金額為0(如:0)敌厘,點(diǎn)提交
- 輸入金額為0-100的數(shù)(如:20),點(diǎn)提交
- 輸入金額為100(如:100)朽合,點(diǎn)提交
- 輸入金額大于100(如:108)俱两,點(diǎn)提交
- 輸入1位小數(shù)(如:10.1),點(diǎn)提交
- 輸入2位小數(shù)(如:10.12)曹步,點(diǎn)提交
- 輸入3位小數(shù)(如:10.123)宪彩,點(diǎn)提交
按照這個(gè)等價(jià)類(lèi),邊界值用例測(cè)完讲婚,頁(yè)面上不能輸入負(fù)數(shù)和大于3位數(shù)小數(shù)點(diǎn)尿孔,然后就可以上線了。
然而筹麸。活合。。突然有一天數(shù)據(jù)庫(kù)里面插入了一個(gè)提現(xiàn)金額為負(fù)數(shù)(-100)物赶,于是整個(gè)部門(mén)炸鍋了白指,首先找到測(cè)試(背鍋)去復(fù)現(xiàn)問(wèn)題,測(cè)試在頁(yè)面上反復(fù)輸入負(fù)數(shù)酵紫,無(wú)法提交告嘲,認(rèn)為沒(méi)問(wèn)題啊奖地!
首先前端開(kāi)發(fā)對(duì)輸入框是做了限制的橄唬,前端的web開(kāi)發(fā)肯定沒(méi)問(wèn)題,這個(gè)鍋前端開(kāi)發(fā)MM不背参歹。那么如果別人用戶不通過(guò)你的web頁(yè)面仰楚,直接發(fā)請(qǐng)求提交了呢?
納尼5姘ぁG洹!不通過(guò)頁(yè)面也能提交稠诲。捎泻。飒炎。這就是我們接下來(lái)要提到的接口測(cè)試了。
接口測(cè)試能發(fā)現(xiàn)哪些問(wèn)題
這個(gè)問(wèn)題其實(shí)回到起來(lái)很簡(jiǎn)單笆豁,只要做過(guò)接口測(cè)試的郎汪,總能發(fā)現(xiàn)幾個(gè)BUG吧,把你平常發(fā)現(xiàn)的bug說(shuō)2-3個(gè)就可以了闯狱。
面試官出這個(gè)題煞赢,主要是想知道你是不是真的做過(guò)接口測(cè)試,畢竟現(xiàn)在很多小伙伴簡(jiǎn)歷都是寫(xiě)的假的(你要不寫(xiě)估計(jì)面試機(jī)會(huì)都沒(méi)有哄孤,沒(méi)辦法照筑,為了生存,能理解)
比如上面說(shuō)的瘦陈,提現(xiàn)輸入框凝危,在頁(yè)面上輸入負(fù)數(shù),肯定是無(wú)法提交過(guò)去(前端頁(yè)面會(huì)判斷金額)晨逝,如果我不走前端蛾默,直接用接口工具發(fā)請(qǐng)求,輸入一個(gè)負(fù)數(shù)過(guò)去捉貌。
(假設(shè)服務(wù)端沒(méi)做提現(xiàn)金額數(shù)據(jù)判斷)
余額=當(dāng)前余額(100)-提現(xiàn)金額(-100)支鸡,那么提現(xiàn)-100,余額就變成200了趁窃,也就是越提現(xiàn)牧挣,余額越大了
可以用接口工具去直接請(qǐng)求接口,也可以fiddler抓包醒陆,抓到接口后修改金額為負(fù)數(shù)
所以浸踩,接口測(cè)試的必要性就體現(xiàn)出來(lái)了:
1.可以發(fā)現(xiàn)很多在頁(yè)面上操作發(fā)現(xiàn)不了的bug
2.檢查系統(tǒng)的異常處理能力
3.檢查系統(tǒng)的安全性、穩(wěn)定性
4.前端隨便變统求,接口測(cè)好了检碗,后端不用變
5.可以測(cè)試并發(fā)情況,一個(gè)賬號(hào)码邻,同時(shí)(大于2個(gè)請(qǐng)求)對(duì)最后一個(gè)商品下單折剃,或不同賬號(hào),對(duì)最后一個(gè)商品下單
6.可以修改請(qǐng)求參數(shù)像屋,突破前端頁(yè)面輸入限制(如金額)
接口測(cè)試怎么測(cè)
通過(guò)性驗(yàn)證:首先肯定要保證這個(gè)接口功能是好使的怕犁,也就是正常的通過(guò)性測(cè)試,按照接口文檔上的參數(shù),正常傳入奏甫,是否可以返回正確的結(jié)果戈轿。
參數(shù)組合:現(xiàn)在有一個(gè)操作商品的接口,有個(gè)字段type阵子,傳1的時(shí)候代表修改商品思杯,商品id、商品名稱(chēng)挠进、價(jià)格有一個(gè)是必傳的色乾,type傳2的時(shí)候是刪除商品,
商品id是必傳的领突,這樣的暖璧,就要測(cè)參數(shù)組合了,type傳1的時(shí)候君旦,只傳商品名稱(chēng)能不能修改成功澎办,id、名稱(chēng)金砍、價(jià)格都傳的時(shí)候能不能修改成功局蚀。接口安全:
1、繞過(guò)驗(yàn)證捞魁,比如說(shuō)購(gòu)買(mǎi)了一個(gè)商品至会,它的價(jià)格是300元离咐,那我在提交訂單時(shí)候谱俭,我把這個(gè)商品的價(jià)格改成3元,后端有沒(méi)有做驗(yàn)證宵蛀,更狠點(diǎn)昆著,我把錢(qián)改成-3,是不是我的余額還要增加术陶?
2凑懂、繞過(guò)身份授權(quán),比如說(shuō)修改商品信息接口梧宫,那必須得是賣(mài)家才能修改接谨,那我傳一個(gè)普通用戶,能不能修改成功塘匣,我傳一個(gè)其他的賣(mài)家能不能修改成功
3脓豪、參數(shù)是否加密,比如說(shuō)我登陸的接口忌卤,用戶名和密碼是不是加密扫夜,如果不加密的話,別人攔截到你的請(qǐng)求,就能獲取到你的信息了笤闯,加密規(guī)則是否容易破解堕阔。
4、密碼安全規(guī)則超陆,密碼的復(fù)雜程度校驗(yàn)異常驗(yàn)證:
所謂異常驗(yàn)證,也就是我不按照你接口文檔上的要求輸入?yún)?shù)侥猬,來(lái)驗(yàn)證接口對(duì)異常情況的校驗(yàn)。比如說(shuō)必填的參數(shù)不填捐韩,輸入整數(shù)類(lèi)型的,傳入字符串類(lèi)型荤胁,長(zhǎng)度是10的,傳11仅政,總之就是你說(shuō)怎么來(lái),我就不怎么來(lái)圆丹,其實(shí)也就這三種,必傳非必傳辫封、參數(shù)類(lèi)型、入?yún)㈤L(zhǎng)度倦微。性能測(cè)試
接口并發(fā)情況,如上面提到的:一個(gè)賬號(hào)欣福,同時(shí)(大于2個(gè)請(qǐng)求)對(duì)最后一個(gè)商品下單,或不同賬號(hào)拓劝,對(duì)最后一個(gè)商品下單
接口響應(yīng)時(shí)間雏逾,響應(yīng)時(shí)間太長(zhǎng)了,肯定需要優(yōu)化郑临,一般都是毫秒級(jí)別
用什么工具測(cè)接口
- postman: 推薦栖博。基本功能免費(fèi)牧抵。最簡(jiǎn)單的基于http接口的調(diào)試和測(cè)試工具;
- jmeter:后置處理器配合斷言基本上可以滿足接口測(cè)試需求笛匙,就是測(cè)試報(bào)告要做二次開(kāi)發(fā)
- 自己擼代碼:推薦侨把。配合類(lèi)似xunit測(cè)試框架,基本可以滿足一切需求妹孙;零基礎(chǔ)實(shí)現(xiàn)python接口自動(dòng)化視頻教程秋柄,一起擼代碼吧
- soapui: 收費(fèi)的;
- insomnia:強(qiáng)力推薦蠢正。postman的弱化版骇笔,基本功能免費(fèi),重要的是工具代碼開(kāi)源嚣崭,可以自己改笨触;
- paw: 強(qiáng)力推薦。mac上最強(qiáng)雹舀,淘寶買(mǎi)個(gè)授權(quán)好像就百把塊錢(qián)芦劣;
WebService接口是如何測(cè)試的
webService接口用SoapUI
沒(méi)有接口文檔如何做接口測(cè)試
沒(méi)有接口文檔,那還能咋辦说榆,瞎測(cè)唄虚吟!一個(gè)公司的開(kāi)發(fā)流程里面,如果接口文檔都沒(méi)有签财,是無(wú)法展開(kāi)接口測(cè)試的串慰,你都不知道這個(gè)接口干什么的,也不知道具體每個(gè)字段代表什么意思唱蒸,那還測(cè)啥呢邦鲫?
--當(dāng)然,你肯定不能回答面試官不測(cè)(心理mmp神汹,臉上笑嘻嘻)庆捺,接下來(lái)就是扯犢子時(shí)間
1.沒(méi)有接口文檔,那就需要先跟開(kāi)發(fā)溝通慎冤,然后整理接口文檔(本來(lái)是開(kāi)發(fā)寫(xiě)的疼燥,沒(méi)辦法沧卢,為了唬住面試官蚁堤,先說(shuō)自己整理了)
2.沒(méi)有接口文檔,可以抓包看接口請(qǐng)求參數(shù)披诗,然后不懂的跟開(kāi)發(fā)溝通
本題主要靠情商立磁,通俗來(lái)說(shuō)就是忽悠能力,先唬住面試官了再說(shuō)唱歧,進(jìn)去了也是瞎測(cè)測(cè),隨時(shí)做好背鍋的準(zhǔn)備
在接口測(cè)試過(guò)程中几于,上下游接口有數(shù)據(jù)依賴(lài)如何處理
用一個(gè)全局變量來(lái)處理依賴(lài)的數(shù)據(jù),比如登錄后返回token,其它接口都需要這個(gè)token,那就用全局變量來(lái)傳token參數(shù)
依賴(lài)第三方數(shù)據(jù)的接口如何進(jìn)行測(cè)試
這個(gè)標(biāo)準(zhǔn)答案是:mock
接著面試官會(huì)問(wèn)你朽砰,如果mock的瞧柔,然后你就順著坑繼續(xù)挖睦裳,搭建mock服務(wù)廉邑,參考這篇【https://www.cnblogs.com/yoyoketang/p/9348552.html】
當(dāng)一個(gè)接口出現(xiàn)異常時(shí),你是如何分析異常的
1.抓包肺素,用fiddler工具抓包倍靡,或者瀏覽器上f12,app上的話课舍,那就用fiddler設(shè)置代理,去看請(qǐng)求報(bào)文和返回報(bào)文了
2.查看后端日志捡需,xhell連上服務(wù)器站辉,查看日志
如何模擬弱網(wǎng)測(cè)試
fiddler和charles都可以模擬弱網(wǎng)測(cè)試饰剥,平常說(shuō)的模擬丟包摧阅,也是模擬弱網(wǎng)測(cè)試
如何分析一個(gè)bug是前端還是后端的
平常提bug的時(shí)候,前端開(kāi)發(fā)和后端開(kāi)發(fā)總是扯皮顾孽,不承認(rèn)是對(duì)方的bug
這種情況很容易判斷,先抓包看請(qǐng)求報(bào)文太颤,對(duì)著接口文檔盹沈,看請(qǐng)求報(bào)文有沒(méi)問(wèn)題乞封,有問(wèn)題就是前端發(fā)的數(shù)據(jù)不對(duì)
請(qǐng)求報(bào)文沒(méi)問(wèn)題,那就看返回報(bào)文锚贱,返回的數(shù)據(jù)不對(duì)拧廊,那就是后端開(kāi)發(fā)的問(wèn)題咯