【接口測試學習】Mock服務的設計與實現


一、什么是Mock服務/工具

  在測試過程中,對於一些不容易構造/獲取的對象,創建一個 Mock 對象來模擬對象的服務/工具。比如:在測試過程中,手工構造的數據不能返回我想要的結果,從而導致程序的后續處理走不到我們期待的分支,最終造成測試的不充分。當然,Mock 服務除了有這種能力以外,還有其他優點:

解除依賴

  隨着現在軟件系統架構越來越復雜,一個全流程的測試通常都要走好幾個系統/模塊,如果各個系統/模塊的開發進度不一致,提前開發好的系統/模塊要進行測試,這時我們可以依賴 Mock 服務/工具來對已經開發好的系統/模塊進行測試。

充分測試

  就像上面提到的,在手工測試無法構造出我們想要的數據返回時,Mock 服務能給我們返回任何想要的返回數據,這樣有利於我們對程序進行充分的測試。

穩定性保障

  在做性能測試時,第三方系統如果不能接收大量請求,那么性能測試將無法進行,這時我們可以使用 Mock 服務模擬第三方系統的返回進行性能測試,同時 Mock 服務返回的數據也會比第三方系統更加穩定可靠,更加有利於我們定位自己系統的性能瓶頸。

自動化測試的支持

  如果我們發現,自動化測試的 Case 老是因為環境的不穩定導致失敗,這時我們可以使用 Mock服務模擬目標服務的數據返回從而使自動化 Case 能夠順利的運行,保證自動化測試的成功率。

二、Mock服務的優缺點

優點

  • 由於其他系統模塊出錯引起本模塊的測試錯誤,我們可以采用 Mock隔離,避免干預;
  • 開發過程中,只要交互雙方定義好接口,團隊之間可以並行工作,進程互不影響;
  • 依賴系統無法響應,或者響應異常時,可以用 Mock Object代替,快速反應,不會影響測試進度;
  • 提前接入測試,提高測試效率,當接口定義好后,測試人員就可以創建 Mock,把接口添加到自動化測試環境,提前開始測試,起到測試驅動開發效果;
  • 可以有效的增加覆蓋,接口涉及入參,或者業務邏輯復雜的情況,某些場景無法通過正常手段進行操作,可以通過 Mock 虛擬模擬;

缺點

  測試過程中如果大量使用 Mock,測試的場景失去了真實性,則會導致很多場景沒有得到正確的測試,所以不管 Mock 服務功能有多強大,在真實環境下必要的聯調測試是必不可少的。 

三、Mock服務實現能力

  • mock所有http請求
  • 可基於url和ip進行匹配
  • 返回數據固定
  • 可實現注入 隨機id,時間戳等數據的替換
  • 性能要高
  • 返回數據模板化
  • 要實現可以遷移
  • 追加: 透傳

四、Mock服務的基本設計思路

  • 第一步:將被測服務請求的第三方服務的地址改為Mock服務的地址;
  • 第二步:人工請求Mock服務,添加Mock數據;
  • 第三步:正常請求被測服務;
  • 第四步:被測服務請求Mock服務,Mock服務返回數據給被測服務;

五、Mock服務的模塊設計

gateway

  • 負責接收數據的注冊,把注冊的數據存入數據庫;
  • 負責接收被測服務發過來的請求,並從數據庫中查出匹配的數據返回給被測服務

core

  • 核心的邏輯處理,包括注冊數據存儲邏輯以及返回給被測服務的數據的查詢與處理

dao

  • 負責數據庫層的處理

commons

  • 枚舉、工具類、POJO類、異常體系、常量等的定義

sdk

  • 接口自動化需要用到的一個模塊
  • 編寫接口自動化用例時,向Mock服務發送注冊數據,同樣是發送給gateway模塊接收
  • 單獨打包給接口自動化框架依賴

manager

  • 通過頁面錄入注冊數據,和gateway模塊進行關聯

六、代碼實現

地址:

轉載於:https://www.cnblogs.com/L-Test


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM