【編測編學】介面測試必備面試題必背(下)

bcbxhome發表於2021-01-15

1 、什麼是 DNS
DNS
是域名系統 (Domain Name System) DNS 是用來做域名解析的 , 它會在你上網輸入網址後,把它轉換成 IP ,然後去訪問對方伺服器;沒有它,你想上百度就要記住百度的 IP ,但有了 DNS 的處理,你只需要記住對應網站的域名,即網址就可以了。

2 、請問你們公司是如何做介面測試的?
介面測試實際跟一般測試不同就是測試用例的設計部分。
①獲取介面文件。
②設計介面測試功能用例(主要從使用者角度出發看介面能否實現業務需求,用例設計就是黑盒用例那一套)。
③各種入參驗證(正常情況,異常情況包括輸入引數個數不對,型別不對,可選 / 必選,還有考慮引數有互斥或關聯的情況)。
④介面返回值各種驗證(符合介面文件需求)
⑤瞭解介面實現邏輯,實現邏輯覆蓋(語句 / 條件 / 分支 / 判定 / …)
⑥介面能併發執行嗎、安全嗎,效能滿足要求嗎 ?
⑦採用工具或者自寫程式碼來驗證。
⑧發現問題跟功能測試一樣,該提 bug bug ,該跟蹤狀態的跟蹤狀態。

3 、怎麼設計介面測試用例?
①是否滿足前提條件
有些介面需要滿足前提,才可成功獲取資料。常見的,需要登入 Token
逆向用例:針對是否滿足前置條件(假設為 n 個條件),設計 0~n 條用例
②是否攜帶預設值引數
正向用例:帶預設值的引數都不填寫、不傳參,必填引數都填寫正確且存在的“常規”值,其他不填寫,設計 1 條用例
③業務規則、功能需求
這裡根據時間情況,結合介面引數說明,可能需要設計 N 條正向用例和逆向用例
④引數是否必填
逆向用例:針對每個必填引數,都設計 1 條引數值為空的逆向用例
⑤引數之間是否存在關聯
有些引數彼此之間存在相互制約的關係
⑥引數資料型別限制
逆向用例:針對每個引數都設計 1 條引數值型別不符的逆向用例
⑦引數資料型別自身的資料範圍值限制
正向用例:針對所有引數,設計 1 條每個引數的引數值在資料範圍內為最大值的正向用例

4 、你做介面測試,測什麼?
可用性測試
根據約定的協議、方法、格式內容,傳輸資料到介面經處理後返回期望的結果:

  • 介面功能是否正確實現;
  • 返回值測試 - 返回值除了內容要正確,型別也要正確,保證呼叫方能夠正確地解析;
  • 引數值邊界值、等價類測試;

錯誤和異常處理測試

  • 輸入異常值(空值、特殊字元、超過約定長度等),介面能正確處理,且按預期響應;
  • 輸入錯誤的引數,介面能正確處理,並按預期響應;
  • 多輸入、少輸入引數,介面能正確處理,且按預期響應;
  • 錯誤傳輸資料格式(如 json 格式寫成 form 格式)測試;

安全性測試,主要指傳輸資料的安全性:

  • 敏感資料(如密碼、秘鑰)等是否加密傳輸;
  • 返回資料是否含有敏感資料,如使用者密碼、完整的使用者銀行賬號資訊等;
  • 介面是否對傳入的資料做安全校驗,如身份 ID token 類似校驗;
  • 介面是否防止惡意請求(如大量偽造請求介面致使伺服器崩潰);

效能測試,如介面的響應時間、併發處理能力、壓測處理情況:

  • 併發請求相同的介面(特別為 POST 請求),介面的處理情況(如插入了相同的記錄導致資料出錯,引發系統故障);
  • 介面響應時長在使用者可忍受的範圍內;
  • 對於請求量大的介面做壓測,確定最大的瓶頸點是否滿足當前業務需要;

5 、平常用什麼工具測介面的?
答:常用 http 協議介面測試工具,如: postman fiddler jmeter webService 介面用 SoapUI jmeter 等。

6 、沒有介面文件,如何做介面測試?

用抓包工具把介面抓取處理,然後針對性進行測試;介面中欄位資訊不清楚的,找時間集中尋求開發解答。

7 、在手工介面測試或者自動化介面測試的過程中,上下游介面有資料依賴如何處理?

用一個全域性變數來處理依賴的資料,比如登入後返回 token ,其它介面都需要這個 token ,那就用全域性變數來傳 token 引數。

8 、依賴於第三方資料的介面如何進行測試?
mock
接著面試官會問你,如果 mock 的,然後你就順著坑繼續挖,搭建 mock 服務等

9 、介面測試中,依賴登入狀態的介面如何測試?

依賴登入狀態的介面的本質上是在每次傳送請求時需要帶上 session 或者 cookie 才能傳送成功,在構建 POST 請求時新增必要的 session 或者 cookie

10 、如何模擬弱網做測試?
Fiddler
charles 都可以模擬弱網測試,平常說的模擬丟包,也是模擬弱網測試。

11 、你平常做介面測試的過程中發現過哪些 bug?
常規錯誤,介面沒實現,沒按約定返回結果,邊界值處理出錯等。
輸入異常值(空值、特殊字元、超過約定長度等),介面拋錯,沒做封裝處理;
輸入錯誤的引數、多輸入、少輸入引數,介面可能出現的錯誤;
安全性問題,如明文傳輸、返回結果含有敏感資訊,沒對使用者身份資訊做校驗,沒做惡意請求攔截等;
效能問題,如介面併發插入多條相同操作,響應時間過長,介面壓測出現瓶頸等;

12 、當一個介面出現異常時候,你是如何分析異常的?
先抓包,用 fiddler charles )工具抓包,或者瀏覽器上 F12 除錯工具; APP 上的話,那就用 Fiddler 做代理,透過手機設定代理去看請求和返回報文;
檢視後端日誌,如 Linux 系統透過 xhell 連上伺服器,檢視介面日誌,檢視是否有報錯資訊(命令: tail -f 日誌檔案);

13 、如何分析一個 bug 是前端還是後端的?
這種情況很容易判斷,先抓包看請求報文,對著介面文件,看請求報文有沒問題,有問題就是前端發的資料不對;
請求報文沒問題,那就看返回報文,返回的資料不對,那就是後端開發的問題咯。

14 、你們做介面測試自動化嗎?

現在針對大量應用,普遍推崇做介面測試自動化,維護成本低、收益高。常用的工具有許多,如 Jmeter Robot Framework pytest 等。

 

 


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69985967/viewspace-2750382/,如需轉載,請註明出處,否則將追究法律責任。

相關文章