iT邦幫忙

2024 iThome 鐵人賽

DAY 20
0
DevOps

建立應用程式 UI 自動化測試 - 以 Robot Framework 為例系列 第 20

[20] Robot Framework 結合 Appium 進行 App 自動化測試 - 認識 Appium

  • 分享至 

  • xImage
  •  

在上一個章節,我們已經學習到該如何進行 web 的自動化測試,接下來我們將平台由瀏覽器改制移動裝置 (但其實 appium 也可以針對某些智能電視做測試),隨著移動應用的快速發展,如何有效的測試跨平台應用成為了新的挑戰。目前在雙平台皆有針對測試開放了工具,像是 Google 提供的用來做 Android 自動化測試的 uiautomator2,以及 Apple 提供的 XCUITest,但是這對於測試人員來說,撰寫 UI 自動化測試本身已經存在一定的成本,若是又因為不同的平台需要維護不同的測試腳本的話成本就更高了,因此Appium 作為一款強大的跨平台自動化測試工具,已經成為許多開發團隊的首選。隨著 Appium2 的發布,這個工具變得更加靈活且功能強大,因此在接下來我們將針對該如何透過 Robot Framework 搭配 appium 來進行自動化測試。

什麼是 Appium

要理解 Appium,首先需要了解它的基本工作原理。Appium 是一個基於 WebDriver 協議的開源自動化工具,目的在促進應用程式平台之間的 UI 自動化測試,包括行動裝置(iOS、Android、Tizen)、瀏覽器(Chrome、Firefox、Safari)、桌面(macOS、Windows)、 TV (Roku、tvOS、Android TV、三星)等。Appium 允許用戶使用多種編程語言(如 JavaScript、Python、Java 等)來編寫測試腳本,而這些腳本可以在真實設備或模擬器上執行。

Appium 的核心原理是「無需重編譯或修改應用程序」,這意味著測試過程不會干擾應用本身。具體來說,Appium 會啟動一個名為 "Appium Server" 的伺服器,該伺服器負責接收來自測試腳本的命令,並將這些命令轉換為設備可以理解的操作。這些操作通過 WebDriver 協議傳遞給設備,設備執行相應的操作後將結果返回給 Appium,最終測試結果被傳回給用戶。

在 Appium2 中,架構被進一步優化,引入了多個獨立的 "Appium Drivers" 和 "Plugins"。這意味著,除了基本的移動自動化測試功能外,用戶還可以根據自己的需求靈活的擴展或替換特定的驅動程式或插件,從而提供了更大的靈活性。

我們可以透過下方的圖片對於 Appium 有更多的了解:
https://ithelp.ithome.com.tw/upload/images/20240929/20168859Qt6FHfyHGy.png

Appium 的優點與缺點

優點

  1. 跨平台支持:Appium 支持對 iOS 和 Android 應用進行自動化測試,並且允許使用相同的測試腳本在不同的操作系統上執行,從而節省開發時間和成本
  2. 多語言支持:Appium 支持多種編程語言,包括 Java、Python、JavaScript、Ruby 等,開發者可以使用自己熟悉的語言編寫測試腳本,降低了學習曲線。
  3. 無需修改應用:Appium 無需對應用進行重編譯或修改,即可直接對原生、混合、以及移動網頁應用進行測試。這使得測試過程更加真實,並且不會對應用的內部運行機制產生影響。
  4. 活躍的社區支持:Appium 擁有龐大的用戶社區和豐富的文檔資源,當遇到問題時,開發者可以輕鬆找到解決方案,並獲得社區的幫助。
  5. 開源且免費:作為開源工具,Appium 不需要任何授權費用,這對於中小型企業來說尤為有利。開發者還可以根據需求對其進行二次開發,進一步擴展其功能。
  6. 插件與擴展:Appium2 引入了插件和模塊化驅動程式,提供了更大的靈活性。開發者可以根據具體需求自定義測試流程,甚至開發自己的插件來滿足特殊需求。

缺點

  1. 測試穩定性:由於 Appium 依賴於 WebDriver 協議,測試的穩定性可能會受到設備狀態和環境的影響。特別是在移動端,設備的性能、網絡延遲等因素可能導致測試結果不穩定。
  2. 執行速度:由於 Appium 是一個基於 WebDriver 的工具,測試執行速度通常會較慢。
  3. 限制與兼容性問題:雖然 Appium 支持多種移動平台,但在一些特定的操作系統版本或設備上,可能會遇到兼容性問題。某些特定的移動應用功能(如手勢操作、多點觸控等)的測試,可能需要額外的配置或不被完全支持。

