從0到1搭建移動App功能自動化測試平臺(0):背景介紹和平臺規劃

本文做者: 伯樂在線 - 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

目標肯定後,即是分階段進行實現,須要開發的模塊包括:編程

  • 自動化測試平臺(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)自動化測試的調度和執行,是整個自動化測試平臺的核心。app

所以,在搭建自動化測試平臺以前,首先須要選擇一個合適的自動化測試框架。

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

  • 同時支持iOS、Android、H5,且儘可能能保持接口統一,減小開發維護成本;
  • 編程語言支持Python/Ruby;
  • 用戶量大,文檔豐富。

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

Appium簡介

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

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

  • 採用Appium時,無需對被測應用作任何修改,也無需嵌入任何東西;
  • 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中進行安裝:

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

若檢測結果所有經過,則說明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,安裝方式以下:

若是選擇Python語言,那麼須要安裝的Library就是Appium-Python-Client,安裝方式以下:

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

To be continued …

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

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

相關文章
相關標籤/搜索