自動化迴歸測試工具—— AREX 上手實踐

語言: CN / TW / HK

AREX 是一款開源的自動化測試工具平臺,基於 Java Agent 技術與比對技術,通過流量錄製回放能力實現快速有效的迴歸測試。同時提供了介面測試、介面比對測試等豐富的自動化測試功能,無需程式設計能力也可快速上手。

AREX 可以通過 Docker-Compose 一鍵安裝所有的基礎服務元件。除此之外,AREX 也同步提供了線上試用平臺 AREX Demo,與官方釋出的最新版本保持一致,無需部署所有的服務元件即可試用,大大減少了試用費力度。

本文將介紹試用 AREX Demo 平臺中介面測試功能及回放測試功能的詳細操作步驟。希望通過本文,為大家提供一種實現高效自動化迴歸測試的新思路。

訪問 AREX Demo 環境

使用 Chrome 瀏覽器訪問 AREX Demo 環境:http://demo.arextest.com/,首次登入需要進行註冊。

輸入郵箱後,點選 Send Code 按鈕, 稍後郵箱將接收到 AREX 傳送的登入驗證碼,如下圖,將驗證碼填入即可登入。

登入後,進入 AREX Demo 的前端頁面,如下圖所示:

頁面包括 Work Space 管理區域、介面測試(Collection)、回放測試(Replay)、環境配置(Environment)和應用配置(AppSetting)、使用者操作配置等部分,詳見 AREX 官方文件

Chrome 外掛安裝

由於瀏覽器訪問跨域名服務受限,在使用 AREX 介面測試功能前,需要安裝 Chrome 外掛,通過外掛實現對外請求介面。

訪問 Chrome Web Store,在搜尋框中輸入 AREX,新增 Arex Chrome Extension。如下圖:

如無法訪問 Web Store,可以直接下載最新的外掛包到本地進行安裝,當前最新的外掛版本是 v1.0.45。

至此,所有的前期準備工作完成,接下來將介紹如何使用 AREX 的介面測試及錄製回放功能。

使用 AREX 進行介面測試

本文中驗證功能使用的是由官方提供的模擬服務 AREX-Community-test,Demo 環境中該服務介面暴露地址是 demo.arextest.com:18080。

  1. Collection 中新建一個名為 “Demo-Community-Test” 的集合,用以建立介面請求。

  1. 在 “Demo-Community-Test” 集合右側下拉選單中選擇 Add Request,新增一個請求,並選擇請求方式為 GET

    1. 輸入介面路徑 http://{{arex_host}}/nettyTest/nettyTest ,其中 {{arex_host}} 是引數名為 arex_host, 值為 demo.arextest.com:18080 的環境變數,需提前在 Environment 中進行配置。也可直接輸入 http://demo.arextest.com:18080/nettyTest/nettyTest 作為介面路徑,但如果需要在多個環境(如生產環境、測試環境、開發環境等)進行測試時,逐個修改前置 URL 比較費力,因此建議使用環境變數,在不同環境進行測試只需切換環境即可。

    2. 在新建的請求右側下拉選單中選擇 Add Case, 為該介面請求建立一個測試用例,用例的屬性可以直接繼承於請求,減少維護成本。

    3. 其他引數可以根據需要設定,Parameters 中設定引數, Headers 設定請求頭, Body 設定請求體, Pre-request Script 設定前置指令碼, Tests 設定斷言,判斷是否符合預期。

    4. 全部設定完成後,點選 Send 傳送請求並執行指令碼驗證(如有),如下圖。

使用 AREX 進行回放測試

AREX 的流量錄製功能是通過 Java Agent 技術實現的,如需錄製應用,首先需要在被測的 Java 應用啟動中加入 Java Agent 配置:

environment:``- JAVA_TOOL_OPTIONS=``'-javaagent:/usr/local/tomcat/arex-agent-0.1.0.jar'` `-Darex.service.name=community-demo-name -Darex.storage.service.host=demo.arextest.com -Darex.enable.debug=``true

其中:

當被測應用裝載了 AREX Agent, 並正確配置了 AREX Storage 服務地址後, 即可在回放測試(Replay)列表中看到該應用名,說明應用已經成功註冊,如下圖所示:

community.0.2.6 為本文中使用的測試應用 Arex-community-test(0.2.6 版本)的預設名。隨後 AREX 會記錄下對這個服務介面地址進行的每個訪問,包括請求和應答,以及被測服務對外部依賴的訪問(資料庫,Redis等等),這個過程就是 AREX 的錄製過程。

在錄製完成後,點選頁面右上角選擇 Start Replay 開始回放測試。依次選擇回放測試的地址(為了演示方便,本次演示中錄製和回放採用同一個地址 http://demo.arextest.com:18080)及需要回放的用例的錄製起止時間。

AREX 執行回放操作時,首先由 Schedule 排程服務將被測應用的錄製資料(請求)從資料庫梳理出來,隨後向目標被驗證服務傳送介面請求,當服務接收到請求後,處理請求邏輯,同時由 Agent 把需要 MOCK 的外部依賴資料裝載進來,處理結束後返回響應報文。排程服務會將回放的響應報文和錄製的響應報文進行比對,並由分析服務統計分析比對結果,將存在的 BUG 或者疑似 BUG 展示在回放報告中,供開發和測試人員檢查。

回放報告頁面如下圖所示:

當錄製與回放的比對結果存在差異時,報告中會出現失敗用例(Failed):

1.在報告頁面中選擇某條路徑下 Case Table,可以看到每個回放用例的狀態,如下圖所示。點選 Detail 檢視詳情, Save 將該用例儲存為常規測試用例。下圖中的 Failed 用例左側基準版本(錄製)存在資料庫查詢(query),但右側最新版本(回放)沒有,則標識回放失敗。

  1. 選擇 Diff Scenes,進入分析比對差異頁面,AREX 將該路徑下的比對差異點進行了合併展示,方便開發及測試人員檢視分析。

當然也可以選擇 Tree Mode 進行樹狀圖展示。

以上就是 AREX Demo 環境的完整試用操作。Demo 環境目前還存在一些問題需要改進:

  1. AREX Demo 環境部署在 AWS 上,有些使用者反饋訪問不是很快,特別是在處理大資料集時,操作速度明顯變慢,需要進一步優化;
  2. AREX 操作介面還有一些不夠友好和直觀,介面易用性上還需要優化提升。

目前 AREX 保持著每月 1-2 次的發版頻率,我們相信,在未來的開源共建之路上,AREX 會越來越成熟和完善。