使用 Restito 工具進行 REST 客戶端測試
REST
REST(表述性狀態轉移)是一種現代技術,用於實現兩個軟體系統之間的通訊。其中一個系統稱為 REST 客戶端;另一個稱為 REST 伺服器。它是一種基於無狀態通訊協議(如 HTTP)的架構技術。它使用 XML、YAML 和其他機器可讀格式組織或結構化資料。但是,JSON 最常用。REST 基於面向物件的程式設計模型。
與基於函式的 SOAP 不同,REST 是資料驅動的。REST 也被稱為 RESTful API 或 RESTful Web 服務。REST 服務的描述格式沒有遵循標準。可以使用 WADL 檔案在 SOAPUI 中匯入 REST 服務。ReadyAPI 與 OpenAPI、Swagger 和 RMAL 格式相容。基本的 REST HTTP 請求包括:POST、GET、PUT 和 DELETE。
POST − 新增新資料。
GET − 讀取或檢索現有資料。
PUT − 更新現有資料。
DELETE − 刪除現有資料。
REST 比 SOAP 提供更大的靈活性,並且更容易使用。
REST 相比 SOAP 的優勢
REST 使用簡單易懂的標準,例如 Swagger 和 OpenAPI 規範 3.0。
REST 的學習曲線更短。
更高效,因為它使用更小的訊息格式(如 JSON),而 SOAP 對所有訊息都使用 XML。
它更快,不需要大量的處理。
REST 客戶端
REST 客戶端是一種技術或工具,用於呼叫 REST 服務 API,該 API 向任何其他系統或服務提供商開放通訊。例如,如果 API 預期從 Google 獲取有關路線的即時交通資料,則呼叫 Google 交通 API 的軟體稱為 REST 客戶端。
REST 伺服器
REST 伺服器是一個 API 或一種方法,用於使系統能夠向另一個系統或服務提供商開放通訊。例如,Google 提供了一個 API 來獲取給定路線的即時交通資料。Google 的伺服器必須啟動並執行才能響應來自不同客戶端的任何 API 請求。
示例
考慮一個車輛預訂應用程式,例如 Uber,它需要車輛所在路線周圍的即時交通訊息。
REST 客戶端
客戶端是司機登入的 Uber 應用程式。它向 Google 地圖的 REST API 傳送請求以獲取即時資訊,例如 HTTP GET 請求。
REST 伺服器
Google 是服務提供商。Google 地圖的 API 向 Uber 應用的請求提供所需的資訊。請注意,客戶端和伺服器在 REST 通訊中同樣重要。
Restito
Restito 是 Mkotsur 開發的一個應用程式或框架。這個輕量級應用程式有助於執行各種 HTTP 請求。它還可以用於測試 REST API 以及搜尋應用程式或網路中的問題。此工具的靈感來自 Mockito,其功能與 Rest Assured 完全相反。
Karate DSL 是一種用於 API 自動化測試、效能和負載測試的工具。它執行在 Java 上,並使用 Apache HTTP 執行 Http 連線。DSL 有自己的指令碼語言;DSL - 領域特定語言;簡單易用,即使沒有程式設計經驗的人也可以使用。它有一套預定義的指令碼命令,用於在與 API 互動時可能需要的操作。
Restito 提供了一個 DSL −
模擬 REST 伺服器行為。
記錄對伺服器發出的 HTTP 呼叫。
驗證發生的呼叫。
基本上,Restito 有助於測試向 HTTP 服務發出呼叫的應用程式。它建立一個 StubServer 例項,該例項可以根據定義的 Stub 響應應用程式發出的呼叫。Stub 允許在請求條件時響應操作。
使用 Restito 測試 REST 客戶端
REST 客戶端的測試大致分為以下四個主要步驟:
建立一個 HTTP 客戶端和用於向伺服器端點發送 GET 請求的方法。
啟動 Restito 伺服器,記錄“getevents”端點接收到的請求。
建立一個測試類來測試步驟 1 中建立的客戶端。呼叫 HTTP 客戶端“sendGETRequest”方法以啟動對“getevents”的 GET 請求。
使用 Restito 框架驗證 HTTP GET 呼叫。
使用 Restito 進行 REST 客戶端測試的優勢
無需開發實際的 REST 伺服器即可測試 REST 客戶端。
它提供強大的各種服務和方法來模擬伺服器的行為。例如,測試伺服器響應 404 錯誤或 503 錯誤時 REST 客戶端的行為。
Restito 伺服器可以在幾毫秒內建立,並且可以在執行所有測試後關閉。
它支援所有 HTTP 方法內容,例如壓縮、非壓縮、統一等。
使用 Restito 進行 REST 客戶端測試的缺點
必須調整 REST 客戶端原始碼以將“localhost”作為伺服器主機。
如果使用 8080 或 9443 等常用埠,則在埠上開啟伺服器可能會發生衝突。
許多使用 Restito 進行 REST 客戶端測試的支持者建議使用 9092 或 9099 等埠,但其他工具通常不使用這些埠。
結論
REST - 表述性狀態轉移 - 是一種現代技術,用於實現兩個軟體系統之間的通訊。
REST 客戶端是一種工具/技術,用於啟用 REST API,該 API 向任何系統或服務提供商開放通訊。
在 RestServer API 中,它向任何系統或服務提供商開放通訊。
Restito 是一個輕量級的應用程式框架,有助於執行任何型別的 HTTP 請求。
在本文中,我們討論了僅 REST 客戶端自動化測試的示例。
為了開發測試用例來測試 REST 客戶端,我們不需要實際的 REST 伺服器。
可以調整 REST 客戶端原始碼以將 localhost 作為伺服器主機。