【Mock平台】測試開發實戰01-開篇PRD和需求詳細

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

平台背景

從業務特性上,不少測試的服務很多是依賴第三方的介面的,比如其中的支付場景,就需要很多狀態的返回進行驗證,但大部分服務提供商沒有很友好的測試環境或者沙箱環境,提供的測試帳號能做的場景也有限;從技術層面,服務不想在程式碼里做過多侵入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. 接入飛書/企業微信/釘釘至少一種統一登錄和通知能力

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

技術選定

後端介面:已確定為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原型」 關鍵字獲取。