Appium官網Introduction

來源:互聯網
上載者:User

標籤:des   android   style   http   ar   io   os   使用   sp   

英文官網:http://appium.io/introduction.html?lang=zh

Appium 簡介

Appium是一個開源的自動化測試載入器,其支援iOS和安卓平台上的原生的,基於行動瀏覽器的,混合的應用。

 

  • 原生應用:僅使用iOS和安卓標準SDK編寫的應用
  • 基於行動瀏覽器的應用:用移動平台的瀏覽器訪問的應用(Appium支援iOS上的Safri和安卓上的Chrom或內嵌的“瀏覽器”應用)
  • 混合應用:把基於一個webview實現的所有功能封裝成一個應用的應用,webview是一個可以和網頁各種元素互動的原生控制項(譯者註:因為所有的移動平台都會有瀏覽器,所以基於瀏覽器封裝起來的應用就可以輕易做到跨平台了)。Phonegap這些項目可以很方便的把那些基於web技術實現的功能打封裝成一個混合應用。

 

重要的是,Appium是跨平台的:它允許你採用同一套API在不同的平台(iOS,Android)上編寫測試代碼。這就讓測試套件在iOS和Android平台上實現代碼複用成為可能。

至於有關Appium跨平台支援和測試自動化模組化的具體意義,請參考 platform support doc.

Appium 理念 

Appium是基於以下的四個理念設計來滿足移動平台測試自動化的要求的:

  1. 您不應該因為需要自動化測試您的應用而不得不以任何形式去重新編譯或者修改你的app
  2. 您不應該把自己固定在一門特定的語言和一個特定的架構上去實現和運行你的測試
  3. 當說到測試自動化APIs的時候,一個Mobile Testing架構不應該做“重新發明輪子”的事情,
  4. 一個Mobile Testing自動化架構應該是開源的,無論是在精神上,實際上,還是名義上!
Appium 設計

那麼Appium項目的架構是如何滿足這些理念的要求的呢?為了實現第#1個要求,我們在背後使用的是移動平台供應商(譯者注:iOS的UIAutomation和Android的Instrumentation及UIAutomator)提供的標準自動化測試架構。這樣一來,我們就不需要往你的app裡面編譯進去任何的Appium相關的或第三方代碼或架構。這就意味著”你測試的是你將要發布的那一個應用“。我們使用的移動平台供應商提供的架構如下:

  • iOS: 蘋果公司的 UIAutomation
  • Android 4.2+: Google公司的 UiAutomator
  • Android 2.3+: Google公司的 Instrumentation. (Instrumentation 的支援是通過綁定另外一個獨立的Selendroid項目來實現的)

為了實現第#2個要求,我們的做法是把不同的移動平台供應商的自動化測試架構進行一次更高層次的封裝,做成一套統一的API暴露出來,也就是我們要說的WebDriver API了。WebDriver(也叫做”Selenium WebDriver“)指定使用了一套用戶端-伺服器端協議(也就是JSON Wire Protocol),基於這一套協議,用戶端無論是用什麼語言編寫的都能夠通過HTTP請求恰當的發送到伺服器。事實上現在已經存在有使用不同流行語言編寫的用戶端了。這也就意味著您可以隨便使用任何你喜歡的測試執行過程管理平台和測試架構,因為你使用到的Appium用戶端的庫僅僅是一個HTTP用戶端而已,你可以用任何你喜歡的方式把它嵌入到你的代碼裡面去。換一個說法就是,Appium&WebDriver用戶端實際上並不是真正的”測試架構“,而是"自動化測試庫”,你可以藉助它們按照你自己喜歡的方式來搭建管理你的測試環境。

我們使用同樣的方法實現了第#3個要求:鑒於WebDriver事實上已經是網路瀏覽器自動化測試的標準,並且已經立為W3C的工作草案,那麼我們有什麼必要針對行動裝置再重建立立一套標準呢?沒有必要!我們只需要擴充相應的WebDriver API來方便移動平台測試自動化的使用就行了。

至於第#4點就不言而喻了--你現在在讀這篇文章這些內容就是因為Appium是開源的。

Appium 概念

用戶端/伺服器端架構
Appium的核心是一個暴露了REST API的網路伺服器。它接收用戶端過來的串連,監聽(用戶端過來的)命令,在行動裝置上運行命令,然後把代表命令運行結果的HTTP響應包發送回用戶端。我們使用用戶端/伺服器段的架構事實上為我們開啟了很多可能性:我們可以在任何支援http 用戶端API的語言上面實現我們的測試代碼,當然使用我們提供的”Apppiu用戶端庫“會更加方便高效。我們可以把伺服器端放在跟我們的測試回合機器完全不一樣機器上。我們可以低頭安心編寫測試案例然後依賴遠端雲端服務平台如“Sauce Labs”來接收和翻譯我們的測試命令。

會話
自動化往往都是在一個擁有會話的上下文中進行的。用戶端往伺服器端發起一次會話的方式根據具體不同的庫而會有所不同,但相同的是它們最終都會發送一個包含所謂的“desired capabilities"JSON對象的Post/session的請求到伺服器端。這樣伺服器端就會開啟一個自動化會話並把會話ID發送回用戶端以便往後的持續的命令傳遞。

Desired Capabilities(不好翻譯,所以當成專用術語不翻譯算了)
Desired Capabilities是由用戶端發送給Appium伺服器端的用來告訴伺服器去啟動哪種我們想要的會話的一套索引值對集合。當中也有一些索引值對是用來在自動化的過程中修改伺服器端的行為方式的。比如,我們可以把鍵為platformName的capability的值設定成iOS來告訴伺服器我們想要開啟的是一個iOS的會話,而非Anddroid的會話。或者我們可以把鍵為safariAllowPopups 的capability的值設定成true來確保在Safari自動化會話的過程中,我們可以使用JavaScript來彈出一個新視窗。要查看Appium支援的完整的capabilities列表,請查看capabilities doc。

Appium 伺服器
Appium是一個由Node.js編寫的伺服器。可以通過源碼或NPM進行編譯和安裝。

Appium 用戶端
存在很多對WebDriver協議進行擴充的Appium用戶端庫(針對以下語言的庫:Java,Python,PHP,JavaScript,以及C#).當使用Appium的時候,相對常規的(譯者註:沒有擴充的)WebDriver庫,我相信你更會選擇使用這些擴充後的庫。你可以在這裡查看所有的庫。

Appium.app, Appium.exe
這些Appium伺服器的GUI封裝版是可以下載的。事實上這些在配置appium伺服器可運行環境時已經和其他東西一起打包安裝了的,所以你並不需要擔心要用Node再去下載安裝。當中有一個Inspector也會一起安裝,你可以用它來查看你的app的結構,這樣你就可以在它的協助下很方便的編寫測試指令碼了。

開始

恭喜!你現在已經裝備好足夠的知識來開始使用Appium了,何不去getting started doc擷取更加詳細的需求描述和建議呢?

Appium官網Introduction

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.