Macaca-iOS入門那些事
一. 前言
最近有朋友向我請教iOS自動化測試框架選型,剛好前段時間做講座時發現了macaca,遂試用。所以,下面的內容會只圍繞Macaca的iOS部分。
二. Macaca是什么
阿里的移動端自動測試框架,同時支持android,iOS。而之前的阿里的athrun似乎已經放棄維護了。
官網:https://macacajs.github.io/macaca/
Macaca基於Node.js開發,測試案例編寫語言暫時也只支持Node.js。
三. Macaca與Appium區別
坦白說,這種外部驅動instruments的server-client自動化測試框架,在iOS上實現方式非常受限的,所以其底層的實現方式是一致的。
而在應用級上的封裝,二者均采用了Node.js作為開發語言,接口也基於web-driver實現,所以Macaca和Appium相似程度非常高。
如何看待Macaca和Appium區別?
以下是Macaca作者的設計思想:
appium 是個優秀的工具。但無法滿足更輕、更快、更穩、更易集成、更貼合業務的高要求。
可以認為Macaca是一個輕量級的Appium。當然,這就意味着很多Appium的功能會沒有了。但這也造就了一個輕量級的,更易集成的框架,Why not?
四. 安裝
其實安裝是很簡單的,但是還是很多人無法把環境搭建起來。這里再詳細說下。
-
Xcode(及Xcode Command Line Tools)
-
Node.js
- https://nodejs.org/en/download/
-
安裝后,確認是否安裝成功
chentekiMacBook-Pro:~ chenximing$ node -v v4.4.3 chentekiMacBook-Pro:~ chenximing$ npm -v 2.15.1
- npm是Node.js包管理,之后裝Macaca就是用它。
-
brew
- Mac上的apt-get,軟件包管理工具。
- http://brew.sh/index_zh-tw.html
至此,如果對以上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。
至此,安裝全部完成,很簡單是不是:>
五. 運行第一個測試案例
安裝完了框架,要跑一跑啊,否則裝來干嘛呢?那得先回答以下問題:
- 案例哪里來?
- 有案例也得有app...
- 運行案例的設備,可以選模擬器和真機。由於裝了Xcode自帶模擬器,所以跑第一個案例時,先用模擬器會比較簡單。
然后第1,2個問題怎么解決?
作者已經幫你解決了。他已經為你准備第一個測試案例及其對應的app。
1. 下載案例及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
2. macaca-test-sample目錄結構解析
./ ├── HISTORY.md ├── LICENSE ├── Makefile ├── README.md ├── app ├── circle.yml ├── macaca-test ├── node_modules └── package.json
-
app:
- 存放測試中使用到的app:ios-app-bootstrap.zip。
-
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都干掉。
3. 運行第一個測試案例
macaca run --verbose