接口測試常見的問題了。
大家乍一看!

這幾個問題,能答出來幾個?有沒有8個都能夠完美的答出來的?在留言區(qū)打出你的數(shù)字。(0~8)
這些問題你回答起來,不要吞吞吐吐只說幾個關(guān)鍵字。你要從多方面去給面試官總結(jié)分析那些場景,如何去做的,遇到的問題……
接口測試的重要性,相信不用我多說了。接口測試是現(xiàn)在軟件測試工程師一個加分項。因為很多朋友一開始做了幾年的軟件測試都是在做功能測試,做界面UI的測試,然而沒有做過接口測試。(很正常很普遍)
那么接口測試它在企業(yè)中,能達到非常好的收益。后端、服務(wù)端的測試,特別是現(xiàn)在!像是前面幾年,物聯(lián)網(wǎng)公司沒有做一個前后端分離,現(xiàn)在基本上都是微服務(wù)架構(gòu),前后端分離。接口非常重要,現(xiàn)在2020年了,未來幾年你去做測試,很多都是接口。
一個接口它可以支持安卓、IOS、H5、Web端。而且接口測試可以測很多你在界面上無法去測試的一些范圍和類型。
我們來看一看這幾個問題,從簡單的來。
第一題,大家絕大部分都能夠答得出來
1.目前市面上流行的接口大多有哪幾種協(xié)議的接口?
大家可能就非常了解,Http、Https、RPC、Websocket、還有一個Dubbo接口,這些類型百度一下也都能夠比較全面的得到答案。
所以我一直傳輸給大家一個觀念就是說,假如面試官問你這個問題,你不僅要說有Http、Https……說完這幾種類型,你還可以多說幾句,比如說我之前在項目中測試過Http的,怎么測試的,用什么測試工具測試的,這是我一直傳輸給大家的一個面試小技巧。因為我之前在企業(yè)中做為面試官的時候,當聽到這種面試題回答的時候,會更加分。
因為如果我問你一個問題,你答Http、Https就沒了,那么說明你這個人的積極性和你的一個綜合能力、見識都不是非常的亮眼突出。理解我的意思嗎?不管面試官問你什么問題,你都要非常全面的去解答。
比如說第二個問題
2.http協(xié)議有什么特點,能說說這些特點體現(xiàn)在哪些方面嗎?
可能會有朋友就說,安全。
Http就安全了嗎?(Https才相對安全)
a.無狀態(tài)
b.靈活
c.無連接
d.簡單快速
那么我又來問大家,這些狀態(tài)這些特點,具體體現(xiàn)在哪些方面?
可能問到這個問題的后面部分,有些朋友就要頭皮發(fā)麻了。
它為什么叫做無狀態(tài),為什么靈活?可能像這種問題就又刷下去了一大批人。有很多朋友特點可能說了一個,但是這些特點具體體現(xiàn)在哪些方面。你如果沒有答出來,那面試官就覺得你沒有做過很多的接口測試,你對接口根本不是很了解,那你對接口既然不了解,做過的測試也不多,那你還說你做過接口測試,那都只是片面的。
那首先它無狀態(tài),靈活,說一個最簡單的。靈活,大家都知道,像Http類型的接口我們用Postman來做測試,它為什么比較靈活?它支持的參數(shù)類型是任意類型

它來做測試的時候,這個參數(shù)類型,表單,文件上傳類型,還有JSON類型,Text文本,JS,XML,HTML

你的參數(shù)可以支持任意類型,所以說它比較靈活。
那為什么說它簡單快速?你只需要傳一些接口的請求方法和請求路徑,通信速度非??欤湍芙o到你響應(yīng)的數(shù)據(jù)。
比如說很簡單,我之前寫的一個demo接口

你只需要告訴我,這個地址和這個接口的路徑,或者說接口的名稱,我就能請求這個接口了,就能快速的拿到下面的值。那是不是說它非常的簡單快速呢,不像Dubbo接口不像Websocket,不像其他的接口,稍微你要去測試,去請求可能難一點。這就說明它簡單快速。
無狀態(tài)。比如說你現(xiàn)在要去支付一筆訂單,你要點一個外賣,那么你支付訂單的時候,那么我怎么知道你的購物車里面加了哪些東西呢?其實你加購物車、下訂單、登錄其實都是相應(yīng)的接口,他們之間其實是沒有一個實物處理記憶能力的,Http協(xié)議它請求成功之后沒有記憶了。所以說你每次去請求新的接口,它都有一個新的請求,那么為什么現(xiàn)在這種下單、登錄加購物車能夠非常靈活的應(yīng)用起來呢?這就還有它中間的一些機制,會用到一些Session、Cookie、和一些Token,所以這就是它的一個原理。
那么無連接。怎么理解?
那我自己的一個項目來說吧!這是之前搭建的一個測試項目管理平臺


