提高可測性-Mock平臺設計和整體規劃

MrZ大奇發表於2022-02-25

微信搜尋【大奇測試開】,關注這個堅持分享測試開發乾貨的傢伙。

平臺背景

從業務特性上,不少測試的服務很多是依賴第三方的介面的,比如其中的支付場景,就需要很多狀態的返回進行驗證,但大部分服務提供商沒有很友好的測試環境或者沙箱環境,提供的測試賬號能做的場景也有限;從技術層面,服務不想在程式碼裡做過多侵入Mock,也想充分利用統一配置服務做快速切換;從測試團隊來講,可以為業務特性適配簡單好用,也想找一種內部自動化和平臺配置的資料驅動方案,另外也是想找一個技術平臺推動全員的技術參與度。

基於以上的一些內容便有了這個Mock平臺,還是和上個系列一樣,這裡重新整理和開發,作為一個測試平臺開發練手專案分享出來,希望對正在找乾貨,愛學習的同學提供一些微不足道的學習途徑,當然這個平臺其實具有實用價值,後續可以直接使用或者二次開發擴充套件使用

Mock流程

整個實現層面比較簡單,畫了一個示意圖做參考,一部分web頁面(服務1 前端+後端)進行介面的錄入和配置,另一部分則是外部的依賴請求流程(服務2 純後端獨立)核心是做http攔截和匹配返回,這裡還有一個待定實現的proxy代理功能,既手機可以通過區域網設定帶來走mock,這種最大的好處就是連服務的統一配置都不需要做變更。

功能概述

這裡先羅列出大的包含的功能模組,以便有個整體概念,然後在給出詳細的prd和需求說明,方便後續開發實現。

Web前後端

  • 專案管理
  • 分類樹管理
  • 介面錄入和編輯
  • 規則簡單和高階配
  • 返回支援標準JSON和XML
  • 資料圖表Dashboard

獨立Mock服務

  • 請求攔截功能
  • 匹配介面和規則
  • 按照HTTP規範組裝返回
  • 高階設定邏輯處理工具
  • Proxy代理 (TBD)

原型和需求說明

一、專案管理

平臺專案必不可少的基礎配置,更大的團隊可以加入空間的概念或者跟組織架構做關聯,能更好方便後統計和管理。

 

1.搜尋功能

支援專案名稱關鍵字輸入,點選後進行模糊搜尋

2.展示列表

表格展示分頁介面專案列表,頁面初始化預設查詢空關鍵詞第一頁資料

  • 按照更新時間倒序排序
  • 支援分頁,預設每頁10條
  • 分頁選項為5-10-20-30-50,支援快速轉跳
  • 列表功能列包含編輯和進入專案選單 

3.操作專案

  • 新增功能在搜尋列最右側,點選後彈窗形式
  • 新增和編輯對話包含專案名稱(必填)和描述,確定提交成功後進列表重新整理 

二、介面分類管理

介面的數量可能很多,這裡增加一個分類tree功能,可以進行歸類和查詢,如原型圖將其放在專案同頁面的最左側區域,方便直接切換過濾。

新增分類:通過點選新增按鈕彈出對對話方塊,欄位分別為名稱(必填)和描述

分類編輯:選中某個分類後出現編輯按鈕,點選後操作與新增相同,另外為了增加互動可以根據控制元件情況實現右側快捷選單和不限層級的分類結構

三、介面配置

平臺核心功能,實現標準HTTP介面的錄入和管理,涉及的核心欄位包括但不限於方法、路徑、返回值,提前說明一點的是,介面只做基本配置和預設返回,更多高階的配置玩法將在規則管理中實現。

 

詳細的需求互動拆解如下:

1. 列表展示

對於一個專案或者微服務一般介面數量不會太多,所以列表可以不分頁直接展示全部,另外介面還可以通過分類切換進行快速過濾,列資訊參考原型圖,右側操作列功能按鈕包括“修改介面”和“規則配置”。

2. 新增和編輯

