最近有朋友向我請教iOS自動化測試框架選型,恰好前段時間作講座時發現了macaca,遂試用。因此,下面的內容會只圍繞Macaca的iOS部分。html
阿里的移動端自動測試框架,同時支持android,iOS。而以前的阿里的athrun彷佛已經放棄維護了。node
官網:https://macacajs.github.io/macaca/android
Macaca基於Node.js開發,測試案例編寫語言暫時也只支持Node.js。ios
坦白說,這種外部驅動instruments的server-client自動化測試框架,在iOS上實現方式很是受限的,因此其底層的實現方式是一致的。git
而在應用級上的封裝,兩者均採用了Node.js做爲開發語言,接口也基於web-driver實現,因此Macaca和Appium類似程度很是高。github
如何看待Macaca和Appium區別?web
如下是Macaca做者的設計思想:npm
appium 是個優秀的工具。但沒法知足更輕、更快、更穩、更易集成、更貼合業務的高要求。
能夠認爲Macaca是一個輕量級的Appium。固然,這就意味着不少Appium的功能會沒有了。但這也造就了一個輕量級的,更易集成的框架,Why not?json
其實安裝是很簡單的,可是仍是不少人沒法把環境搭建起來。這裏再詳細說下。bootstrap
Xcode(及Xcode Command Line Tools)
Node.js
安裝後,確認是否安裝成功
chentekiMacBook-Pro:~ chenximing$ node -v v4.4.3 chentekiMacBook-Pro:~ chenximing$ npm -v 2.15.1
brew
至此,若是對以上3者不瞭解,先放棄搭建Macaca,先把以上東西使用先搞懂....
Macaca安裝
npm i -g macaca-cli
注意: 這裏新是macaca-cli,若是看舊版教程是:macaca-client(但願以後不要變了...)。
檢查是否安裝好了:
注意:check-list你未必都能pass,像個人Android部分,platforms directory檢查失敗。so what,我只試用iOS部分,其餘能夠不鳥它。只要保證:
node.js checklist iOS checklist Installed driver list
以上3者全pass便可。若是按照我剛纔的步驟,除iOS checklist的ios-webkit-debug-proxy外,其餘不該該會有failed。
安裝ios-webkit-debug-proxy
brew install ios-webkit-debug-proxy
這裏必定要用brew安裝!以前有些舊文檔會略坑新手,手工編譯方式....這須要手工安裝N多依賴:autoconf,libtool,xml2...不是熟手別搞,玩死你...
ios-webkit-debug-proxy是幹嗎的呢?從它安裝的依賴庫能夠看出:
libimobiledevice/ usbmuxd/
iTools就是使用這玩意兒和iPhone通信的,libimobiledevice是破解iTunes和iPhone的通信後實現的lib。Xcode5以前是fruitstrap,fruitstrap後來放棄維護,Xcode5後使用libimobiledevice。
至此,安裝所有完成,很簡單是否是:>
安裝完了框架,要跑一跑啊,不然裝來幹嗎呢?那得先回答如下問題:
而後第1,2個問題怎麼解決?
做者已經幫你解決了。他已經爲你準備第一個測試案例及其對應的app。
git clone https://github.com/macacajs/macaca-test-sample.git --depth=1
若是你不知道什麼是git或者沒裝,能夠去https://github.com/macacajs/macaca-test-sample下載。
下載後,進入macaca-test-sample目錄,執行:
npm i
./ ├── HISTORY.md ├── LICENSE ├── Makefile ├── README.md ├── app ├── circle.yml ├── macaca-test ├── node_modules └── package.json
app:
macaca-test:
./ ├── macaca-desktop-sample.test.js # 桌面瀏覽器測試案例...做者的想法有點多啊-_-! ├── macaca-mobile-browser-sample.test.js # 移動端瀏覽器測試案例 ├── macaca-mobile-sample.test.js # 移動端App測試案例 └── mocha.opts
若是單純要看iOS端App測試效果的話,能夠把macaca-mobile-sample.test.js以外的*.js都幹掉。
macaca run --verbose