1. 程式人生 > >關於面試總結9-介面測試面試題

關於面試總結9-介面測試面試題

前言

介面測試最近幾年被炒的火熱了,越來越多的測試同行意識到介面測試的重要性。介面測試為什麼會如此重要呢?
主要是平常的功能點點點,大家水平都一樣,是個人都能點,面試時候如果問你平常在公司怎麼測試的,你除了說點點點,還能說什麼呢,無非就是這個專案點完了點那個專案,
這就是為什麼各行各業的只要手指能點得動的人都來轉行軟體測試了。面試的時候面試官希望你除了點點點,還能更深入一點的思考頁面上看不到的功能,也就是介面測試了。

為什麼要做介面測試?

到底什麼是介面測試,我們為什麼要做介面測試?這是很多初入行的小夥伴的一個疑問,講理論的你可能看不進去,接下來講個實際案例,如下圖一個提現功能

比如這個輸入框,平常拿到這個web頁面,會對輸入框做用例設計:

  • 輸入一個負數(如:-100),點提交
  • 輸入金額為0(如:0),點提交
  • 輸入金額為0-100的數(如:20),點提交
  • 輸入金額為100(如:100),點提交
  • 輸入金融大於100(如:108),點提交
  • 輸入1位小數(如:10.1),點提交
  • 輸入2位小數(如:10.12),點提交
  • 輸入3位小數(如:10.123),點提交
    按照這個等價類,邊界值用例測完,頁面上不能輸入負數和大於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、名稱、價格都傳的時候能不能修改成功。

  • 介面安全:
    1、繞過驗證,比如說購買了一個商品,它的價格是300元,那我在提交訂單時候,我把這個商品的價格改成3元,後端有沒有做驗證,更狠點,我把錢改成-3,是不是我的餘額還要增加?
    2、繞過身份授權,比如說修改商品資訊介面,那必須得是賣家才能修改,那我傳一個普通使用者,能不能修改成功,我傳一個其他的賣家能不能修改成功
    3、引數是否加密,比如說我登陸的介面,使用者名稱和密碼是不是加密,如果不加密的話,別人攔截到你的請求,就能獲取到你的資訊了,加密規則是否容易破解。
    4、密碼安全規則,密碼的複雜程度校驗

  • 異常驗證:
      所謂異常驗證,也就是我不按照你介面文件上的要求輸入引數,來驗證介面對異常情況的校驗。比如說必填的引數不填,輸入整數型別的,傳入字串型別,長度是10的,傳11,總之就是你說怎麼來,我就不怎麼來,其實也就這三種,必傳非必傳、引數型別、入參長度。

  • 效能測試
    介面併發情況,如上面提到的:一個賬號,同時(大於2個請求)對最後一個商品下單,或不同賬號,對最後一個商品下單
    介面響應時間,響應時間太長了,肯定需要優化,一般都是毫秒級別

用什麼工具測

面試題3:平常用什麼工具測介面的

介面測試工具很多,首先postman

其次用jmeter

webService介面

面試題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都可以模擬弱網測試,平常說的模擬丟包,也是模擬弱網測試

分析bug是前端還是後端的

面試題10:如何分析一個bug是前端還是後端的?

平常提bug的時候,前端開發和後端開發總是扯皮,不承認是對方的bug
這種情況很容易判斷,先抓包看請求報文,對著介面文件,看請求報文有沒問題,有問題就是前端發的資料不對
請求報文沒問題,那就看返回報文,返回的資料不對,那就是後端開發的問題咯