通過點選對應按鈕彈出新增/編輯對話方塊欄位包括:

  • 對話方塊文案:標題和提交按鈕根據操作動作展示區分文案;
  • 標題必填名字,且1-20個字元校驗;
  • 方法:必選,支援GET/POST,預設GET為第一選項;
  • 路徑:介面實際請求path(不含host)字元500以內;
  • 分組:即左側分類歸屬,非必填不選擇則放在全部下;
  • 返回型別:目前設計支援JSON和XML兩種,其他可根據業務需求自行定義;
  • 預設返回:介面在沒有規則配置的情況的預設返回,非必填,如果沒有設定並且Mock邏輯拿了這個值則為空;
  • 備註:非必填自負,500字元以內,僅作為一些備註說明;
  • 取消按鈕:關閉對話方塊,如果是新增並清空歷史快取資訊;
  • 新增/修改:進行表單的提交,資料落庫。 

3. 規則操作

點選規則配置,在當前介面下展開子區域,然後進行規則管理,再次點選關閉展開。擴充套件:快速開啟/關閉介面是否生效功能(TBD)。

四、規則配置

介面之下另一個核心功能續期,往往其他mock平臺太過於簡單,只有預設返回的時候,就不得不每次測個場景就要做些介面返回變更,這裡加入更高階一點規則配置,可以根據輸入的引數返回不同的資料,這樣方便各種型別的測試,也更能靈活的放在自動化的Mock需求場景上。

 

為了互動上的便捷,通過介面錶行點選擴充套件頁面來實現規則的增刪改操作,規則主要針對請求引數規則匹配然後返回不同的Body,本系列上通過一種簡單的方式 正規表示式來實現匹配邏輯,更好一點互動是做到 param/body的key-value形式。

規則管理分兩種型別

1. 簡單配置

通用標題必填,型別選項選擇簡單配置也是預設的選項。

  • 引數過濾選項:支援param和body
  • 引數過濾值:完全匹配或正則匹配
  • HTTP返回體:json或者xml,這個根據介面配置的返回型別設定 

2.高階配置

在簡單配置的基礎上增加的擴充套件配置,這些都是指返回內容的設定。

  • HTTP返回碼:不配置或預設選項為成功200,也可以配置為其他狀態碼,如302,401等根據業務常見狀態設定
  • HTTP返回頭:特殊場景需求下header的返回場景需要,比如格式、協議等
  • 延遲:模擬一些需要延遲返回的場景,預設為0,單位毫秒

五、資料包表

介面相關的資料統計,初步計劃展示一些概要彙總,以及呼叫的趨勢圖,這裡趨勢的統計需要依賴後段服務做個請求日誌存留,詳細介面和資料內容做到的時候在詳細說明,此處僅做個概要原型預覽。

六、功能擴充套件

除了上述是已經確定的需求會開發,還將根據實際進度進行決定是否做一些擴充套件的功能,包括但不限於如下內容:

  1. 介面分類樹管理支援多層配置
  2. 代理能力的實現(即實現移動端無縫使用ock)
  1. 平臺支援忽略轉發(即介面禁用或沒有匹配時候直接原封轉發)
  2. 專案許可權的管理
  1. 接入飛書/企業微信/釘釘至少一種統一登入和通知能力
  2. ...

更多希望大家也參與進來,將一些通用有價值的功能合作開發出來。

技術選定

後端介面:已確定為JAVA語言框架 springboot

前端框架還未最終確定,還需要調研權衡下,主要是專案之前用的element ui admin以及上個系列提測平臺也是這個框架,本著突破自己舒適區以及儘可能提供廣大學習者的更多選擇,所以會定在 React 的 ant design pro xing ✩✩✩ 或者antdvue ✩✩,後者推薦星數少的在於沒有比較好的Vue3開箱即用的專案。

Mock服務:Springboot HandlerInterceptor

資料庫:Mysql 5.7+

Mock分享規劃

跟提測平臺差不多,會從幾個方面做系列分享:

  • 基礎篇:對於從未接觸前後端框架的基礎使用普及2~5篇
  • 開發篇:對上述產品需求進行開發實戰講解分享 10篇左右
  • 總結篇:階段的總結2~3篇
  • 深度篇:一些知識點的擴充套件深度學習1~2篇
  • 擴充套件開發:根據系列分享的效果決定是否迭代開發擴充套件待定需求

最後歡迎大家持續關注 《大奇測試開發》公眾號一起學習成長,完整的PRD線上文件可公眾號傳送 “Mock原型” 關鍵字獲取。

相關文章