Appium基礎認識

       本文介紹了Appium相關的一些工具的概念以及彼此的關係,方便對appium有一個整體的認識。內容包括了JUnit,TestNG簡介以及Appium的基本工做原理。java


自動化工具的比較:python

Appium 主流語言 開源社區良好,跨平臺
Xamarin Test Cloud C#、ruby 開源,Xamarin Test Recorder很是好用。配套完整,和AWS Device Farm相似的真實手機雲測試。
Xamarin的目的是使用C#開發Android、IOS等移動原生應用
Eggplant SenseTalk 企業服務收費,不開源。能夠發郵件索要體驗帳號

備註:因爲須要在AWS Device Farm上進行自動化測試而其支持Appium,因此採用Appium。web


JUnit:Java測試框架,最多見於單元測試,最初針對單元代碼編程

TestNG:Java測試框架,消除JUnit的許多限制,更靈活,適用於大型項目。最初設計於高級測試。bootstrap


Selenium:瀏覽器

一、web應用程序的自動化測試工具,直接運行在瀏覽器中ruby

二、基於Client/Server架構,因此理論上支持全部語言架構


Appium:app

一、能夠看作Selenium在移動端的擴展框架

二、開源、跨平臺的UI自動化測試工具

三、支持IOS、Android、FireOS平臺上的原生、web應用和混合應用。

四、無需修改現有應用的任何信息

五、無語言限制,基於C/S架構,理論上支持全部編程語言


Appium工做原理:

真正執行自動化的工做引擎是平臺相關的自動化框架(無需修改應用的緣由)

IOS(XCode6+):UIAutomation(棄用)

IOS(XCode8+):XCUITest

Android2.3+:Google’s Instrumentation(由單獨對的Selendroid提供)

Android4.2+:Google’s UIAutomator


wKiom1nJvm_wjjM0AAAeBh2cAOg275.png

工做原理示意圖


appium-client:

一、能夠理解爲咱們藉助appium-client庫寫的測試代碼

二、appium-client如java-client、python-client等是對Selenium Client擴展的庫,方便使用

三、整個流程:創建Session,執行測試,銷燬Session


appium-server:

一、解析client發來的命令請求

二、將請求發送到device上

三、device上的中間件如:Android上的bootstrap將請求轉換成device執行完畢返回server,server再返回給client


device:

一、Android Emulator

二、Android Phone

三、IOS Simulator

四、IOS Phone


如何寫測試代碼:

一、根據你選擇的編程語言,選擇官方提供的對應的client(API),如java-client。

二、選擇合適的測試框架如JUnit,TestNG等編寫測試代碼

三、搭建Appium Server,使用appium-doctor驗證環境可用。

四、鏈接物理、模擬設備,執行代碼


Appium和JUnit、TestNG的關係(框架是啥!)

一、Appium能夠理解爲一套工具,包括一個運行在服務端的Appium-Server,以及一套API用於與Server通訊。Client經過API向Server發送請求,Server將請求發送到Device,Device上的中間件如Android上的bootstrap或IOS上的WebDriverAgent,會把請求轉化爲平臺相關的自動化操做在Device上執行。

二、不必定非要JUnit或TestNG,若是選擇python也能夠用unittest等。甚至不使用任何框架,在Java中直接在main函數中完成Session的建立,測試代碼的執行,Session的銷燬的整個流程。但是這就丟失了使用測試框架的好處。

三、自動化測試優先選擇TestNG,網上廣泛說:JUnit是單元測試的首選,而TestNG相對於JUnit更適合其餘類型的測試。個人緣由是:AWS Device Farm同時支持JUnit和TestNG,但老是先把JUnit轉換成TestNG代碼再執行的。另外AWS官方示例代碼使用的就是TestNG。

相關文章
相關標籤/搜索