Selenium行動測試綜合指南

最後更新日期:2020年4月06日 Continuous Testing 專家
Continuous Testing

 

在今天 DevOps 在當今時代,持續開發和持續部署是軟體開發環境的關鍵目標。程式碼不斷被開發和更新。 不斷測試 此外,自動化測試工具是實現應用程式持續部署的關鍵。 Selenium 是一款流行的自動化測試工具,可協助 Selenium 開發人員將持續測試整合到開發過程中。它支援多種瀏覽器、平台和作業系統。

然而,智慧型手機的普及使得市場上湧現各種各樣的設備、平台和作業系統。早期的手機螢幕較小,設計也不夠人性化。但如今的螢幕已經改變了這一切。行動優先應用程式已成為新的趨勢。這要求企業調整其測試策略以適應這項變化。 行動應用解決方案.

行動應用程式易於使用且更方便存取。如今,越來越多的人使用行動裝置進行線上​​購物或訂閱各種服務。目前,60% 的商業資源都透過行動裝置存取。然而,與 Appium 相比,大多數測試人員更傾向於使用 Selenium 進行行動測試,以測試自動化解決方案。

Selenium 是否支援行動應用測試?雖然它本身並不直接支援行動測試,但它提供了一些用於測試行動應用的框架。 Selendroid 就是一個基於 Selenium 的行動測試框架,它允許企業在 Android 裝置上執行自動化測試。然而,Selendroid 的功能較為有限。這時,Appium 就派上了用場,它能夠幫助 Selenium 行動測試開發者解決這個難題。 Appium 是一個強大的行動自動化測試框架,它基於 Selenium,並提供跨平台和跨技術的支援。您可以使用 Appium 編寫一套測試程式碼,同時適用於 Android 和 iOS 平台。

如果您想了解更多關於使用 SeeTest 進行 Selenium 和 Appium 測試的信息,請點擊這裡。 

技術協議

Selenium 和 Appium 使用相同的協定:JSON Wire 協定。該協議最近已成為 W3C 標準協議。如今,許多行業以及瀏覽器提供者都在將其作為標準協議來實現。

Selenium架構

Selenium架構

Selenium 可讓您使用 Java、PHP、C# 和 Python 等多種語言編寫程式碼。程式碼透過 JSON Wire 協定執行。該協定是一個 REST API,用於控制瀏覽器。當程式碼作為 HTTP REST 請求執行時,Selenium 伺服器會建立一個新的會話。然後,它會呼叫瀏覽器驅動程式(Chrome 驅動程式、Safari 驅動程式和 Edge 驅動程式)來存取瀏覽器。瀏覽器透過瀏覽器驅動程式將要求的資訊傳送給 Selenium 伺服器,然後 Selenium 伺服器再將資訊傳送給客戶端。

Selenium Grid 元件

Selenium Grid 元件

Selenium Grid 包含三個主要元件。 Selenium Grid Hub 是伺服器,負責將測試任務分發到各個節點。伺服器會根據預先定義的功能需求來決定將測試任務指派給哪個節點。 Selenium Grid Node 是運行從 Hub 接收的測試任務的伺服器。每個伺服器可以連接多個節點。 wd/hub 是 URL 的一部分,用於 Hub 和節點之間的通訊。

Appium架構

Appium架構

Appium 的架構與 Selenium 非常相似。 Appium 也允許 Selenium 行動測試開發人員使用多種語言編寫程式碼,例如 Java、PHP、C#、Python、Ruby、JavaScript (WebdriverIO) 和 JavaScript (WD)。此外,Appium 還實現了其他選項。例如,當您使用 Java 時,它會繼承 RemoteWebDriver。 Appium 伺服器可以安裝在本機或雲端。當透過 JSON Wire 協定從 Appium 用戶端執行 createSession() 指令時,Appium 伺服器會透過 Appium 驅動程式(Android 驅動程式/iOS 驅動程式)在行動裝置上建立一個新會話。對於 Android 設備,它使用 Android ADB 基礎架構。如果需要,它會在設備上建立 APK 檔案。對於 iOS,它將使用行動 IDE 框架並透過命令列進行通訊。

這裡的想法是在行動裝置上運行虛擬的無限循環測試。在 iOS 系統中,它運行的是 XCUITest 測試。這些測試由伺服器控制。

安裝 Appium

