求 Appium iOS和 Android 入門教程?


TesterHome(http://testerhome.com)是國內首家交流移動測試的社區, 大家看到的github上的appium中文翻譯也是我們做的。testerhome是個技術驅動型的論壇,我們鼓勵所有人懂開發懂測試。

testerhome致力於打造一個優秀的技術交流社區,以移動測試為主。我們會定期舉辦移動測試公開課。目前已經成功舉辦了第一屆的公開課交流。

除了翻譯工作, 我們還是appium的代碼貢獻者, 我們也是製作了很多的教程和視頻輔助大家理解和應用這套框架。可以參考 TesterHome | 論壇資源整理貼

testerhome的盈利是多種渠道的, 我們提供商業培訓,並在打造移動測試雲相關的產品。

也歡迎大家支持我們,一起交流進步。


最近針對移動APP的自動化測試寫了一個系列教程,《從0到1搭建移動App功能自動化測試平台》,應該會對初學者有幫助。

如下是粘貼過來的第一篇文章,更多內容可以在我的博客中看到:DebugTalk

也非常歡迎關注底部的公眾號(DebugTalk),專註於軟體測試領域和測試開發技術,更新頻率不是很勤,保持在一周1~2篇的樣子,但全部都是用心去寫的。

公眾號二維碼:http://debugtalk.com/assets/images/wechat_qrcode.png

-------------------------------------------------------------

背景

最近新加入DJI的某項目組(以下均已M指代),需要從零開始搭建功能自動化測試平台。

簡單地說,M是一個典型的移動互聯網產品,客戶端包括iOS和Android,並在app中通過WebView嵌入了H5,後端基於Ruby on Rails實現。

當前階段,M項目除了Rails Server端採用Jenkins+RSpec實現了部分的持續集成功能外,客戶端部分的部署和測試工作都還是完全依賴於手工操作。

基於當前項目的開發模式,我對整個M項目實現持續集成自動化測試的架構流程進行了規劃,初步計劃的架構圖如下圖所示。最終的目標是希望能實現:不管是Rails Server,還是App(iOS/Android),以及H5,當任意部分存在代碼提交時,系統能自動拉取最新代碼進行部署並執行自動化回歸測試,及時地將執行情況反饋給開發人員。

目標確定後,便是分階段進行實現,需要開發的模塊包括:

  • 自動化測試平台(Automated Test Platform):滿足iOS/Android/H5的自動化功能測試,包括模擬器和真機的測試;

  • 測試管理平台(Test Management Platform):實現自動化測試用例管理、手動下發測試任務、測試結果報表展現、Dashboard等功能;

  • 打包平台(Pack System):實現iOS/Android的自動化構建;

  • 服務端自動化測試(Rails):將服務端Rails的自動化測試接入測試管理平台;

  • 持續集成流程打通:對Jenkins進行二次開發,與測試管理平台打通,實現全流程的持續集成自動化測試。

而本系列教程,《從0到1搭建移動App功能自動化測試平台》,便是對整個實踐過程的一個記錄。

需要說明的是,之前我個人的工作經歷主要在服務端性能測試、Android客戶端性能測試(測試開發)方向,對於客戶端的自動化測試基本上沒有經驗積累,特別是iOS系統的測試,以前更是完全沒有接觸過。因此本系列教程只能算是個人在探索路上的學習總結和記錄,可能會存在一些錯誤的觀點,還請前輩們多多指教。

自動化測試框架的選擇

在願景圖中,綠色方框(Automated Test Platform)負責移動應用客戶端(iOS/Android/H5)自動化測試的調度和執行,是整個自動化測試平台的核心。

因此,在搭建自動化測試平台之前,首先需要選擇一個合適的自動化測試框架。

對於移動應用的自動化測試框架,當前市面上已經有很多成熟的開源項目。針對當前項目的實際情況,我主要參考如下選擇標準:

  • 同時支持iOS、Android、H5,且盡量能保持介面統一,減少開發維護成本;

  • 編程語言支持Python/Ruby;

  • 用戶量大,文檔豐富。

經過篩選,Appium無疑是最佳的選擇。

Appium簡介

對於Appium的詳細介紹,大家可參考Appium官方文檔,我就不再重複引用。

不過對於Appium,仍然有幾點很贊的理念值得強調。

  • 採用Appium時,無需對被測應用做任何修改,也無需嵌入任何東西(SDK);

  • Appium對iOS和Android的原生自動化測試框架進行了封裝,並提供了統一的API(WebDriver API),減少了自動化測試代碼的維護工作量;

  • Appium採用Client-Server的架構設計,並採用標準的HTTP通信協議;Server端負責與iOS/Android原生測試框架交互,無需測試人員關注細節實現;Client端基本上可以採用任意主流編程語言編寫測試用例,減少了學習成本。

環境準備(iOS)

在Appium中測試iOS時,依賴於Apple開發環境,因此,在運行Appium之前需要先確保如下環境安裝正確:

  • Mac OS X &>= 10.7

  • XCode &>= 4.6.3

  • Apple Developer Tools (iPhone simulator SDK, command line tools)

如上幾個環境安裝比較簡單,直接在Apple Store中安裝即可。

在安裝Appium之前,為了確保Appium的相關依賴已經準備就緒,可以使用appium-doctor來進行驗證。

appium-doctor是一個用於驗證appium安裝環境的工具,可以診斷出Node/iOS/Android環境配置方面的常見問題。

appium-doctor採用node.js編寫,採用npm即可在Terminal中進行安裝:

$ npm install appium-doctor -g

安裝完畢後,執行appium-doctor命令即可對Appium的環境依賴情況進行檢測;指定--ios時只針對iOS環境配置進行檢測,指定--android參數時只針對Android環境配置進行檢測,若不指定則同時對iOS和Android環境進行檢測。

$ appium-doctor --ios

info AppiumDoctor ### Diagnostic starting ###

info AppiumDoctor ? Xcode is installed at: /Applications/Xcode.app/Contents/Developer

info AppiumDoctor ? Xcode Command Line Tools are installed.

info AppiumDoctor ? DevToolsSecurity is enabled.

info AppiumDoctor ? The Authorization DB is set up properly.

info AppiumDoctor ? The Node.js binary was found at: /usr/local/bin/node

info AppiumDoctor ? HOME is set to: /Users/Leo

info AppiumDoctor ### Diagnostic completed, no fix needed. ###

info AppiumDoctor

info AppiumDoctor Everything looks good, bye!

info AppiumDoctor

若檢測結果全部通過,則說明Appium的相關依賴已經準備就緒,接下來可以繼續安裝Appium。

安裝Appium

根據前面的介紹,Appium採用Client-Server的架構設計,因此安裝Appium時需要分別安裝Server部分和Client部分。

通常情況下,我們說的Appium都是指代的Server部分。Appium的安裝有多種方式:可以通過源碼編譯安裝,也可以在Terminal中通過npm命令安裝,另一種是直接下載appium.dmg後安裝應用程序。

在這裡推薦運行Appium app的方式,除了GUI界面操作更直觀以外,更重要的一個原因是,相比於命令行運行方式,Appium app多了一個Inspector模塊,可以調用模擬器運行被測應用程序,並且可以很方便地在預覽頁面中查看UI元素的層級結構和詳細控制項屬性,極大地提高編寫測試腳本的效率。

至於Client部分,其實我們原本可以不安裝任何東西,只需要任意選擇一門開發語言,然後直接基於WebDriver的C/S協議(JSON Wire Protocol)即可編寫自動化測試代碼。但是這樣做的話工作量會比較大,因為要去處理一些跟協議相關的工作。所幸Appium項目已經針對眾多主流的編程語言,將底層協議處理相關的工作封裝為Library,通過調用這些Library,可以極大地簡化我們編寫測試用例的工作量。

而說的需要安裝的Client部分,其實也就是安裝這些Library。選定編寫測試用例的語言後,我們就可以針對性地進行安裝。

例如,如果選擇Ruby語言,那麼需要安裝的Library就是appium_lib,安裝方式如下:

$ gem install appium_lib

如果選擇Python語言,那麼需要安裝的Library就是Appium-Python-Client,安裝方式如下:

$ pip install Appium-Python-Client

對於其它編程語言,請自行參考官方文檔。

To be continued ...

iOS的自動化測試環境已基本準備就緒了,接下來我們想做的第一件事,就是在模擬器中運行iOS應用。

在下一篇文章中,我們將從clone項目源碼為起點,編譯生成iOS app,在Appium中調用模擬器中運行iOS app,並分享實踐過程中遇到的一些坑。


發現他家doc下面有個中文教程,希望有所幫助

https://github.com/appium/appium/tree/master/docs/cn


為啥不去 TesterHome ,appium 國內實踐者基地


可惜是收費的:

https://study.163.com/course/introduction.htm?utm_campaign=shareutm_medium=androidSharecourseId=1004606011utm_content=courseIntroutm_source=qqutm_u=1032481902


入門的話可以看看一個碼農自己錄製的視頻,一是完全免費,二是比較新。

android入門視頻教程


支持!關注下


關注下,呵呵。


二維碼掛掉了,能重新放一下或者說一下公眾號id嗎?謝謝


TesterHome | Appium 自動化測試演示 換個真不錯


推薦閱讀:

手機搜狗輸入法為什麼九宮格模式下第一個按鈕是「1"而不是分隔符?
ios 有哪些生存建造類的遊戲?
ios8的第三方輸入法有哪些風險,是否開啟「允許完全訪問」又哪些區別?
為什麼蘋果還要使用 HTML5 開發 iOS 上的新版 App Store?
為什麼 iPhone 4 升級到 iOS 6.1.3 比較卡,而同時代的一些 Android 手機升級到 Android 4.0 + 卻更加流暢?

TAG:iOS | 測試 | 自動化測試 | android自動化測試 |