Appium 簡介

1.1 Appium 概述

Appium 是一個開源、跨平臺(測試程序跨平臺、支持多平臺上的app測試)、多語言支持的(開發語言)移動應用自動化工具。

1.1.1 測試對象

Appium 的測試對象包括:原生 app,混合 app,移動 web app(就是用手機瀏覽器打開的網址);

所謂原生 app,就是專門針對某一類移動設備而生的,所有界面和代碼都是專門為平臺設計的。比如說我們手機上自帶的計算器應用,它的代碼和界面,就都是用安卓開發語言 java 使用安卓開發庫開發出來的。而混合 app 主要是指它的一部分是原生界面和代碼,而另一部分是內嵌 web app。開在基本上打開網頁瀏覽的 app 都是混合 app,比如微信、支付寶、開發者頭條等。微信的消息界面是原生代碼實現的。而打開某個朋友圈,或者打開別人發來的鏈接部分是 web 部分,內嵌了一個瀏覽器內核,由瀏覽器內核實現的。現在混合型 app 很多,稍微功能全一些的都需要具備網頁瀏覽器的功能。而 web app 則完全是手機瀏覽器里打開的一個網址,大家可能會問,網址怎么是一個 APP

App 的概念其實非常廣泛,現在說到 App,大家認為是手機 App。其實這樣理解很狹義,App 就是應用的意思,所有的應用程序都是 App ,這里面當然也包括 web 網頁應用。Web App 只能運行在瀏覽器里,靠瀏覽器解釋執行。它其實就是一個觸屏版的網站。

1.1.2 測試對象 App 運行平臺

Appium 的測試對象運行平臺包括:

  • iOS (就是蘋果手機、平板、甚至 iWatch 等移動設備上運行的 app
  • Android (就是安卓手機、平板、等移動設備上運行的 app
  • Windows (就是 Windows 手機、平板燈移動設備上運行的 app,但是這種平臺使用人數目前太少,少到基本可以忽略不計了。)
  • FirefoxOS (更少,更加可以忽略不計了)

1.1.3 測試對象 App 運行環境:

Appium 的測試對象運行環境包括:

  • 真實設備
  • 模擬器
    真實設備大家都知道,就是蘋果安卓的手機、平板等移動設備。而模擬器則是通過在 PC 或者 Mac 電腦上的軟件模擬的,蘋果安卓的手機、蘋果等移動設備。主要是方便我們測試用的。

1.1.4 測試程序語言:

appnium 支持多種程序語言開發測試程序,基本上 Selenium 支持開發的語言,appium 都支持,比如:pyhton、java、Ruby、js、php、C# 等。

1.1.5 測試程序運行平臺

appnium 支持測試程序運行在多種平臺上,包括:Windows、Linux、Mac OS等。但是要注意的是,如果測試的是 iOS 應用,測試程序本身是可以運行在所有平臺的,但是有 appium server 必須要運行在蘋果的機器上,比如筆記本 MacBook,或者臺式機 iMac

appium server 本身是 js 開發的,也是跨平臺的。但是對蘋果設備的自動化,appium 依賴蘋果的自動化框架,也只能運行在蘋果機器上。

1.1.6 自動化原理

我們先來看一下 appium 自動化的架構圖:

image.png

這幅圖,包含了3個主體部分。

Test script:
這是我們的測試程序,是測試邏輯的實現部分。就像以前我們的 selenium 自動化腳本。而且和 selenium 一樣,可以使用多種語言,Appium 客戶端也支持多種語言。一般運行在 pc、laptop上,或者蘋果筆記本,臺式機。

Appium Server:
這是一個 JavaScript 代碼實現的程序。是運行在 Node.js 里面的。Node.js 就是 js 程序的一個解釋器,就像 Python 解釋器和 python 程序的關系一樣。可能有人會困惑,js不是運行在瀏覽器里面的嗎?其實 js 是通用的語言,瀏覽器里面有 js 的解釋器,同樣可以將解釋器單獨拿出來作為一個程序運行 js 代碼,運行的 js 代碼也可以不僅僅是和 web 相關的,可以是任何目的的代碼,就像 python,java 一樣。

被測試 app:
運行在真實設備或者模擬器中。這個測試系統運行起來交互關系是這樣的:測試程序(Test scrip),告訴 Appium Server 要做什么操作。比如要去點擊界面的一個元素。怎么告訴 Appium Server ?它們之間有 http 的連接,通過 http 請求發送命令給 Appium ServerAppium Server 接收到測試程序的命令后,再發出命令給設備上運行的控制程序(這程序由Appium Server注入到設備里面運行),控制程序調用相應自動化庫里面的方法去執行界面的控制。

  • Android 底層自動化工具
    我們看一下安卓的底層自動化工具。版本 2.3 - 4.1:使用的是 Selendriod 工具(這些系統已經很少了,可以忽略了)

4.2+:使用的是 UiAutomator,(目前 4.2+ 版本的安卓占了 90% 以上的市場份額,所以我們后面講的都是 4.2+ 安卓版本)。

image.png

當我們執行安卓自動化應用的時候

  • IOS 底層自動化工具
    IOS 9.3 版本之前,蘋果使用自動化技術叫 UIAutomation
    iOS 9.3+ 以后蘋果推出了 XCUITest 測試技術。
    iOS 10 蘋果完全去掉了以前的 UIAutomation 的技術支持。所以現在,我們要進行蘋果 app 的自動化,只能使用 XUCITest
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • Swift1> Swift和OC的區別1.1> Swift沒有地址/指針的概念1.2> 泛型1.3> 類型嚴謹 對...
    cosWriter閱讀 11,136評論 1 32
  • 1)解釋什么是Appium?Appium是一個免費分發的開源移動應用UI測試框架。 2)列出Appium的可以完成...
    CC先生之簡書閱讀 21,541評論 0 22
  • 1.什么是Appium? Appium 是一個開源、跨平臺的自動化測試工具,用于測試原生和輕量移動應用,支持 iO...
    六六_fiona閱讀 1,714評論 0 5
  • 藍球范圍: 01 04 06 07 08 09 10 14 16 01 04 06 07 09 10 14 16 ...
    99b48d6a94c7閱讀 188評論 0 0
  • 來到成都坐地鐵到華西壩,很快就找到了撒哈拉。洗了澡,洗去風塵。本來準備去小酒館跨年的,但是最終決定和大部隊一起去吃...
    南方姑娘__閱讀 183評論 0 0