在 Android 裝置上安裝 Appium 非常簡單。但是,在 iOS 裝置上安裝 Appium 則稍微複雜一些。主要挑戰在於,您不能直接將應用程式安裝到裝置上。由於您處理的是開發者應用程序,因此每個應用程式都必須對設備進行簽署。使用模擬器時,您可以繞過某些步驟。此外,您還需要 Apple 開發者 ID、有效的開發憑證、設定檔、已簽署的 .ipa 檔案、Xcode 和命令列開發工具。而且,您還需要在 Xcode 中配置設備以進行開發。

例如,如果您使用的是 Java,則需要執行下列操作:

  • 配置Java
  • 安裝 Homebrew
  • 接下來,安裝 node.js 和 npm。
  • 然後,安裝 Appium。
    • npm install –g appium
  • 最後,安裝 wd
    • npm install wd
  • 配置 Appium iOS 設備,該設備將安裝 ilibmobiledevice。
  • 配置 XCUITest 驅動程式

您可以查看此教學課程,以了解安裝 Appium 的詳細步驟。

http://appium.io/docs/en/about-appium/getting-started/#installing-appium

覆蓋矩陣

測試 Android 應用程式可以使用 Windows、Mac 或 Linux 系統。但是,測試 iOS 應用程式則需要 Mac 裝置。雲端服務同時支援 iOS 和 Android 應用程式。

Selenium 開發人員覆蓋矩陣

行動裝置與瀏覽器

在進行行動端測試之前,了解行動裝置和瀏覽器之間的環境差異非常重要。

  • 手勢: 行動裝置使用不同的輸入選項或手勢,例如滑動、捏合、雙指觸控、多指觸控等,而這些在網頁瀏覽器中是不可用的。
  • 不同的URL系統: 行動應用是專門針對行動裝置的,它沒有常規的網頁網址。
  • 真實設備與模擬器: 你需要同時在真機和模擬器上進行測試。對於安卓系統,真機和模擬器可以使用相同的APK檔案。但是,iOS系統則不同,真機和模擬器使用的技術不同,因為模擬器運行在x64架構上,而真機使用ARM處理器。因此,你需要在兩種平台上都進行測試。
  • 按鈕: 行動裝置通常帶有諸如主頁鍵、電源鍵和音量鍵之類的按鈕。測試時必須考慮這些按鈕。
  • 主屏幕: 行動裝置的主螢幕帶有通知欄。因此,需要考慮主螢幕上的互動操作。
  • 旋轉螢幕: 手機螢幕可以切換到垂直螢幕和橫屏模式,螢幕尺寸也會隨之改變。
  • 不同的網路連線: 應考慮網路狀況,例如 2G、3G、4G 和 5G。尤其應該在不同的網速下進行功能測試。

行動應用與網頁應用

就應用程式而言,行動應用程式與網頁版應用程式有所不同:

  • 應用生命週期: 行動應用的生命週期各不相同,也更為複雜。您可以安裝、解除安裝、啟動和關閉應用程式。
  • 有狀態導航: 行動應用程式會記住您的會話,並在您下次登入時做出相應的回應。它具有更強的狀態感知能力。導航也很簡單。
  • DOM UI 技術: iOS 和 Android 系統有所不同
  • 客戶端腳本: 例如,在行動應用中不支援 JavaScript。
  • 調試工具: (例如:Chrome 瀏覽器中的 F12)不可用。

移動功能

對於本機功能,您應該指定以下詳細資訊:

  • 平台名稱: 請指定平台(iOS / Android)
  • 設備名稱: 請指定設備名稱(因為您將使用多個設備)。
  • 自動化名稱: 請說明所使用的自動化技術(例如:iOS 平台的 XCUITest)。
  • 應用: 若要安裝應用程序,請指定 APK 路徑。
  • bundleId/appActivity: 指定應用的 Bundle ID。在 Android 系統中,應用程式內既有 Bundle Activity,也有可以啟動的特定 Activity。而在 iOS 系統中,只有 Bundle Activity。

雲端能力

當 Selenium 開發人員使用雲端技術時:

  • 存取密鑰: 存取密鑰允許進行遠端測試
  • 設備查詢: 尋找雲端使用的設備

移動指令

為了重載行動端指令,Selenium 開發人員可以使用 ExecuteScript。以下是一些與應用程式相關的行動端命令:

  • 安裝應用程式
  • 啟動應用程式
  • 重置應用
  • 移除應用
  • 終止應用程式
  • 在背景運行應用程式

