大部分現有的 mock 工具隻能滿足 HTTP 協定下簡單業務場景的使用。但是面對一些複雜的業務場景就顯得捉襟見肘,比如對 socket 協定的應用進行 mock,或者對于支付接口的失敗重試的定制化 mock 場景。
為解決上述問題,霍格沃茲測試學院設計并研發了 CSRMockServer 在下面的文章中簡稱 mock server。
mock server 相較于這些 mock 工具,具有規則更靈活、定制化更強、支援拓展多協定的特點。在本章節将會從架構設計介紹如何實作以上的特點,而在實戰章節,會針對具體的測試場景,示範不同的解決方案。
架構設計
若想實作上述特點,一定要有一個合理的架構設計。
mock server 架構設計:
用戶端
- 用戶端主要負責與 mock 服務的互動,由測試人員制定 mock 的請求響應規則,以及啟動/停止 mock 服務。
代理
- 負責請求和響應的收發,接收到請求後,先轉發給 Mock 引擎,mock 引擎收到請求響應資料進行處理後,再傳回給代理響應資訊,代理給伺服器傳回模拟的響應值。
協定(protocol)
- 不同的協定的請求、響應資料格式往往不相同,既有标準的 json 結構體,也有二進制或十六進制的資料類型。這部分資料需要在協定層進行處理之後,才好進行相關的邏輯處理。是以協定層(protocol)主要負責和協定相關的資料處理。
- protocol 還具備很強的很拓展性,如果一個系統涉及到了多協定的 mock,測試人員可以給不同的協定指定不同的規則,以此達到多協定 mock 的作用。具體的使用會在後面的章節進行示範。
Mock引擎
- mock 邏輯的驅動引擎,根據不同功能子產品的請求,分發給 mock 服務的對應的實作接口。
背景服務
- 提供與 mock 服務互動的對外接口。
設計優點
- 提供了背景服務接口,測試人員添加規則、控制 mock 服務更加靈活
- 定制化更強,内置支援根據索引、消耗、mock 後添加動作等操作
-
通過切換不同的 protocol 與代理服務,即可實作多協定的支援,擴充性強
mock server 架構就先介紹這些,後面将會示範 mock server 的使用流程哦。