接口測試最近幾年被炒的火熱了,愈來愈多的測試同行意識到接口測試的重要性。接口測試爲何會如此重要呢?
主要是日常的功能點點點,你們水平都同樣,是我的都能點,面試時候若是問你日常在公司怎麼測試的,你除了說點點點,還能說什麼呢,無非就是這個項目點完了點那個項目,
這就是爲何各行各業的只要手指能點得動的人都來轉行軟件測試了。面試的時候面試官但願你除了點點點,還能更深刻一點的思考頁面上看不到的功能,也就是接口測試了。html
到底什麼是接口測試,咱們爲何要作接口測試?這是不少初入行的小夥伴的一個疑問,講理論的你可能看不進去,接下來說個實際案例,以下圖一個提現功能前端
好比這個輸入框,日常拿到這個web頁面,會對輸入框作用例設計:web
按照這個等價類,邊界值用例測完,頁面上不能輸入負數和大於3位數小數點,而後就能夠上線了。
然而。。。忽然有一天數據庫裏面插入了一個提現金額爲負數(-100),因而整個部門炸鍋了,首先找到測試(背鍋)去復現問題,測試在頁面上反覆輸入負數,沒法提交,認爲沒問題啊!面試
首先前端開發對輸入框是作了限制的,前端的web開發確定沒問題,這個鍋前端開發MM不背。那麼若是別人用戶不經過你的web頁面,直接發請求提交了呢?
納尼!!!不經過頁面也能提交。。。這就是咱們接下來要提到的接口測試了。數據庫
面試題1:你日常作接口測試的過程當中發現過哪些bug?後端
這個問題其實回到起來很簡單,只要作過接口測試的,總能發現幾個BUG吧,把你日常發現的bug說2-3個就能夠了。
面試官出這個題,主要是想知道你是否是真的作過接口測試,畢竟如今不少小夥伴簡歷都是寫的假的(你要不寫估計面試機會都沒有,沒辦法,爲了生存,能理解)
好比上面說的,提現輸入框,在頁面上輸入負數,確定是沒法提交過去(前端頁面會判斷金額),若是我不走前端,直接用接口工具發請求,輸入一個負數過去。
(假設服務端沒作提現金額數據判斷)
餘額=當前餘額(100)-提現金額(-100),那麼提現-100,餘額就變成200了,也就是越提現,餘額越大了數組
能夠用接口工具去直接請求接口,也能夠fiddler抓包,抓到接口後修改金額爲負數瀏覽器
因此,接口測試的必要性就體現出來了:
1.能夠發現不少在頁面上操做發現不了的bug
2.檢查系統的異常處理能力
3.檢查系統的安全性、穩定性
4.前端隨便變,接口測好了,後端不用變
5.能夠測試併發狀況,一個帳號,同時(大於2個請求)對最後一個商品下單,或不一樣帳號,對最後一個商品下單
6.能夠修改請求參數,突破前端頁面輸入限制(如金額)安全
面試題2:日常你是怎麼測試接口的?服務器
參數組合:如今有一個操做商品的接口,有個字段type,傳1的時候表明修改商品,商品id、商品名稱、價格有一個是必傳的,type傳2的時候是刪除商品,
商品id是必傳的,這樣的,就要測參數組合了,type傳1的時候,只傳商品名稱能不能修改爲功,id、名稱、價格都傳的時候能不能修改爲功。
接口安全:
一、繞過驗證,好比說購買了一個商品,它的價格是300元,那我在提交訂單時候,我把這個商品的價格改爲3元,後端有沒有作驗證,更狠點,我把錢改爲-3,是否是個人餘額還要增長?
二、繞過身份受權,好比說修改商品信息接口,那必須得是賣家才能修改,那我傳一個普通用戶,能不能修改爲功,我傳一個其餘的賣家能不能修改爲功
三、參數是否加密,好比說我登錄的接口,用戶名和密碼是否是加密,若是不加密的話,別人攔截到你的請求,就能獲取到你的信息了,加密規則是否容易破解。
四、密碼安全規則,密碼的複雜程度校驗
異常驗證:
所謂異常驗證,也就是我不按照你接口文檔上的要求輸入參數,來驗證接口對異常狀況的校驗。好比說必填的參數不填,輸入整數類型的,傳入字符串類型,長度是10的,傳11,總之就是你說怎麼來,我就不怎麼來,其實也就這三種,必傳非必傳、參數類型、入參長度。
性能測試
接口併發狀況,如上面提到的:一個帳號,同時(大於2個請求)對最後一個商品下單,或不一樣帳號,對最後一個商品下單
接口響應時間,響應時間太長了,確定須要優化,通常都是毫秒級別
面試題3:日常用什麼工具測接口的
接口測試工具不少,首先postman
其次用jmeter
面試題4:webService接口是如何測試的
webService接口用SoapUI
面試題5:沒有接口文檔,若是作接口測試?(這是個送命題)
沒有接口文檔,那還能咋辦,瞎測唄!一個公司的開發流程裏面,若是接口文檔都沒有,是沒法展開接口測試的,你都不知道這個接口乾什麼的,也不知道具體每一個字段表明什麼意思,那還測啥呢?
--固然,你確定不能回答面試官不測(心理mmp,臉上笑嘻嘻),接下來就是扯犢子時間
1.沒有接口文檔,那就須要先跟開發溝通,而後整理接口文檔(原本是開發寫的,沒辦法,爲了唬住面試官,先說本身整理了)
2.沒有接口文檔,能夠抓包看接口請求參數,而後不懂的跟開發溝通
本題主要靠情商,通俗來講就是忽悠能力,先唬住面試官了再說,進去了也是瞎測測,隨時作好背鍋的準備
面試題6:在手工接口測試或者自動化接口測試的過程當中,上下游接口有數據依賴如何處理?
用一個全局變量來處理依賴的數據,好比登陸後返回token,其它接口都須要這個token,那就用全局變量來傳token參數
面試題7:依賴於第三方數據的接口如何進行測試?
這個標準答案是:mock
接着面試官會問你,若是mock的,而後你就順着坑繼續挖,搭建mock服務,參考這篇【https://www.cnblogs.com/yoyoketang/p/9348552.html】
面試題8:當一個接口出現異常時候,你是如何分析異常的?
1.抓包,用fiddler工具抓包,或者瀏覽器上f12,app上的話,那就用fiddler設置代理,去看請求報文和返回報文了
2.查看後端日誌,xhell連上服務器,查看日誌
面試題9:如何模擬弱網測試
fiddler和charles均可以模擬弱網測試,日常說的模擬丟包,也是模擬弱網測試
面試題10:如何分析一個bug是前端仍是後端的?
日常提bug的時候,前端開發和後端開發老是扯皮,不認可是對方的bug
這種狀況很容易判斷,先抓包看請求報文,對着接口文檔,看請求報文有沒問題,有問題就是前端發的數據不對
請求報文沒問題,那就看返回報文,返回的數據不對,那就是後端開發的問題咯
交流QQ羣:779429633