本文介紹了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
工做原理示意圖
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。