發布日期:22 年 2020 月 XNUMX 日
請依照本指南使用 JavaScript 設定 Appium 自動化。
*最後更新於2025年5月
在當今的軟體開發環境中,行動測試自動化比以往任何時候都更加重要。無論您的目標是為原生 iOS 和 Android 應用程式打造完美的使用者體驗、優化混合應用,還是確保應用程式效能的穩定性,自動化都是驅動整個流程的關鍵引擎。本指南將引導您使用 JavaScript 設定 Appium 自動化環境,從安裝必要的先決條件(例如 Node.js 和 Android/iOS SDK)到設定 Appium 和必要的 JavaScript 程式庫。希望本指南能幫助您打下堅實的基礎,從而有效率地實現行動應用測試的自動化。
我們先來搭建開發環境。這將是我們的數位化工具包。我們將首先安裝一些必要的軟體元件和 JavaScript 函式庫,它們將構成我們自動化工作的基礎。讓我們開始吧。
Appium 安裝的先決條件
以下是我們建造之前必須具備的基本工具:
Node.js 和 npm(或 Yarn): 這些工具提供了 JavaScript 所需的執行環境。 npm(Node 套件管理器)與 Node.js 捆綁在一起,可以幫助您安裝 JavaScript 程式庫。 Yarn 是另一個可供選擇的套件管理器。
建議: 去官方 Node.js的 造訪網站並下載最新穩定版本 長期支持 (LTS) 版本。安裝完成後,打開終端機或命令提示符,執行以下命令驗證安裝:
『`bash 節點 -v Npm -
使用 Yarn(可選): 如果您喜歡 Yarn,可以使用 npm 進行全域安裝:
『`bash npm install -g yarn ``''
請使用以下命令驗證安裝:
『`bash Yarn --version ``''
更多基本工具
- Java開發套件(JDK): 雖然我們會用 JavaScript 寫程式碼,但 Appium 及其一些底層元件依賴 Java。對於 Android 自動化來說尤其如此。
- Android SDK(用於 Android 自動化): 要實現 Android 應用的自動化,您需要 Android 軟體開發工具包 (SDK)。它包含了必要的工具、函式庫和模擬器:
- 建議: 下載並安裝 Android Studio在安裝過程中,您可以選擇並安裝所需的 SDK 組件。
- 環境變量: 設置 `ANDROID_HOME` 將環境變數新增至您的 Android SDK 目錄。此外,還要添加 `platform-tools` 將 Android SDK 目錄中的檔案加入系統的 PATH 環境變數中,以便存取必要的工具,例如 `adb`.
- Xcode 和 iOS SDK(用於 iOS 自動化): Xcode 是蘋果公司的開發環境,用於自動化 iOS 應用程序,其中包含 iOS SDK。
- 建議: Xcode 適用於 macOS,可從以下網址下載: Apple 開發者網站 或 Mac App Store,但需要 Apple ID。
- Xcode命令列工具: 安裝 Xcode 後,打開它,導航至 Xcode > 設定… > 位置,並安裝 命令行工具 從下拉菜單中選擇。
- Appium Doctor: 這個便利的工具可以偵測你的系統是否具備 Appium 的所有必要相依性。我們稍後會用它來驗證我們的配置。
安裝 Appium
一切準備就緒後,讓我們來安裝 Appium 本身。
- 安裝 Appium 伺服器: 開啟終端機或命令提示符,使用 NPM 全域執行此命令,即可在您的系統上安裝最新的穩定版 Appium 2.x 伺服器:
『`bash npm install -g appium ``''
- 安裝 Appium 驅動程式: 接下來,我們將安裝待測移動平台的驅動程式。最常用的驅動程式是 Android 平台的 UiAutomator2 和 iOS 平台的 XCUITest。
使用 Appium 驅動程式 CLI 進行安裝:
適用於 Android(UiAutomator2):
『`bash Appium驅動程式安裝uiautomator2 ``''
iOS 版(XCUITest):
『`bash Appium驅動安裝xcuitest ``''
檢查已安裝的驅動程式: 您可以透過執行以下命令查看已安裝的驅動程式:
『`bash Appium 驅動程式清單 --已安裝 ``''
安裝必要的 JavaScript 程式庫
Appium 設定完成後,我們需要一個客戶端程式庫,以便 JavaScript 程式碼能夠與 Appium 伺服器通訊。對 JavaScript 來說,最受歡迎且推薦的客戶端程式庫是 `WebdriverIO`。
1. 建立專案目錄: 建立一個新的資料夾用於存放 Appium JavaScript 測試,然後在終端機中導航到該資料夾:
『`bash 建立 appium-js-tests 目錄 切換到 appium-js-tests 目錄 ``''
2. 初始化項目: 使用 NPM(或 Yarn)創建 `package.json` 用於追蹤專案依賴項的文件:
『`bash npm init -y ``''
(或使用 `yarn init -y`)
3. 安裝 WebdriverIO: 安裝 `WebdriverIO` 軟體包及其同步命令執行包裝器作為開發依賴項:
『`bash npm install --save-dev WebdriverIO WebdriverIO/sync ``''
(或使用 `yarn add --dev WebdriverIO WebdriverIO/sync`)
4. 安裝 Appium 服務插件: 為了讓 WebdriverIO 與 Appium 無縫協作,請安裝 Appium 服務外掛:
『`bash npm install --save-dev @wdio/appium-service ``''
(或使用 `yarn add --dev @wdio/appium-service`)
5. 安裝測試運行程序(可選,但建議): 雖然可以直接執行 WebdriverIO 腳本,但使用像 Mocha 這樣的測試運行器可以更有系統地組織和執行測試。以下是 Mocha 的安裝方法:
『`bash npm install --save-dev mocha ``''
(或使用 `yarn add --dev mocha` 指令)
我們已成功建置了包含 JavaScript 的 Appium 環境。現在,我們可以開始探索 Appium 的架構,並編寫我們的第一個行動自動化測試。
了解 Appium 架構
環境搭建完畢後,有必要花點時間了解 Appium 的工作原理及其幕後操作。 Appium 使用… 客戶端-服務器架構其中,測試腳本(客戶端)向…發送指令 Appium 伺服器伺服器隨後使用專用驅動程式與行動裝置進行互動。這確保了平台獨立性,並實現了跨不同作業系統的一致自動化。
Appium 伺服器元素:
- HTTP 伺服器: Appium Server 是一個用 Node.js 編寫的 HTTP 伺服器,它使用 REST API(表述性狀態轉移應用程式介面)。這意味著測試腳本透過發送 HTTP 請求與伺服器通訊。
- WebDriver協定: Appium 實作了 WebDriver 協議,也就是現在的 W3C WebDriver 規範。該協定與 Selenium WebDriver 用於 Web 瀏覽器自動化測試的協定相同。該標準為開發人員和測試人員提供了一致性。
- 會話管理: 執行 Appium 測試時,用戶端會向伺服器傳送請求以啟動一個「會話」。會話特定於我們要測試的設備/模擬器/模擬器和應用程式。伺服器負責管理此會話的生命週期。
- 命令執行: 會話建立後,測試腳本會向 Appium 伺服器傳送命令(例如,「尋找元素」、「點擊」、「傳送按鍵」)。伺服器隨後會解析這些命令,並將其轉換為在目標行動裝置上執行的操作。
- 駕駛員委派: Appium 將互動委託給特定的驅動程式。例如:
- 對於 Android 自動化,Appium 使用 UiAutomator2 或 Espresso 等驅動程式。
- iOS 自動化測試使用 XCUITest 驅動程式。
Appium客戶端
這些程式庫或語言綁定允許我們使用各種程式語言編寫測試腳本。我們將使用 JavaScript 用戶端程式庫 WebDriverIO(我們之前已經安裝過)。
- 語言綁定: Appium 用戶端提供易於使用的工具(API),隱藏了與 Appium 伺服器通訊的複雜細節。
- WebDriver協定實作: 這些客戶端庫實作了 WebDriver 協議,使我們能夠以標準化的方式向 Appium 伺服器發送命令。
- 簡化互動: 例如,WebDriverIO 提供了一套豐富的命令和功能,專門為行動自動化而設計,使與 UI 元素互動、處理手勢和檢索應用程式資料變得更加容易。
- 選擇客戶: Appium 支援多種客戶端程式庫,包括 Java、Python、Ruby、C# 以及 JavaScript 等語言。
支持平台
Appium 的主要優勢之一是其跨平台功能。它允許我們使用相同的 API 編寫測試,並且在許多情況下,可以在不同的行動作業系統之間重複使用測試程式碼。以下是 Appium 支援的主要平台:
- iOS版: Appium 利用 Apple 的 XCUItest 框架與 iOS 應用程式互動。
- Android的: Appium 使用 UiAutomator2 框架,這是Google面向 Android 開發的現代化自動化測試框架。 Appium 也支援 Espresso,用於對 Android 應用進行白盒測試。
- Windows上: Appium 支援使用 winappdriver 實現 Windows 桌面應用程式的自動化。
- MacOS的: 同樣,Appium 使用 MacDriver 自動測試 macOS 桌面應用程式。
使用 JavaScript 編寫我們的第一個 Appium 測試
我們已經建立了環境,並且對 Appium 的架構有了更深入的了解。現在是時候用 JavaScript 編寫我們的第一個行動自動化測試了!在本節中,我們將建立一個簡單的測試腳本,並在行動裝置或模擬器/模擬器上執行它,然後分析初始結果。
建立測試腳本
讓我們建立一個簡單的測試腳本,該腳本會啟動一個應用程序,定位一個元素,並執行一個簡單的操作。我們將使用先前安裝的 JavaScript 用戶端程式庫 WebdriverIO 和 Mocha 測試運行器。
1. 設定測試檔: 在你的專案目錄中(`appium-js-tests`),建立一個名為的新資料夾 `測試`在這個資料夾內,建立一個新的 JavaScript 文件,例如: `first_test.js`.
2. 導入必要模組: 未結案工單 `first_test.js` 在程式碼編輯器中匯入 `WebdriverIO` 模組。由於我們安裝的是同步版本,所以我們將導入該版本:
```javascript const WebdriverIO = require('WebdriverIO'); const assert = require('assert'); // 用於進行斷言 ``''
3. 明確所需能力: 這些功能指示 Appium 伺服器使用特定設備或模擬器/模擬器來測試特定應用程式。請根據您的設定調整這些選項。
```javascript Const desiredcaps = { 平台名稱:'Android' // 或者 'ios' 設備名稱:'您的設備名稱' // 替換為您的裝置或模擬器名稱 應用程式包名:'com.example.android.app' // 替換為您的應用程式套件名稱(Android) 應用程式活動:'.mainactivity', // 替換為您的應用程式主活動(Android) // 對於 iOS,您可以使用: //平台名稱:'ios', // 裝置名稱:'iPhone 模擬器', // 或你的模擬器名稱 // app: '/path/to/your/app.app' // iOS 應用程式檔案的路徑 }; ``''
請注意: 你需要找到 `devicename`, `apppackage`以及 `appactivity` (對於 Android)或 `app` 您要測試的應用程式的路徑和 Bundle ID(適用於 iOS)。諸如此類的工具 `adb devices` (適用於 Android)Appium Inspector 可以幫助您找到此資訊。
4. 建立測試套件和測試案例: 我們將使用摩卡的 `describe` 以及 它 我們將測試結構分為以下幾個部分:
```javascript 描述('我的第一個 Appium 測試', () => { 它('應該找到一個元素並執行操作', async () => { const client = await WebdriverIO.remote({ 所需能力:所需能力, 端口:4723的 // 預設 Appium 伺服器連接埠 }); // 透過輔助使用 ID、XPath 或其他定位策略尋找元素 const element = await client.$('~someaccessibilityid'); // 使用輔助使用 ID 的範例 // 對元素執行操作(例如,點擊) 等待 element.click(); // 您可以在此處新增斷言來驗證結果 // 例如: // const anotherelement = await client.$('~anotherelementid'); // const isvisible = await anotherelement.isdisplayed(); // assert.strictequal(isvisible, true, '點擊後應該顯示另一個元素'); // 結束會話 等待 client.deletesession(); }); }); ``''
在這個例子中,我們有:
- 已連接到 Appium 伺服器 `WebdriverIO.remote()` 具備我們所需的能力。
- 使用具有輔助功能 ID 定位器策略的 `$` 選擇器(以 `$` 為前綴) `~`) 來找出元素。您也可以探索其他定位策略,例如 XPath(`//`),類別名稱(`.`), ID (`#`)等
- 進行了 `click()` 對找到的元素執行操作。
- 包含一個使用以下方法的基本斷言(已註解掉): `assert` 用於操作後驗證條件的模組。
- 使用以下方式結束 Appium 會話 `client.deletesession()` 釋放設備資源。
運行測試
現在我們已經編寫好了第一個測試腳本,讓我們來執行它。
1. 啟動 Appium 伺服器: 請確保您的 Appium 伺服器正在運作。如果您已全域安裝 Appium,通常可以透過開啟一個新的終端機或命令提示字元並執行以下命令來啟動它:
『`bash 鴉片 ``''
確保伺服器成功啟動並監聽預設連接埠(4723)或您在腳本中配置的連接埠。
2. 使用 Mocha 運行測試: 在終端機中導覽至專案根目錄,執行 Mocha 測試運行器,並指定測試檔案的路徑:
『`bash Npx mocha 測試/first_test.js ``''
Mocha 將執行我們的測試腳本,您將在終端機中看到輸出結果,指示測試是否通過或失敗,如果失敗,也會顯示任何錯誤訊息。您還應該觀察連接的行動裝置或模擬器/模擬器上的活動,因為 Appium 會執行腳本中的命令。
分析測試結果
測試運行完成後,讓我們來確保我們理解結果:
- 終端輸出: Mocha 測試運行器會提供測試執行的摘要信息,包括運行的測試數量、通過的測試數量和失敗的測試數量。如果測試失敗,它會顯示錯誤訊息和堆疊跟踪,以幫助您確定失敗原因。
- Appium 伺服器日誌: 這將提供有關客戶端發送的命令和設備回應的詳細資訊。這些日誌有助於調試。請尋找任何錯誤訊息或異常行為。
- 設備/模擬器狀態: 測試運行結束後,觀察您的行動裝置或模擬器/模擬器的狀態。確認應用程式已正確啟動。確認已執行預期操作。檢查設備上是否有任何錯誤或崩潰。
- 斷言: 如果你的測驗包含斷言,那麼只要有一個斷言不成立,測驗就會失敗。你提供的斷言訊息可以幫助你了解哪裡出了問題。
至此,我們已經編寫、執行並分析了您使用 JavaScript 編寫的第一個 Appium 測試的結果。這對於測試人員的行動自動化之旅來說,這是一個重要的里程碑。
進階 Appium JavaScript 功能
Appium 的高級功能強大且靈活,讓您能夠以更複雜的方式與行動應用程式交互,處理各種場景,並優化測試流程。接下來,我們將探討一些您可以使用 JavaScript 實作的關鍵進階功能。
利用所需功能
所需功能是一組鍵值對,由 Appium 用戶端傳送到伺服器,用於告知伺服器如何設定自動化會話。它們對於根據特定設備、作業系統版本和應用程式設定自訂測試至關重要。
- 基本資訊之外: 而 `平台名稱`, `devicename`, `apppackage`以及 `appactivity` `bundleid` 以及 `app` 對於 iOS 來說,這些功能至關重要,但許多其他功能也會對測試執行產生重大影響。
- 設備和作業系統詳情: 您可以指定特定的作業系統版本(例如, `platformversion: '13.0'`),設備 UDID(適用於真實設備: `udid: 'your_device_udid'`甚至可以指定要使用的自動化引擎(例如, `automationname: 'uiautomator2'` 對於 Android 或 `automationname: 'xcuitest'` (適用於 iOS)。
- 應用程式行為: 所需功能會影響被測應用程式的啟動或處理方式。例如, `noreset: true` 防止應用資料在會話之間被清除。相反, `fullreset: true` 每次會話前都會卸載並重新安裝應用程序,以確保應用程式處於乾淨狀態。
- 瀏覽器測試: 在自動化行動 Web 應用程式時,可以使用以下功能: `browsername: 'Chrome'` (適用於 Android)或 `browsername: 'Safari'` (適用於 iOS)。
- 雲端測試平台: 當使用基於雲端的 Appium 測試服務時,例如 Digital.ai 在測試過程中,您通常會利用特定的所需功能來定義雲端環境,包括瀏覽器版本、裝置池和建置資訊。
- 配置選項: UiAutomator2 具備控制等待策略、網路設定等功能。 XCUITest 具備處理警報和鍵盤行為的功能。
處理行動手勢
行動應用依賴手勢來完成操作。 Appium 提供了在自動化腳本中模擬這些複雜互動的機制。 WebdriverIO 提供了便捷的手勢處理方法:
- 基本操作: 對於簡單的輕觸或點擊, `element.click` 我們之前使用的方法就夠了。
- 觸摸操作 API: 對於更複雜的觸控手勢,WebdriverIO 提供了觸控操作 API。它允許您定義一系列可在螢幕上執行的觸控事件。您可以建立如下操作:
- `press()`:模擬按下特定座標或元素。
- `moveto()`:模擬將觸控點移到新的座標或元素。
- `release()`:模擬抬起觸摸點。
- `wait()`:暫停序列指定的持續時間。
- `tap()`:對元素或座標執行快速點擊操作。
- `doubletap()`:執行雙擊操作。
- `longpress()`:執行長按操作。
- `swipe()`:模擬從一個點滑動到另一個點。
- `pinchopen()` 和 `pinchclose()`:模擬捏合縮放手勢。
- `draganddrop()`:模擬將一個元素拖曳到另一個元素上。
以下是使用 WebdriverIO 中的觸控操作執行滑動操作的基本範例:
```javascript const { touchaction } = WebdriverIO; 它('應該執行滑動操作', async () => { const element = await client.$('~swipeableelement'); const location = await element.getlocation(); const size = await element.getsize(); const startx = location.x + size.width / 2; const starty = location.y + size.height / 2; const endx = startx - 200; // 向左滑動 常數 endy = starty; const action = new touchaction(client); 操作選項 .press({ x: startx, y: starty }) .moveto({ x: endx, y: endy }) 。發布(); 等待 action.perform(); }); ``''
將這些觸控操作按順序組合起來,可以模擬行動應用程式中各種各樣的使用者互動。
使用真機與使用模擬器/模擬器
在執行自動化測試時,選擇在真實實體設備或模擬器/模擬器上執行測試是一個複雜的問題,兩者各有優缺點:
模擬器/仿真器
優點:
- 高性價比: 通常作為 SDK 的一部分免費使用。
- 易於設定和管理: 快速建立和配置虛擬設備。
- 重現性: 更容易維護一致的測試環境。
- 調試工具: 通常提供更好的調試功能和系統日誌存取權限。
缺點:
- 不一定能代表設備的真實行為: 效能、電池消耗和某些硬體功能可能無法準確模擬。
- 硬體存取受限: 某些設備特有的功能可能無法完全實現或準確模擬。
- 性能差異: 在模擬器或模擬器上的性能可能無法準確反映真實設備的性能。
真實設備:
優點:
- 準確呈現使用者體驗: 測試在使用者實際會接觸到的硬體和軟體上運行。
- 完全存取設備功能: 您可以測試攝影機、GPS 和感測器等功能。
- 實際效能測試: 提供目標設備上應用程式效能的準確分析。
缺點:
- 更高的成本: 購置和維護一批真實設備可能成本很高。
- 設定和管理複雜性: 管理多個實體設備,確保它們電量充足、連接正常且狀態一致,可能是一項挑戰。
- 環境不一致: 真實設備可能具有不同的軟體版本、配置和後台進程,這可能會導致測試結果不一致。
Appium 測試的偵錯與故障排除
在使用 Appium 進行自動化測試的過程中,您不可避免地會遇到問題。有效的調試和故障排除對於快速識別和解決問題至關重要,從而確保測試套件的穩定性和可靠性。
常見問題和解決方案
| 議題 | 產品說明 | 解決方案 |
|---|---|---|
| 未找到元素 | 這是一個非常常見的錯誤。 | 仔細檢查元素定位器(輔助使用 ID、XPath、CSS 選擇器等)。使用 Appium Inspector 驗證定位器是否正確,以及互動時元素是否出現在螢幕上。如果您正在處理混合應用程式,請確保應用程式上下文(原生應用程式、WebView)正確。有時,如果元素需要一些時間才能顯示,添加明確等待(`client.waituntil()`)會有所幫助。 |
| 會話未建立異常 | 這通常表示您所需的功能或 Appium 伺服器設定存在問題。 | 仔細檢查所需功能是否有拼字錯誤或數值錯誤。確保指定的設備或模擬器/模擬器正在運作且可存取。檢查 Appium 伺服器日誌,查看會話建立過程中是否有任何錯誤訊息。確認所需的驅動程式(UiAutomator2、XCUITest)已正確安裝。 |
| Appium 伺服器無法啟動或崩潰 | 檢查 Appium 伺服器日誌中的錯誤訊息。確保沒有其他進程佔用相同連接埠(預設連接埠為 4723)。重啟伺服器。如果您使用的是 Appium Desktop,請檢查其日誌。如果您使用的是命令列,請確保 Node.js 和 Appium 已正確安裝。 | |
| “元素不可交互”異常 | 該元素存在,但無法與之互動(例如,它被隱藏、停用或被另一個元素遮蔽)。 | 使用 Appium Inspector 檢查元素的屬性和可見性。確保它已啟用且未被其他 UI 元素遮擋。 |
| 測試執行速度慢 | 優化定位器以提高效率。避免使用過於複雜的 XPath 表達式。使用顯式等待,而不是只依賴隱式等待。盡量減少測試流程中不必要的步驟。如果環境允許,並行運行測試。 | |
| 不穩定的測試 | 有些測試有時會通過,有時會失敗。 | 這通常是由應用程式中的時序問題或非同步操作引起的。請實施穩健的等待策略,包括適當條件的明確等待。確保測試環境穩定。避免依賴硬編碼的延遲。 |
| 測試設備或應用錯誤 | 請仔細檢查您所需的功能,以確保您針對的是正確的裝置(裝置名稱、UDID)和應用程式(應用程式套件/應用程式活動或 bundleid/應用程式路徑)。 | |
| 真機上的權限問題 | 請確保已在真實設備上授予應用程式必要的權限。您可能需要手動授予權限,或使用相應的功能來處理權限提示。 |
使用 Appium Inspector
Appium Inspector 是一款圖形使用者介面工具,可讓您在連接的裝置或模擬器/模擬器上即時檢查行動應用程式的使用者介面元素。它可以幫助您了解應用程式結構並確定自動化腳本的正確定位器。
- 正在連接會話: 設定 Appium Inspector,使其具備要檢查的應用程式所需的功能,並配置正在執行的 Appium 伺服器的位址和連接埠。
- UI元素層級結構: 連線成功後,Appium Inspector 會顯示應用程式 UI 元素的層次結構視圖,顯示它們的結構和屬性。
- 定位器識別: 您可以在檢查器中選擇元素,它會建議各種定位策略(例如,XPath、輔助功能 ID 等)。您可以在測試腳本中使用這些策略。
- 記錄基本操作: 某些版本的 Appium Inspector 可讓您記錄基本交互,例如點擊和輸入,並產生包含 JavaScript (WebdriverIO) 在內的多種程式語言的對應程式碼。這對於快速入門建立測試腳本來說是一個很好的方法。
- 驗證元素屬性: 您可以檢查各個元素的屬性以了解它們的狀態(例如,可見、啟用、選取),這有助於在測試中編寫斷言。
如何使用 Appium Inspector(一般步驟):
- 下載並安裝: 下載最新版本的 Appium Inspector
- 啟動 Appium 伺服器: 請確保您的 Appium 伺服器正在運作。
- 配置檢查器: 啟動 Appium Inspector,並在「所需功能」部分配置您的應用程式和裝置或模擬器的必要資訊。
- 開始會話: 點擊“開始會話”按鈕。 Appium Inspector 將嘗試連線到您的 Appium 伺服器,並在裝置或模擬器上啟動指定的應用程式。
- 檢查元素: 應用程式在檢查器中運行時,您可以瀏覽使用者介面,選擇元素,並查看其屬性和建議的定位器。
記錄和報告
有效的日誌記錄和報告對於理解測試執行情況、識別故障以及深入了解行動應用程式的品質至關重要。
正在記錄:
- 控制台日誌記錄: 最簡單的日誌記錄方式是使用 `console.log()` 在 JavaScript 測試腳本中,輸出有關測試執行流程、變數值以及遇到的任何問題的資訊。
- 專用日誌庫: 為了實現更結構化和更全面的日誌記錄,可以考慮使用專門的 JavaScript 日誌記錄庫,例如 `溫斯頓` or `pino`這些庫可讓您配置日誌等級、格式化日誌訊息以及將日誌寫入檔案或其他輸出。
- Appium 伺服器日誌: 請詳細記錄客戶端與伺服器之間的通訊情況,以及任何內部伺服器錯誤。故障排除時,請密切注意這些日誌。
報告:
- 摩卡記者: 提供各種內建報告器(例如,`spec`、`list`、`dot`),在終端機中提供不同層級的測試執行摘要。
- 自訂報告器: 利用第三方報表庫產生更詳細、更具視覺吸引力的報表,格式包括 HTML、JSON 或 XML。
- 與 CI/CD 整合: 提供測試結果的自動回饋。
- 失敗截圖: 這些視覺證據對於理解故障的背景非常有幫助。 WebdriverIO 提供了截圖的方法。
以下是一個在 Mocha 的 `aftereach` 鉤子函數中,使用 WebdriverIO 在測試失敗時截圖的基本範例:
```javascript const fs = require('fs').promises; Aftereach(async function () { 如果 (this.currenttest.state === '失敗') { const screenshot = await client.takescreenshot(); Const filename = `screenshot-${Date.now()}.png`; 等待 fs.writefile(`./screenshots/${filename}`, screenshot, 'base64'); Console.log(`螢幕截圖已儲存為:./screenshots/${filename}`); } }); ``''
有效的日誌記錄和報告實踐可以維護健康且資訊豐富的自動化框架,從而更容易理解測試結果並快速診斷問題。
將 Appium JavaScript 與其他工具集成
要最大限度地提高 Appium JavaScript 自動化測試的效率和影響力,需要將測試與其他工具和平台整合。讓我們來探討一些關鍵的集成,例如持續集成 (CI) 工具、專用測試報告平台以及我們自己的基於雲端的測試服務。 Digital.ai 測試。
持續整合工具
持續整合 (CI) 是一種開發實踐,它將程式碼變更頻繁地整合到共享程式碼庫中,並基於這些變更運行自動化建置和測試。將 Appium JavaScript 測試與 CI 工具集成,即可在每次提交新程式碼時自動執行行動端測試。
這些持續整合工具可以快速回饋應用程式的穩定性和品質:
- 詹金斯: Jenkins 是一款廣泛使用的開源自動化伺服器,支援大量用於建置、測試和部署軟體的插件。 Jenkins 還可以產生基本的測試報告,並與其他報告工具整合。
- GitLab CI/CD: 這款強大的 CI/CD 系統直接整合到 GitLab 中,使用 `.gitlab-ci.yml` 檔案來定義應用程式的建置、測試和部署流程。您可以定義作業,在模擬器、模擬器或連接的真機上執行 Appium JavaScript 測試。
- GitHub 操作: GitHub 內建的 CI/CD 平台可讓您直接在 GitHub 儲存庫中自動化工作流程。
- CircleCI: CircleCI 是一個基於雲端的 CI/CD 平台,以其易用性和可擴展性而聞名。您可以設定 CircleCI 管線,在各種行動環境中執行 Appium JavaScript 測試。
- 特拉維斯 CI: 另一個流行的基於雲端的 CI 服務,支援對託管在 GitHub 和 Bitbucket 上的專案執行自動化測試。
測試報告工具
雖然持續整合 (CI) 工具通常提供基本的測試報告,但專業的測試報告工具提供更進階的功能,用於視覺化、分析和共享測試結果。這些工具能夠提供關於測試執行、故障分析、歷史趨勢和整體測試覆蓋率的詳細資訊。
| 工具 | 產品說明 |
|---|---|
| Allure框架 | Allure 是一款廣受歡迎的開源報告框架,能夠產生美觀且資訊豐富的 HTML 報告。它提供測試分類、歷史記錄追蹤和失敗截圖等功能。 Allure 擁有 JavaScript 轉接器,可與 Mocha 和其他測試運行器搭配使用。 |
| 報告門戶 | 這是一個基於人工智慧的開源測試自動化分析平台。它提供即時報告、故障分析,並可與各種測試框架和 CI/CD 工具整合。 |
| 測試軌 | 一款商業化的測試案例管理和報告工具,可用於組織測試用例、追蹤測試執行狀態並產生綜合報告。它可以透過其 API 與 JavaScript 測試框架整合。 |
| 範圍報告 | 另一個受歡迎的報表庫,可以產生美觀的 HTML 報表,並提供螢幕截圖、日誌和測試分類等工具。它還提供了 JavaScript 實作。 |
Digital.ai的雲端測試平台
一般來說,雲端測試平台提供對各種真實行動裝置和雲端模擬器/模擬器的按需存取。這省去了維護自有設備實驗室的需求,並為行動自動化測試提供了可擴展性和靈活性。
Digital.ai Testing 是一個領先的雲端測試平台,提供豐富的真實設備、模擬器和模擬器。我們提供強大的 Appium 支援、詳細的報告、測試過程的視訊錄製以及與 CI/CD 工具的整合。
在 Appium 上執行 JavaScript 測試 Digital.ai 測試:
- 登入雲端
- 配置所需功能: 當針對雲端平台執行 Appium 測試時,您需要指定與平台進行身份驗證的特定所需功能,並定義所需的裝置、作業系統版本和瀏覽器(如果測試行動 Web)。 您可以查閱我們的文件以了解更多資訊。.
- 更新遠端 WebDriver 設定: 在 WebdriverIO 設定中,您需要更新 `hostname`、`port`,並可能需要新增驗證詳細資訊(使用者名稱/存取金鑰)。 這裡是我們的 WebdriverIO 指南連結。.
- 執行測試: 像往常一樣運行 WebdriverIO/Mocha 測試。 WebdriverIO 將使用已設定的遠端 WebDriver 設定和所需功能連接到雲端測試平台。
- 查看結果和日誌: Digital.ai 測試“記者” 這是行動工作室的一部分,您可以在這裡查看測試會話的狀態、觀看影片錄影、存取裝置日誌和分析測試結果。
Appium JavaScript 最佳實踐
隨著您在 Appium 和 JavaScript 方面經驗的積累,我們有一些最佳實踐可以幫助您創建一個可維護、高效且可靠的自動化框架。
建立測試套件
結構良好的測試套件對於系統的組織性、可維護性和可擴展性至關重要:
- 按特徵排序: 依應用功能分組測試(例如,「登入」、「結帳」)。
- 使用清晰的名稱: 使用描述性的檔案名稱和資料夾名(例如,login.spec.js)。
- 分離頁面物件: 實作頁面物件模型(POM)以管理使用者介面元素。
- 利用安裝/拆卸: 使用鉤子(beforeEach、afterEach)進行測試設定和清理。
- 保持測試獨立性: 避免測試依賴關係;每個測試都應該建立自己的狀態。
- 採用數據驅動測試: 將具有多個輸入的場景的測試資料外部化。
- 實作輔助函數: 建立用於常見任務的可重複使用實用程式。
- 考慮自動化層: 將複雜的框架結構化為多層,以實現更好的抽象。
優化性能
高效的測試執行對於及時回饋和資源利用至關重要。以下是一些優化 Appium JavaScript 測試效能的技巧:
- 使用高效定位器: 優先考慮快速可靠的定位器(例如,無障礙 ID)。
- 減少等待時間: 使用特定條件的顯式等待。
- 優化能力: 僅包含必要的功能。
- 謹慎重用會話: 考慮重複使用會話以減少開銷,但要注意潛在的依賴關係。
- 並行運行測試: 盡可能並發執行測試。
- 優化影像處理: 如有需要,優化影像對比和尺寸。
- 性格測驗: 找出測試程式碼中的效能瓶頸。
- 考慮無頭模式(Webview): 使用無頭瀏覽器可以加快 WebView 測試速度。
H3 確保測試可靠性
可靠的測試具有一致性,並能提供值得信賴的結果。
- 編寫原子測試: 每次測試都應專注於單一功能,以便更容易發現故障。
- 使用顯式等待: 為了提高系統彈性,應等待特定條件滿足,而不是設定固定超時時間。
- 處理動態元素: 對會發生變化的元素使用可靠的定位器(例如,輔助功能 ID)。
- 實施錯誤處理和報告: 使用 try…catch 語句,記錄錯誤,並在失敗時截取螢幕截圖。
- 隔離測試資料: 每個測試使用不同的數據,並在測試後進行清理,以避免相互幹擾。
- 在典型環境下進行測試: 在各種相關設備和作業系統版本上執行測試。
- 定期檢討和重構: 更新並改進您的測試程式碼,以提高其可維護性。
- 版本控制: 使用 Git 追蹤更改並高效協作。
- 遵循編碼規範:遵循一致的風格指南,以提高可讀性。
使用 Appium 和 JavaScript 輕鬆實現行動自動化
哇,我們做到了!做得好,堅持到最後了!透過本文,您已經踏上了輕鬆實現行動自動化的旅程:從使用 JavaScript 設定 Appium 環境,到理解其核心架構,再到編寫您的第一個測試,探索高級功能,學習必要的調試技巧,以及了解如何與其他強大的工具整合。
我們甚至還有時間回顧一些建立測試套件、優化效能以及確保自動化工作可靠性的關鍵最佳實踐。
行動應用將持續發展,並在我們的數位化生活中扮演至關重要的角色。自動化是高效率測試的關鍵。結合 Appium 的強大功能和 JavaScript 的靈活性,您可以自信地交付高品質的行動體驗。
如果您想了解更多有關如何 Digital.ai 測試可以幫助您實現這些目標,註冊即可免費試用。