設備命令範例

  • 開鎖
  • 輪流
  • 隱藏鍵盤
  • isLock

您可以在此 Appium 頁面中找到所有可用命令: http://appium.io/docs/en/commands/mobile-command/

如何使用 Selenium 和 Appium 建立行動端測試?

使用 Selenium

步驟 1:建立 Gradle 文件

若要開始測試,請開啟您的整合開發環境 (IDE)。例如,如果您使用的是 Java,則可以開啟 IntelliJ IDEA。

  • 創建一個新項目
  • 選擇 Gradle(您也可以使用其他選項,例如 Maven)
  • 為專案命名(例如:Selenium 2)
  • 點擊完成

步驟 2:將 Selenium 加入到 Gradle 中

將 Selenium 加入到 Gradle 中

  • 點擊新版本後,它會顯示新版本。但是,現在顯示的是 alpha 版本。點選 Selenium Java。

點選 Selenium Java

  • 請在下一頁選擇最新版本。

點選 Selenium Java 新版本

  • 從下一頁複製程式碼,並將其貼上到 IDE 的依賴項框中。如果您的裝置缺少所需的依賴項,它將下載所有必要的依賴項。

從下一頁複製程式碼,並將其貼上到 IDE 的依賴項框中。

  • 我們將使用 TestNG 進行本次測試。因此,請匯入 Selenium TestNG 和 Chrome 驅動程式。您可以從這裡下載 Chrome 驅動程式:https://chromedriver.chromium.org/
  • 建立一個新的軟體包(目錄)並為其命名(例如:William.demo)。
  • 建立一個類別(例如:williamSeleniumdemo)
  • 現在您已準備好所有必需元素。請編寫 Selenium 測試程式碼。
    • 例如,使用 driver.get() 開啟一個 URL 並等待頁面載入完成。
    • driver.navigate() 用於在頁面之間導航
    • findElement(By.xpath())
    • driver.quit() 關閉所有瀏覽器
  • 執行測試

Appium 測試

與 Android 裝置相比,使用 Appium 測試 iOS 裝置稍微複雜一些。因此,本測試指南將以 iOS 裝置為例進行測試。

  1. 開啟 IntelliJ IDE。
  2. 將 Appium 依賴項新增至 Gradle 中(如有 Selenium 依賴項,請移除)。
  3. 安裝 iOS 驅動程式(WebDriver 沒有專門針對 iOS 的命令)
  4. Selenium 開發人員可以使用 Selenium 測試作為基準,並對其進行修改,使其成為 iOS 測試。
    1. 定義所需功能(這將有助於您設定鍵值映射,以定義雲端登入方式、應用程式啟動方式等)。
    2. 您需要存取密鑰才能存取裝置。因此,請前往您的雲端環境並建立存取密鑰。
    3. 為測試建立一個名稱(例如:WilliamAppium 測試)
    4. 選擇要使用的應用程式並取得其應用程式包 ID。您也可以前往雲端環境並將應用程式上傳到裝置。
    5. 定義移動功能類型
    6. 透過建立新的 iOS 驅動程式並提供 wd URL 來初始化驅動程式。
  5. 現在,從 IDE 執行測試。它將啟動驅動程式並在行動裝置上執行測試。
  6. 前往雲端頁面並開啟設備,即可即時查看應用程式的安裝、啟動和關閉過程。

從 Appium 應用程式執行測試

從 Appium 應用程式執行測試

  • 前往 Appium
  • 建立新會話
  • 雲端服務提供者有很多。請選擇雲端服務提供者。

雲端服務提供者有很多。請選擇雲端服務提供者。

  • 輸入使用者名稱和存取密鑰
  • 定義平台名稱(例如:iOS)
  • 定義設備查詢(例如:os=iOS)
  • 點擊開始會話
  • 設備將自動被選取。您可以使用 Appium 桌面來識別不同的元素及其屬性。
  • 編寫程式碼
    • Driver.findelement(by.xpath)
    • Sendkeys()(使用者名稱和密碼)
  • 執行程式碼。現在,它將選擇另一個設備。
  • 前往雲端查看測試在不同裝置上的運作情況。
  • 您可以設定斷點進行調試。

搞定了!現在Selenium開發人員已經成功地使用Appium執行了測試。

點擊此處了解更多關於使用Experitest進行Appium和Selenium測試的信息.

蓋伊·阿里埃利 - 技術長

你可能還喜歡