在上一個章節,我們已經學習到該如何進行 web 的自動化測試,接下來我們將平台由瀏覽器改制移動裝置 (但其實 appium 也可以針對某些智能電視做測試),隨著移動應用的快速發展,如何有效的測試跨平台應用成為了新的挑戰。目前在雙平台皆有針對測試開放了工具,像是 Google 提供的用來做 Android 自動化測試的 uiautomator2,以及 Apple 提供的 XCUITest,但是這對於測試人員來說,撰寫 UI 自動化測試本身已經存在一定的成本,若是又因為不同的平台需要維護不同的測試腳本的話成本就更高了,因此Appium 作為一款強大的跨平台自動化測試工具,已經成為許多開發團隊的首選。隨著 Appium2 的發布,這個工具變得更加靈活且功能強大,因此在接下來我們將針對該如何透過 Robot Framework 搭配 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 有更多的了解:
簡單來說就是 Clients 幫我們把我們寫的程式碼轉成 Appium Server 看得懂的樣式,Appium Server 透過 Drivers 跟 Device 做溝通,Drivers 將執行的結果回傳給 Server,Server 再回傳給 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 的核心組件之一,負責處理來自 Appium Clients 的請求。它充當了中間層,將客戶端發送的測試指令轉化為具體設備能夠理解和執行的操作。Appium Server 基於 Node.js 開發,並且支持跨平台運行,可以在 Windows、macOS 和 Linux 系統上運行。
Appium Server 的主要職責包括:
Appium Drivers 是 Appium 的另一個關鍵元素,Appium Drivers ****的主要功能是將 Appium 伺服器的指令翻譯為設備能理解的操作。不同的驅動程式負責不同的操作系統,例如 Android 使用 UiAutomator2 驅動程式,iOS 則使用 XCUITest 驅動程式,這些 Driver 知道如何與特定設備交互,除此此外,還有一些其他的驅動程式,例如 Espresso 驅動程式(針對 Android)和 Mac 驅動程式(針對 macOS 應用)。下面我們列舉些常見的 Drivers:
Appium Drivers 的主要職責包括:
Appium Plugins 是對核心功能進行擴展的模組,這些 Plugins 為 Appium 增加了額外的功能,以滿足不同測試場景的需求。透過擴充 Plugins 可以修改 Appium Server 的行為,為測試過程中提供更多的定製功能。例如,有些 Plugins 可以用於加速測試執行,增強日誌記錄,或提供特定的應用操作功能。使用 Appium 插件的優勢在於,開發者可以靈活的擴展 Appium 的能力,而不需要對核心程式碼進行修改,並且由於支援第三方 Plugins,因此可以依靠社群的力量分享出更多好用的 Plugins,讓整體測試生態更完善。
Appium Plugins 的主要職責包括:
Appium 作為一款功能強大且靈活的自動化測試工具,其優點使得它在移動應用測試領域廣受歡迎。然而,它的一些缺點,如測試穩定性和執行速度,仍然需要在實際應用中加以考量。根據具體項目的需求,開發團隊可以權衡這些優缺點,決定是否採用 Appium 作為測試工具。