移動自動化測試工具appium。appium目前在移動UI自動化測試領域占有重要地位,不僅支持Android和IOS兩大平台,還支持多種編程,因而得到廣泛的應用。
移動應用類型
移動應用類型主要分為以下幾類
- Native App:原生應用。
- Mobile Web App:移動Web應用。
- Hybrid App:混合應用。
移動應用類型
- Native App
Native App(原生應用)是為特定移動設備或平台開發的應用程序(如Android、iOS或Windows)。例如,iPhone應用程序是用Swift寫的,Android應用程序是用Java寫的。原生應用的可靠性極高,因為它們使用的是底層系統的架構和設備的內置功能。 - Mobile Web App
Mobile Web App(移動應用)是通過移動瀏覽器訪問的應用程序,可以通過內置瀏覽器輕松訪問。例如,iOS上的Safari,Android上的Chrome。它們主要使用HTML5、JavaScript等技術開發,可以提供定制功能。Mobile Web App基本來自服務器,並且不能在設備的任何地方離線存儲。 - Hybrid App
Hybrid App(混合應用)主要使用網絡技術(HTML5、CSS和JavaScript)開發,但嵌入在App中運行,從而感覺它像是原生應用程序。
對於擁有網頁的公司來說,混合應用最受青睞。這些公司通常將混合應用作為封裝來構建網頁。PhoneGap和Sencha Touch等工具可以為用戶構建一個混合應用,混合應用可以通過各自的應用程序商店下載。
appium支持以上三種類型應用(Native App、Mobile Web App和Hybrid App)的自動化測試。
appium的架構
appium基於客戶端/服務器架構。服務器執行給定順序的動作:
(1)從客戶端接收連接並啟動會話。
(2)偵聽發出的命令。
(3)執行這些命令。
(4)返回命令執行狀態。
appium工作方式
-
XCUITest
XCUITest是蘋果公司於iOS9.3版本推出的自動化框架,從iOS 10開始,它是唯一的自動化框架。
appium1.6.0使用蘋果公司的XCUTest框架,它支持iOS IO/Xcode 8。appium內部使用Facebook公司的WebDriverAgent項目支持XCUTest。
Facebook公司的WebDriverAgent項目是一個為iOS實現的WebDriver服務,用於對連接的設備或模擬器進行遠程控制。通過它可以啟動應用程序、執行命令(如點擊、滾動)、或終止應用程序。對於較舊的iOS版本(9.3以下版本),appium使用Apple的UIAutomation庫,典型用法是在所需功能中傳遞以下內容:
automationName:XCUTest
UIAutomation庫與移動設備或模擬器內運行的bootstrap.js進行通信,執行由appium客戶端收到的命令。
iOS平台工作方式
-
UIAutomator2
UIAutomator2是基於Android的自動化框架,允許用戶構建和運行UI測試。appium使用Google公司的UIAutomator2在真實設備或模擬器上執行命令。UIAutomator2是Google公司針對App設計的UI自動化測試框架。典型的用法是在所需的功能中傳遞以下內容:
automationName:uiautomator2
在appium1.6版本中,appium為UIAutomator2提供支持。appium使用appium-android-bootstrap模塊與UIAutomator2進行交互。它允許將命令發送到設備,使用Android的UIAutomator2測試框架在真實設備上執行命令。
當appium客戶端請求創建新的AndroidDriver會話時,appium客戶端會將所需的功能傳遞給appium節點服務器。首先,UIAutomator2驅動程序模塊創建會話。然后,在連接的Android設備上安裝UIAutomator2服務器apk。接着啟動Netty服務器。在Netty服務啟動后,UIAutomator2服務器在設備上偵聽請求並做出響應。
Android平台工作方式
注意:以上關於appium工作方式的介紹摘自appium essentials一書。
appium的工作過程
appium的工作過程
- appium Client
appium Client支持多種語言/框架,它針對主流的編程語言分別開發了相應的appium測試庫,我們可以選擇自己熟悉的語言或框架來編寫appium測試腳本。appium Client支持的語言/框架如表所示。
語言/框架 | Github項目地址 |
---|---|
ruby | https://github.com/appium/ruby_lib |
Python | https://github.com/appium/python-client |
Java | https://github.com/appium/java-client |
JavaScript(Node.js) | https://github.com/admc/wd |
Objective C | https://github.com/appium-boneyard/selenium-objective-c |
PHP | https://github.com/appium-boneyard/php-client |
C#(.NET) | https://github.com/appium/appium-dotnet-driver |
Robot Framework | https://github.com/serhatbolsu/robotframework-appiumlibrary |
-
appium Server
appium需要在PC上啟動一個Server,監聽客戶端自動化測試的運行,並將請求發送到對應的移動設備或模擬器中運行。
appium Server支持macOS和Windows兩大平台。我們可以在不同的平台編寫並運行appium自動化測試。需要特別說明的是,appium Server項目已經停止更新,由appium Desktop替代。 -
移動設備
移動設備用於運行appium自動化測試的環境,既可以是一台連接到PC的手機,也可以是在PC上運行的iOS模擬器或Android模擬器。