求 Appium iOS和 Android 入門教程?
TesterHome(http://testerhome.com)是國內首家交流移動測試的社區, 大家看到的github上的appium中文翻譯也是我們做的。testerhome是個技術驅動型的論壇,我們鼓勵所有人懂開發懂測試。
testerhome致力於打造一個優秀的技術交流社區,以移動測試為主。我們會定期舉辦移動測試公開課。目前已經成功舉辦了第一屆的公開課交流。除了翻譯工作, 我們還是appium的代碼貢獻者, 我們也是製作了很多的教程和視頻輔助大家理解和應用這套框架。可以參考 TesterHome | 論壇資源整理貼testerhome的盈利是多種渠道的, 我們提供商業培訓,並在打造移動測試雲相關的產品。也歡迎大家支持我們,一起交流進步。最近針對移動APP的自動化測試寫了一個系列教程,《從0到1搭建移動App功能自動化測試平台》,應該會對初學者有幫助。
背景
最近新加入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自動化測試 |