本文做者: 伯樂在線 - debugtalk 。未經做者許可,禁止轉載!
歡迎加入伯樂在線 專欄做者。node
轉載地址:http://blog.jobbole.com/101221/android
最近新加入DJI的某項目組(如下均已M指代),須要從零開始搭建功能自動化測試平臺。ios
簡單地說,M是一個典型的移動互聯網產品,客戶端包括iOS和Android,並在app中經過WebView嵌入了H5,後端基於Ruby on Rails實現。git
當前階段,M項目除了Rails Server端採用Jenkins+RSpec實現了部分的持續集成功能外,客戶端部分的部署和測試工做都仍是徹底依賴於手工操做。github
基於當前項目的開發模式,我對整個M項目實現持續集成自動化測試的架構流程進行了規劃,初步計劃的架構圖以下圖所示。最終的目標是但願能實現:不論是Rails Server,仍是App(iOS/Android),以及H5,當任意部分存在代碼提交時,系統能自動拉取最新代碼進行部署並執行自動化迴歸測試,及時地將執行狀況反饋給開發人員。npm
目標肯定後,即是分階段進行實現,須要開發的模塊包括:編程
而本系列教程,《從0到1搭建移動App功能自動化測試平臺》,即是對整個實踐過程的一個記錄。後端
須要說明的是,以前我我的的工做經歷主要在服務端性能測試、Android客戶端性能測試(測試開發)方向,對於客戶端的自動化測試基本上沒有經驗積累,特別是iOS系統的測試,之前更是徹底沒有接觸過。所以本系列教程只能算是我的在探索路上的學習總結和記錄,可能會存在一些錯誤的觀點,還請前輩們多多指教。架構
在願景圖中,綠色方框(Automated Test Platform)負責移動應用客戶端(iOS/Android/H5)自動化測試的調度和執行,是整個自動化測試平臺的核心。app
所以,在搭建自動化測試平臺以前,首先須要選擇一個合適的自動化測試框架。
對於移動應用的自動化測試框架,當前市面上已經有不少成熟的開源項目。針對當前項目的實際狀況,我主要參考以下選擇標準:
通過篩選,Appium無疑是最佳的選擇。
對於Appium的詳細介紹,你們可參考Appium官方文檔,我就再也不重複引用。
不過對於Appium,仍然有幾點很讚的理念值得強調。
在Appium中測試iOS時,依賴於Apple開發環境,所以,在運行Appium以前須要先確保以下環境安裝正確。
如上幾個環境安裝比較簡單,直接在Apple Store中安裝便可。
在安裝Appium以前,爲了確保Appium的相關依賴已經準備就緒,可使用appium-doctor
來進行驗證。
appium-doctor
是一個用於驗證appium安裝環境的工具,能夠診斷出Node/iOS/Android
環境配置方面的常見問題。
appium-doctor
採用node.js
編寫,採用npm
便可在Terminal中進行安裝:
1
|
$ npm install appium-doctor -g
|
安裝完畢後,執行appium-doctor
命令便可對Appium
的環境依賴狀況進行檢測;指定--ios
時只針對iOS環境配置進行檢測,指定--android
參數時只針對Android環境配置進行檢測,若不指定則同時對iOS和Android環境進行檢測。
1
2
3
4
5
6
7
8
9
10
11
12
|
$ 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採用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
,安裝方式以下:
1
|
$ gem install appium_lib
|
若是選擇Python語言,那麼須要安裝的Library就是Appium-Python-Client
,安裝方式以下:
1
|
$ pip install Appium-Python-Client
|
對於其它編程語言,請自行參考官方文檔。
iOS的自動化測試環境已基本準備就緒了,接下來咱們想作的第一件事,就是在模擬器中運行iOS應用。
在下一篇文章中,咱們將從clone項目源碼爲起點,編譯生成iOS app,在Appium中調用模擬器中運行iOS app,並分享實踐過程當中遇到的一些坑。