那么每次我們?nèi)フ埱蟮臅r候,Network刷新一下,它可能去請求了很多個接口,所以說每次連接它只處理一個請求。服務(wù)端當處理其中一個接口的時候,它之請求這一個,請求完之后,它就馬上斷開連接,節(jié)省這個傳輸?shù)臅r間,所以這是一個無連接。
所以這些特點體現(xiàn)在哪些方面,你能說一說的話,說明你對這個接口你比較有心得了。有收獲記得點贊支持一下!
3.postman中如何實現(xiàn)接口之間的關(guān)聯(lián)?
我想這個可能還不是最難的問題,可能大家用過,像第二個問題比較綜合性的往往是大家比較薄弱的東西。

比如說這是一個正規(guī)的接口文檔,有哪些接口就用Postman全部寫一遍,然后如何接口之間的關(guān)聯(lián),這里會用到這些東西。

怎么設(shè)置關(guān)聯(lián),將數(shù)據(jù)解析稱Json格式,獲取topic_id的值,設(shè)置成環(huán)境變量,等等。這就能實現(xiàn)接口之間的關(guān)聯(lián)。

然后你在這里會發(fā)現(xiàn),這里有很多環(huán)境變量或者全局變量,這就是接口之間的關(guān)聯(lián)。
5.若請求的接口需要先登錄后方可請求,如何進行接口測試?
比如說有些接口需要先登錄才請求,那如何來進行接口測試?先登錄,比如我問你這個問題你怎么來回答?
因為很多需要請求的接口它需要先認證才能去請求。
Token?
這個回答不對,Token從哪里來?你需要去請求什么樣的接口,你的登錄接口或者去哪里去拿到,這個問題還是比較簡單的,大家可以做為作業(yè)區(qū)用心學(xué)習(xí)一下。
7.dubbo接口如何測試?
那我們來看看像這種Dubbo如何去進行測試?這個有了解過嗎?因為現(xiàn)在越來越多的公司可能不僅用Http他還會用到Dubbo接口。dubbo接口是我們(用的阿里云服務(wù)器)阿里巴巴開源的一個高性能的服務(wù)框架,Dubbo是經(jīng)歷過雙十一的一個摧殘優(yōu)秀的RPC框架,很多公司都在用了,但是你又沒有聽說過,額,怎么還會有這個接口?。磕懵牰紱]有聽說過,那么你在面試官那里……因為面試的公司很有可能就是做的Dubbo接口,那你來做接口測試,你連Dubbo都不知道,那我是不是又要培養(yǎng)你一個月?告訴你什么是Dubbo,怎么測試Dubbo,還說讓你來做Dubbo接口自動化,那更加。就算招你進去了,你也是一個新手,菜鳥的身份進去的,你的工資是很難提上去的。
比如他工資本來開的是15K-20K,那么就算你能面試進去了,你最多最多拿到15K。那還要看你的運氣,看你其他方面的一個加分項,來抵消這個暫時的短板。
面試官:什么是Dubbo?
我:我、我、我抓一抓后腦勺,摸摸手臂,扣一扣指甲。
然后就是說……吞吞吐吐答不出來(內(nèi)心獨白:到底什么時候結(jié)束這個面試,你趕快把簡歷還給我吧,QAQ)
我還準備去下一家公司去“吹牛皮”也許下一家公司面試官不會問到我不會的問題。
大家不要抱著這樣的心態(tài),我發(fā)現(xiàn)做測試真的這樣一個現(xiàn)狀,很多朋友就覺得能混,我現(xiàn)在做功能測試不用任何的技術(shù),能拿個7.8K,一萬的工資,也可以。至少要比其他的行業(yè)的底薪是要高一些。
所以就存在這個現(xiàn)象,他不會很多的技術(shù),沒有很多的技能他也能混,或者運氣好,在一線城市需求多。為什么很多測試在一線城市能夠拿到10-15K,他不會任何的技術(shù),因為一線城市的需求多很多。
但是你想要突破,想突破15K,突破18K那就難上加難了,而且如果你從大城市工作三到五年,你再回去到二線城市去做測試,那么你還想來混,那么你的工資就可能只有5-6K了,而且你沒有任何的技術(shù),你說你從大城市回來的,都覺得有點不好意思說。
你從大城市回來的,你帶回來了什么先進的概念,帶來了什么先進的技術(shù),是不是?
說遠了,回歸正題。

