標籤:
poptest是國內唯一一家培養測試開發工程師的培訓機構,以學員能勝任自動化測試,效能測試,測試載入器開發等工作為目標。如果對課程感興趣,請大家諮詢qq:908821478。Appium介紹
Appium是一個移動端的自動化架構,可用於測試原生應用,移動網頁應用和混合型應用,且是跨平台的。可用於IOS和Android以及firefox的作業系統。原生的應用是指用android或ios的sdk編寫的應用,移動網頁應用是指網頁應用,類似於ios中safari應用或者Chrome應用或者類瀏覽器的應用。混合應用是指一種包裹webview的應用,原生應用於網頁內容互動性的應用。
重要的是Appium是跨平台的,何為跨平台,意思就是可以針對不同的平台用一套api來編寫測試案例。
Appium的哲學
Appium遵循下面幾個原則(其實也是appium的特點):
1.使用自動化來測試一個app,但是不需要重新編譯它
2.寫自動化case,不需要學習特定的語言
3.一個自動化架構不需要重複造輪子
4.一個自動化架構需要開源,在精神和實踐上實現開源
Appium的設計
為了遵循上面的原則,appium的解決方案分別如下:
第一條:採用底層驅動商提供的自動化架構。
IOS:蘋果的UIAutomation
Android 4.2+:Google的 UiAutomator
Android 2.3+:Google的Instrumentation(已被selendroid取
第二條:採用底層驅動商提供統一API,就是WebDriver API。
WebDriver(也稱Selenium WebDriver)其實是一個C/S架構的協議,叫做JSON Wire Protocol。通過這個協議,用任何語言寫成的用戶端都可以發送HTTP請求給伺服器。這就意味著你可以自由選擇你想要使用的測試架構和執行器,也可以將任何包含HTTP用戶端的庫檔案加入到你的代碼中。換句話說,Appium的WebDriver不是一個技術上的測試架構,而是一個自動化庫。
第三條:因為WebDriver是一個非常成熟的網頁協議且已經正在起草W3C的標準。我們為什麼還要創造其他東西呢?相反,我們在WebDriver的基礎上,擴充了一些適合移動端自動化協議的API。
第四條:你之所以能讀到這篇文章,就是因為我們開源啦。
Appium概念C/S 架構
Appium的核心是一個遵守REST設計風格的網頁伺服器,它接受用戶端的串連,接收用戶端的命令,在手機裝置上執行命令,然後通過HTTP的響應收集命令執行的結果。這種架構給我們提供了很好的開放特性:只要某種語言有http 用戶端的api,我們就可以通過這個語言寫我們的測試代碼,當然了我們為了方便大家使用,提供了如下的用戶端庫供使用:
我們還可以將伺服器放到遠端,比如雲裡,這樣我們可以藉助雲端服務來接受命令以及解析命令。
Session
自動化的過程通常在session上下文中執行。用戶端初始化一個session會話,雖然不同的語言初始化的方式不同,但是他們都要發送POST/session 請求到伺服器端,這些請求裡面都會帶有一個對象:desired capabilities ,這個時候伺服器端會啟動自動化session然後返回一個session ID,以後的命令都會用這個seesion ID去匹配。
Desired Capabilities
desired capabilities 這個對象其實是一個key-value的集合,裡麵包含了各種各樣的資訊,發送到伺服器端後,伺服器解析這些資訊就知道了用戶端對哪種session感興趣,然後就會啟動相應的session。這裡面的資訊會影響著伺服器端啟動session的類型。比如你platformName的值為ios,就是告訴伺服器啟動一個ios的session,而不是android seesion。如果safariAllowPopups的值為true,這是告訴safari類的自動化session,可以使用js開啟新視窗。具體資訊查看capabilities doc 詳細瞭解。
Appium Server
Appium server使用node.js寫的http伺服器,遵守REST風格
Appium Clients
用戶端的概念不是我們傳統意義上的用戶端,這裡用戶端更好的理解是一個擴充WebDriver 協議的庫,你在用自己喜歡的語言寫case的時候,將該語言擴充WebDrvier的庫添加到你的環境中,你就可以理解這是個用戶端。具體的庫可以參見下面的內容:
| 語言 |
庫地址 |
| 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/selenium-objective-c |
| PHP |
https://github.com/appium/php-client |
| C# (.NET) |
https://github.com/appium/appium-dotnet-driver |
| RobotFramework |
https://github.com/jollychang/robotframework-appiumlibrary |
Appium.app,Appium.exe
在不同的作業系統下,有不同的GUI程式
| 系統 |
GUI |
git地址 |
| windows |
Appium.exe |
https://github.com/appium/appium-dot-exe |
| OS X |
Appium.app |
https://github.com/appium/appium-dot-app |
手機自動化培訓:Appium介紹