REST Assured 與 JMeter:REST 測試工具的比較
已發表: 2022-03-11自動化測試是軟件質量保證過程的重要組成部分。 但測試代表性狀態轉移 (REST) API 可能是一項棘手的工作。 許多求助於手動測試 REST API 的人忽略了細節,錯過了可以節省時間的方法。
任何經過正確測試的 REST API 服務都將涵蓋以下領域:
- 測試 API 服務是否符合 REST 標準
- API服務響應碼測試
- API服務響應內容的斷言
- API服務的性能基準測試
為此,您需要正確的工具。 Apache JMeter 和 REST Assured 是兩種流行的 REST 測試工具,用於測試 REST API 服務。 您可以從此處和此處了解有關如何在實踐中使用它們的更多信息。
在本文中,您將了解這兩種工具的優缺點,以及它們最適合您現有 REST API 項目的位置。
易於設置
有一個先決條件:JMeter 和 REST Assured 都需要 Java,因此您需要在計算機上安裝 Java 才能運行 JMeter 或 REST Assured。
安裝 Apache JMeter 非常簡單:轉到下載頁面,選擇 ZIP 或 TAR,下載存檔,解壓縮,然後就可以開始使用了。
轉到您已解壓縮存檔的文件夾,轉到bin
子文件夾,然後運行jmeter.bat
(或適用於您的操作系統的類似文件,如果不是 Windows)。 有關如何設置 Apache JMeter 的更多詳細信息,請參閱此頁面。
安裝 REST Assured 是一種不同的體驗。 REST Assured 不是一個獨立的工具。 它是一個 Java 庫。 為了使用它,您必須設置一個新的 Java 項目並將其作為您的項目的庫包含在內。 當然,它支持許多構建工具,因此您只需將依賴解析器指向某個公共(Maven)存儲庫即可。 您可以在此處找到有關如何設置 REST Assured 的更多詳細信息。
文檔
Apache JMeter 文檔可以在 JMeter 官方網站上找到。 它提供了一些非常全面的文檔,從入門到復雜的功能(例如偵聽器)。 此外,在 JMeter 官方網站上,您可以找到一些非常豐富的資源的鏈接,例如視頻教程。 如果您不太喜歡閱讀而更喜歡看,這對您來說絕對是一個加分項。
REST Assured 文檔,作為工具/庫本身,可以在 Github 存儲庫中找到。 它具有在線文檔中列出的大量功能,並非常詳細地說明瞭如何實現某些功能。 然而,整個文檔是一個巨大的網頁——不是探索工具的最用戶友好的方式。
自動化 REST 測試創建和維護
Apache JMeter 作為具有圖形用戶界面 (GUI) 的獨立應用程序,允許您從 GUI 創建測試。 這很方便,特別是因為從 JMeter 引入的實體層次結構——您在測試中創建的所有內容都將在 JMeter GUI 中以樹狀表示形式顯示。
為了創建一個測試,一個人不必具備任何編碼技能。 然而,GUI 並不限制有關測試計劃的任何可能性。 如果您仍想添加一些自定義編程/流程,BeanShell 組件將允許您這樣做。
當您保存 JMeter 項目時,您創建的所有內容都將保存到一個巨大的 XML 文件中(擴展名為.jmx
)。 通常,即使對其中一個測試進行微小更改,您也(很可能)必須在 GUI 中重新打開項目才能進行更改。
如果您需要在同一個 JMeter 項目文件上與其他人協作,那麼使用任何源代碼控制管理 (SCM) 系統(例如 Git、SVN、Perforce 等)都不容易維護這個巨大的 XML 文件。
另一方面,REST Assured 需要 Java 編碼技能來創建測試。 沒有用於測試創建的用戶友好的 GUI。 但是,REST Assured 允許您使用 Gherkin 語言(Given-When-Then 語法)編寫測試,因此即使您需要一些 Java 編碼技能,測試也是相當易讀的。
given(http://via.placeholder.com/2000x200?text=image+placeholder). config(RestAssured.config(http://via.placeholder.com/2000x200?text=image+placeholder).jsonConfig(jsonConfig(http://via.placeholder.com/2000x200?text=image+placeholder).numberReturnType(BIG_DECIMAL))). when(http://via.placeholder.com/2000x200?text=image+placeholder). get(“/price”). then(http://via.placeholder.com/2000x200?text=image+placeholder). body(“price”, is(new BigDecimal(12.12)));
由於 REST Assured 是一個庫,並且測試實際上是用 Java 編寫的,因此您可以將測試組織在單獨的 Java 文件中,因此當您需要更改一項測試時,只需打開一個文件。 您不需要 GUI,因此即使通過 SSH 終端也可以輕鬆編輯測試。 與他人的協作相當簡單,因為使用任何 SCM 都可以輕鬆維護 Java 文件。
REST 測試的類型
JMeter 是眾所周知的用於測試 Web 應用程序和服務的性能測試工具。 開箱即用,它有很好的報告選項和不同的圖表類型,您可以使用這些選項來顯示性能測試指標。
另一方面,它也不是 JMeter 的主要使用場景。 您可以使用 JMeter 為 REST API 創建功能測試,包括響應斷言。
REST Assured 的主要使用場景是對 REST API 服務進行功能測試。 它甚至帶有自己的響應斷言機制(Gherkin 語法)。 由於 REST Assured 是一個 Java 庫,它可以很容易地與單元測試集成。
在性能測試方面,REST Assured 不支持開箱即用的性能測試。 但是,如果您想將其用於性能測試,則必須開發自己的自定義框架來圍繞 REST Assured 進行性能測試。
測試執行
JMeter 測試可以通過兩種方式調用。
從用戶界面單擊運行按鈕:

從命令行:
jmeter -n -t your_script.jmx
JMeter 的官方建議是不要使用 GUI 運行性能測試,因為與從命令行運行測試相比,測試運行速度會更慢(就每秒的請求數而言)。
另一方面,REST Assured 需要單獨的測試運行程序,例如 jUnit 或 TestNG(或任何其他執行 Java 代碼的方式)。
從 Eclipse 使用 TestNG:
例如,從命令行使用 Ant 構建工具:
ant run-tests
報告類型
由於其主要用途,Apache JMeter 具有大量報告類型,您可以根據測試結果創建這些報告類型。 由於您可以從 JMeter 運行性能測試,因此性能指標通常使用如下圖表顯示:
您可以在此處了解有關 JMeter 報告以及您可以創建的報告類型的更多信息。
REST Assured 本身不會創建任何報告,因此這取決於您和您選擇的測試框架。 但是,當與某些單元測試框架集成時,您可以獲得非常有用的 HTML、文本或 XML 格式的報告。
與詹金斯集成
當涉及到被測產品的持續集成時,將測試自動化框架與 CI 工具集成以運行測試和報告結果非常重要。
JMeter 自動化測試可以使用 Performance 插件輕鬆與 Jenkins 集成,該插件允許您設置構建後操作並從 Jenkins 工作頁面中獲得一個漂亮的儀表板頁面。
REST Assured 也可以很容易地與 Jenkins 集成,因為 Jenkins 具有適用於幾乎所有測試框架的插件; 例如,TestNG 插件可以再次為測試結果創建可靠的趨勢圖。
社區活動
這是一個不容易衡量的類別。 社區活動取決於許多因素,例如工具的成熟度或貢獻者的數量。
Apache JMeter 現在有一個更大的社區。 這主要是因為 JMeter 很久以前就出現在市場上,並且在 Web 應用程序和服務的性能測試方面被認為是行業標準。 JMeter 每 5-6 個月發布一次正式版本。 它的 GitHub 存儲庫非常活躍,每天都有新的提交。 JMeter 使用 Bugzilla 作為問題跟踪器,並有一個經常更改的未解決問題列表。 在 StackOverflow 搜索中,JMeter 有 23000 多個結果。 從社交網站來看,JMeter 有一個官方推特賬號。 在 Facebook 和 LinkedIn 上,沒有 JMeter 的官方賬號,但是有幾個群,其中較大的是這個 Facebook 群和這個 LinkedIn 群。
在自動化 REST API 服務功能測試方面,REST Assured 正在進入主要階段,並已成為首選,來自多個來源的推薦。 REST Assured 在過去兩年中每 6 個月發布一次正式版本。 GitHub 存儲庫有很多貢獻者,比 JMeter 的活躍度稍低,但它也非常活躍。 REST Assured 正在跟踪 GitHub 存儲庫中的問題,因此一切都在一個地方。 在 StackOverflow 中,REST Assured 有 2000 多個搜索結果,因此我們可以說它與 JMeter 搜索結果相比要低得多。 至於社交網絡群組,與 JMeter 相比,只有 LinkedIn 群組的成員數量顯著減少。 REST Assured 社區可能沒有 JMeter 社區那麼大,但它非常活躍。
概括
JMeter 和 REST Assured 都有各自的優勢。 但是根據您正在從事的項目,一個比另一個更適合您的 REST API 測試自動化。 兩者都非常健壯,具有有用的測試選項,擁有出色的報告功能,並且可以輕鬆地與自定義測試框架集成。
以下是本文探討的這兩種流行 REST 測試工具的所有比較標準的摘要:
阿帕奇 JMeter | 放心 | |
---|---|---|
需要編碼技能 | 不 | 是(Java) |
詳盡的文檔 | 是的 | 是的 |
功能測試 | 是的(但矯枉過正) | 是的 |
性能測試 | 是的 | 否(開箱即用) |
適用於單片機(Git、P4...) | 不 | 是的 |
測試報告 | 是的 | 不 |
與 CI 工具集成 | 是的 | 是的 |
與單元測試集成 | 不 | 是的 |
測試並行化 | 是的 | 是的 |
社區活動 | 是的 | 是的 |