Dubbo的一個測試關(guān)鍵,搭建消費者,你需要去理解的Dubbo接口的基礎(chǔ)架構(gòu)基礎(chǔ)服務(wù)到底是一個什么樣的原理。(有一個接口測試訓(xùn)練營有講到這個原理以及如何去測試,需要視頻教程可以免費領(lǐng)取)

我在這個服務(wù)器上搭建了一個Dubbo服務(wù)

最簡單的方式用,Telnet,我的IP地址,然后加一個端口,其實測試起來和Http原理都一樣。
開啟服務(wù)之后,進去之后就是一個Dubbo
我們還可以用代碼來寫

這里封裝了一個Dubbo的方法,類。需要完整視頻版教學(xué)可以公眾號主頁點擊領(lǐng)取資料即可。
8.接口測試斷言從哪些方面去設(shè)計?
如果我把這個接口測試改成功能測試,功能測試斷言從哪些方面去設(shè)計?
你要怎么去校驗一個測試用例,我覺得這個是很多做測試的朋友最擅長的東西,那么我問接口測試呢?
其實接口測試也屬于功能測試,也是黑盒測試。

比如說這個接口,我去發(fā)送一個請求,你怎么去校驗這個接口,我怎么去判斷我這個用例到底是不是對的,我這個用例到底是驗證了什么東西

到底什么是401,什么情況下會401,或者是403 Forbidden到底是什么情況。
1.狀態(tài)碼
它會不會返回200,會不會返回401,403,返回500等等
2.返回值
返回值比如我拿一個正確的吧,狀態(tài)碼200,返回了一大堆的值,那么這個返回值里面就有很多東西需要去校驗了,怎么去校驗這個返回值?

3.而且返回值里面很多數(shù)據(jù)是動態(tài)的,這個時候要怎么去設(shè)置?要考慮數(shù)據(jù)庫校驗吧,很多字段的值來源于數(shù)據(jù)庫
非關(guān)系型數(shù)據(jù)庫(Mongo)
4.空校驗,異常校驗,
5.冪等性
冪等性的校驗在接口測試是一個常見的校驗,比如說你一個接口我調(diào)用一次正常了,你能保證它之后調(diào)用都是正常的嗎?這些數(shù)據(jù)、參數(shù)幾百個不同類型的參數(shù),我調(diào)用一百次,會是一個什么樣的情況?
冪等性,我重復(fù)執(zhí)行一百次,它會返回什么。
或者我去買一個外賣,下單,但是我不支付,是不是我點擊下單一百次,它會不會產(chǎn)生很多垃圾數(shù)據(jù)在我們數(shù)據(jù)庫里面。
其實還有很多需要你去測試的,為什么接口測試這么重要,要測試的東西和功能測試一樣方方面面都是需要考慮到的。
6.流程節(jié)點限制
舉一個異常例子吧,比如說你在支付的時候,我只下單沒有付錢,那么像這個接口的返回值。我先調(diào)用下單的接口,我拿到一些數(shù)據(jù)再去調(diào)用別人正常支付后的接口。會是一個什么樣的場景,有沒有做一些限制。
接口測試很容易做一個數(shù)據(jù)驅(qū)動,做一些自動化,我們都要去盡可能的全面的覆蓋做一個接口自動化,那么你的效益是非常高的。而且你把這一套全部做成自動化,不管是后端開發(fā)人員還是前端開發(fā)人員還是測試,你在企業(yè)中本人價值也是非常高的。
如果面試官覺得你答對了,再深入一點,什么是異常校驗?就是來評判你能不能達到一個高級測試工程師。
異常校驗
數(shù)據(jù)異常,環(huán)境異常,前置條件異常,大家都知道做過接口測試的朋友都知道接口有很多的前置條件,前置條件連接數(shù)據(jù)庫或者數(shù)據(jù)的預(yù)制,那么這些前置條件有沒有異常導(dǎo)致我們接口異常。
所以像這種問題,你如果沒有真實的項目經(jīng)驗,你絕對總結(jié)不出來也回答不出來。
文章首發(fā)于公眾號:程序員一凡
轉(zhuǎn)載請注明出處!