『居善地』介面測試 — 12、Moco框架介紹

繁華似錦Fighting 發表於 2021-06-16
框架

1、Mock功能介紹

各個業務系統都會關聯多個三方系統介面呼叫,在測試過程中第三方業務存在不能及時提供介面呼叫,這時就需要用到我們的Mock服務了。

Mock的本質在於模擬三方業務介面的返回,來滿足自身的測試功能,快速完成測試任務。

2、Moco框架介紹

Moco框架是Mock概念中的一種實現。

Moco框架是一個簡單搭建模擬伺服器的程式庫/工具,這個基於 Java 開發的開源專案。

Moco框架已經在 Github 上獲得了不少的關注,該專案的簡介是這樣描述自己的:

  • Moco 是一個簡單搭建 stub 的框架,主要用於測試和整合。
  • 這個框架的開發靈感來自 Mock 框架,如 MockitoPlayframework

為什麼要開發這個框架?

  • 用於基於HTTP協議的整合:web serviceREST等,在我們的專案開發中被廣泛應用。
  • 以前,我們每次都要往 JettyTomcat等應用伺服器上部署一個新的 WAR。
  • 大家都知道,開發部署一個 WAR 的過程是很枯燥的,即使在嵌入式伺服器上也是如此。而且,每次我們做一點改動,整個 WAR 都要重新組裝。
  • Moco框架的出現,正是為了解決這些問題。開發團隊只要根據自己的需要進行相應的配置,就會很方便得到一個模擬伺服器。
  • 而且,由於 Moco框架本身的靈活性,其用途已經不再侷限於最初的整合測試。
    比如:
    Moco 可以用於移動開發;
    模擬尚未開發的服務;
    Moco 還可以用於前端開發,模擬一個完整的 Web 伺服器等等。

3、Moco框架在介面測試中的作用

一般介面文件編寫完成後,測試人員需要提前進行介面測試用例的編寫,而這時介面開發工作可能還沒完成。

如果要等到開發人員完成介面的開發,再進行測試用例的編寫,這樣會降低測試開發的效率。

這時如果測試人員使用Moco框架搭建一個模擬伺服器,就可以根據介面文件,自己模擬出介面的呼叫並返回結果。

在用例設計完成後,即使介面開發工作還未完成,也可以立即進行介面測試用例的執行。並且在這個過程中可以修改、補充測試用例。

在介面開發完成以後,只需要簡單的切換伺服器地址,就可以測試所有的開發人員實現的介面了。這樣可以節省很多的測試時間,減少專案開發的週期。

Moco框架支援HTTP協議,採用熱部署,修改配置後,立刻生效,無需重啟服務。

Moco框架介面測試中的作用:方法隔離,服務解耦。即可並行又可驅動。

4、Moco框架的優點

  1. 只需要簡單的配置RequestResponse等即可滿足要求,支援HTTP、HTTPS、SCOKET。可以說是非常的靈活性。
  2. 支援在Request中設定Headers , Cookies , StatusCode等。
  3. 對GET、POST、PUT、DELETE等請求方式均支援,很適合web開發。
  4. 無需環境配置,有Java環境即可。
  5. 修改配置後,立刻生效。只需要維護介面,也就是契約即可。
  6. 對可能用到的資料格式都支援,如jsontextxmlfile等。
  7. 還能與其他工具整合,如JunitMavenGradle等。

5、Moco框架的下載與啟動

Moco框架文件地址:https://github.com/dreamhead/moco/blob/master/moco-doc/apis.md

(1)Moco框架的下載

Github下載地址:https://github.com/dreamhead/moco(這裡下載的是原始碼,不是jar包)

Moco框架Jar包下載地址:https://repo1.maven.org/maven2/com/github/dreamhead/moco-runner/0.11.0/

如下圖所示:

image

得到moco-runner-0.11.0-standalone.jar檔案。

(2)Moco框架的啟動

  1. 條件:
    因為Moco框架是一個jar包,所以需要Java環境才能啟動。
    即:配置好Java環境。
  2. 啟動:
    把Moco框架Jar包和Json檔案放入同一個資料夾中,
    命令列終端裡進入到Json檔案所在的目錄,執行啟用命令,如下:
    java -jar ./moco-runner-0.11.0-standalone.jar http -p 12306 -c foo.json即可。
    說明:
    ./moco-runner-0.11.0-standalone.jar為Moco工具所在目錄。
    http:表示伺服器協議,server type: http, https, socket
    -p:表示埠號。
    -c:表示一個json檔案。介面所有的資訊都配置在該json檔案中。

提示:Moco工具路徑和json檔案路徑都可以寫相對路徑和絕對路徑。