天天看點

接口傳回500一般是什麼錯_接口測試時, 資料Mock為何如此重要?

點選上方的終端研發部,右上角選擇“設為星标”

每日早9點半,技術文章準時送上

公衆号背景回複“學習”,擷取作者獨家秘制精品資料

接口傳回500一般是什麼錯_接口測試時, 資料Mock為何如此重要?

往期文章

記五月的一個Android面試經

漫畫:App 防止 Fiddler 抓包小技巧!

混合開發架構的對比,Flutter更勝一籌?

Android 架構元件 - 讓天下沒有難做的 App

從Flutter,Weex,RN 幾大跨平台,論虛拟 DOM?

APP 熱修複都懂了,你會 SDK 熱修複嗎?最全方案在這裡!

接口傳回500一般是什麼錯_接口測試時, 資料Mock為何如此重要?

來源:初入前端的小菜鳥

原文連結:https://www.jianshu.com/p/63056120fab8

一、為什麼要mock

工作中遇到以下問題,我們可以使用mock解決:

1、無法控制第三方系統某接口的傳回,傳回的資料不滿足要求

2、某依賴系統還未開發完成,就需要對被測系統進行測試

3、有些系統不支援重複請求,或有通路通路頻次限制。如不可重複支付,擷取敏感資訊的接口通路頻次不可高于xx等 

二、mock的實作原理

一般測試場景中,都是對接口的傳回資料進行mock。以http協定為例,

1、最簡單的mock,可在mock伺服器上儲存一份mock資料,并給此mock資料生成對應的url。将要通路的第三方url,以mock url代替,這樣即可滿足最基本的mock需求。可在此處了解到更多關于此種mock的資訊。

2、使用proxy實作mock。wiremock/anymock等開源工具可提供此實作。好處在于:

  1.    可檢視請求及回應,友善擷取mock資料的原型
  2.    比對到規則的請求會傳回mock資料,未比對到的請求通路原服務  
  3.    無需修改服務配置,無需重新開機服務

最近有接觸到一些函數級别的mock。比如,mockito這個工具,即可實作不送出請求,即可獲得mock資料的功能。

三、Mock的好處

1. 團隊可以并行工作

有了Mock,前後端人員隻需要定義好接口文檔就可以開始并行工作,互不影響,隻在最後的聯調階段往來密切;後端與後端之間如果有接口耦合,也同樣能被Mock解決;測試過程中如果遇到依賴接口沒有準備好,同樣可以借助Mock;不會出現一個團隊等待另一個團隊的情況。這樣的話,開發自測階段就可以及早開展,進而發現缺陷的時機也提前了,有利于整個産品品質以及進度的保證。

2. 開啟TDD模式,即測試驅動開發

單元測試是TDD實作的基石,而TDD經常會碰到協同子產品尚未開發完成的情況,但是有了mock,這些一切都不是問題。當接口定義好後,測試人員就可以建立一個Mock,把接口添加到自動化測試環境,提前建立測試。

3. 可以模拟那些無法通路的資源

比如說,你需要調用一個“牆”外的資源來友善自己調試,就可以自己Mock一個。

4. 隔離系統

假如我們需要調用一個post請求,為了獲得某個響應,來看目前系統是否能正确處理傳回的“響應”,但是這個post請求會造成資料庫中資料的污染,那麼就可以充分利用Mock,構造一個虛拟的post請求,我們給他指定傳回就好了

5. 可以用來示範

假如我們需要建立一個示範程式,并且做了簡單的UI,那麼在完全沒有開發後端服務的情況下,也可以進行示範。說到示範了,假如你已經做好了一個系統,并且需要給客戶進行示範,但是裡面有些真實資料并不想讓使用者看到,那麼同樣,你可以用Mock接口把這些敏感資訊接口全部替換。

6. 測試覆寫度

假如有一個接口,有100個不同類型的傳回,我們需要測試它在不同傳回下,系統是否能夠正常響應,但是有些傳回在正常情況下基本不會發生,難道你要千方百計地給系統做各種手腳讓他傳回以便測試嗎?比如,我們需要測試在當接口發生500錯誤的時候,app是否崩潰,别告訴我你一定要給服務端代碼做些手腳讓他傳回500 。。。而使用mock,這一切就都好辦了,想要什麼傳回就模拟什麼傳回,媽媽再也不用擔心我的測試覆寫度了

如何mock資料

1.安裝Node.js ,通過http-server開啟本地伺服器

擷取端口http://localhost:8000,然後通過在檔案夾建立html和json檔案來測試資料

示例:

接口傳回500一般是什麼錯_接口測試時, 資料Mock為何如此重要?

我們打開浏覽器的控制台就能看到輸出的資料

接口傳回500一般是什麼錯_接口測試時, 資料Mock為何如此重要?

2.通過線上來mock資料

  1. 使用 https://easy-mock.com
  2. 使用 http://rapapi.org/org/index.do

以第一種為例,進入網站後建立個人項目

進入項目後通過建立接口

接口傳回500一般是什麼錯_接口測試時, 資料Mock為何如此重要?

選擇接口類型

接口傳回500一般是什麼錯_接口測試時, 資料Mock為何如此重要?
接口傳回500一般是什麼錯_接口測試時, 資料Mock為何如此重要?
接口傳回500一般是什麼錯_接口測試時, 資料Mock為何如此重要?

進行建立

進行檢視

接口傳回500一般是什麼錯_接口測試時, 資料Mock為何如此重要?

控制台結果

接口傳回500一般是什麼錯_接口測試時, 資料Mock為何如此重要?

四、特殊場景下對mock資料的處理

有些場景對于mock來說較為特殊。比如,某接口對資料有加解密操作,這使得mock的資料無法直覺了解,無法有效率地調整mock資料的内容以完成測試目标。另外,有些rpc協定不具通用性,通用的mock平台來支援此類協定成本太高。是以,我們的需要對我們的方法做一些變通。

1. 對于接口加解密資料,我們開發一個函數,來支援mock資料的加解密。手工測試時,該函數可表現為mock平台的插件;接口自動化時可表現為處理mock資料的函數。也可以采用方法

2. 直接将這個函數的邏輯整體mock掉。開發某功能:當程式運作到指定的方法時,不繼續運作函數體,而是發送一個http請求到mock平台,将mock資料return出去。

閱讀更多

Flutter  + MVP +Kotlin 實戰!

一位Android大牛的BAT面試心得與經驗總結

混合開發架構的對比,Flutter更勝一籌?

漫畫:解密IP 、TCP和DNS與HTTP 的親密關系

什麼樣的履歷,面試官一看就知道多少水份!!!

相信自己,沒有做不到的,隻有想不到的

在這裡獲得的不僅僅是技術!

接口傳回500一般是什麼錯_接口測試時, 資料Mock為何如此重要?
接口傳回500一般是什麼錯_接口測試時, 資料Mock為何如此重要?

喜歡就給個“在看” 

接口傳回500一般是什麼錯_接口測試時, 資料Mock為何如此重要?