Appium 的核心組成部分:Clients、Server、Drivers 和 Plugins

簡單來說就是 Clients 幫我們把我們寫的程式碼轉成 Appium Server 看得懂的樣式,Appium Server 透過 Drivers 跟 Device 做溝通,Drivers 將執行的結果回傳給 Server,Server 再回傳給 Clients。

Appium Clients

Appium Clients 是指開發者使用來編寫測試腳本的客戶端庫。這些客戶端庫支持多種編程語言,如 Java、Python、JavaScript、Ruby 等,允許開發者使用自己熟悉的語言來編寫與測試相關的命令和腳本。Appium Clients 負責將這些命令轉換為 WebDriver 協議的格式,並將其傳遞給 Appium Server,以及接收 Appium Server 的回覆,這些回覆可以判對自動化執行的命令時否成功,或是包含相關的狀態資訊,下面我們列舉些常見的 Clients:

詳細可以閱讀官方文件:https://appium.io/docs/en/2.1/intro/clients/

Appium Server

Appium Server 是 Appium 的核心組件之一,負責處理來自 Appium Clients 的請求。它充當了中間層,將客戶端發送的測試指令轉化為具體設備能夠理解和執行的操作。Appium Server 基於 Node.js 開發,並且支持跨平台運行,可以在 Windows、macOS 和 Linux 系統上運行。

Appium Server 的主要職責包括:

  • 解析和執行測試命令:Appium Server 接收來自 Clients 的測試指令,並將其解析為適合設備的指令。
  • 管理測試 session:每當測試啟動時,Appium Server 會創建一個新的 session 來執行測試命令。
  • 與 Appium Drivers 交互:Appium Server 將指令傳遞給合適的 Appium Driver,Driver 再與設備進行交互。

Appium Drivers

Appium Drivers 是 Appium 的另一個關鍵元素,Appium Drivers ****的主要功能是將 Appium 伺服器的指令翻譯為設備能理解的操作。不同的驅動程式負責不同的操作系統,例如 Android 使用 UiAutomator2 驅動程式,iOS 則使用 XCUITest 驅動程式,這些 Driver 知道如何與特定設備交互,除此此外,還有一些其他的驅動程式,例如 Espresso 驅動程式(針對 Android)和 Mac 驅動程式(針對 macOS 應用)。下面我們列舉些常見的 Drivers:

  • UiAutomator2:主要用於 Android 平台。
  • XCUITest:用於 iOS 平台,支持 iOS 9.3 及以上版本。
  • Espresso:另一個 Android 驅動。

Appium Drivers 的主要職責包括:

  • 翻譯指令:將來自 Appium Server 的通用測試指令翻譯為具體平台的指令,例如將點擊命令轉化為 Android 或 iOS 的點擊操作。
  • 與設備交互:根據指令,Driver 直接控制設備,執行測試腳本中的操作。

Appium Plugins

Appium Plugins 是對核心功能進行擴展的模組,這些 Plugins 為 Appium 增加了額外的功能,以滿足不同測試場景的需求。透過擴充 Plugins 可以修改 Appium Server 的行為,為測試過程中提供更多的定製功能。例如,有些 Plugins 可以用於加速測試執行,增強日誌記錄,或提供特定的應用操作功能。使用 Appium 插件的優勢在於,開發者可以靈活的擴展 Appium 的能力,而不需要對核心程式碼進行修改,並且由於支援第三方 Plugins,因此可以依靠社群的力量分享出更多好用的 Plugins,讓整體測試生態更完善。

Appium Plugins 的主要職責包括:

  • 擴展功能:開發者可以創建或使用現有的插件來增強 Appium 的功能,例如添加新的命令或自定義報告功能。

結語

Appium 作為一款功能強大且靈活的自動化測試工具,其優點使得它在移動應用測試領域廣受歡迎。然而,它的一些缺點,如測試穩定性和執行速度,仍然需要在實際應用中加以考量。根據具體項目的需求,開發團隊可以權衡這些優缺點,決定是否採用 Appium 作為測試工具。


上一篇
[19] 使用 Robot Framework 結合 Playwright 進行 Web 自動化測試 - 將測試與 Github Actions 整合
下一篇
[21] Robot Framework 結合 Appium 進行 App 自動化測試 - Appium Android 環境安裝
系列文
建立應用程式 UI 自動化測試 - 以 Robot Framework 為例30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言