iOS Monkey工具初探

因項目準備對外推廣,應用的性能及穩定性成功重點關注對象。一方面針對 Bugly 收集到的 Crash 信息逐個分析;另一方面希望加強用戶隨機性 Crash 的分析,這就要使用 Monkey Test

找到了三個 iOS Monkey Test 的工具:
UI AutoMonkey
CrashMonkey
CrashMonkey4IOS

CrashMonky 和 CrashMonkey4iOS使用在命令行啓動的方式,需要使用目標設備的 DeviceID,之前在《Calabash 實戰問題總結》一文中提到的方法查看。

最終我選擇了CrashMonkey4IOS,主要考慮二個因素:一是日誌系統完善,可以紀錄行爲軌跡;二是這個工具目前作者還在維護,其它兩個GitHub 上已經很久沒有更新了。

UI AutoMonkey

UI AutoMonkey是一個 JS 文件,封裝了所有的操作。需要使用 instruments 來導入UIAutoMonkey.js,寫 JS 腳本來調用。使用起來不方便。

CrashMonkey

CrashMonkey是在 UI AutoMonkey 的基礎上做了封裝,按 Git 上的簡介就可以跑起來。文檔說不支持真機,用真機嘗試了下,也可以跑起來。

優點:

  • 無需修改工程
  • 可以定義執行執行時間
  • 結果截圖和操作歷史以Html方式呈現
  • 日誌和 Crash Report 也可以記錄
  • CI 集成方便

不足之處:

  • 經常鎖屏,然後就很長時間在鎖屏界面操作了;
  • 應用退到後臺後,無法再進入應用;
  • 作者已不維護;

CrashMonkey4IOS

CrashMonkey4IOS 是在 CrashMonkey 的基礎上做了優化,功能如下:

  • 支持真機測試、模擬器測試
  • 支持收集系統日誌(Systemlog)、崩潰日誌(Crashlog)、instrument行爲日誌
  • 支持測試報告截圖,繪製行爲軌跡
  • 支持測試設備信息收集
  • 使用最新版的UIAutoMonkey,加入UI Holes與Application Not Repsonding “ANR”)的處理,添加custom.js作爲入口腳本.
  • 加入tuneup依賴
  • 修改UIAutoMonkey.js中截圖策略,爲每個Event Action進行截圖
  • 支持測試執行過程中App進入後臺,自動恢復(測試不會block)

CrashMoney4iOS的日誌,放在命令執行的目錄,會生成一個smart_monkey_result 的目錄。建議在執行命令前,先 cd 到一個專門的目錄,不然每次生成的日誌都放到用戶當前目錄了。

安裝 CrashMonkey4iOS 的依賴imagemagick時會出現一些問題,安裝失敗的問題,可以使用如下方式解決:

curl -O ftp://ftp.imagemagick.org/pub/ImageMagick/ImageMagick.tar.gz
tar -zxf ImageMagick.tar.gz
cd ImageMagick-*/
./configure --prefix=/usr/local
make
sudo make install

另外如果是真機,執行的時候可能會遇到類似如下錯誤:

WebKit Threading Violation / UIAScriptAgentSignaledException running in real device 

這時,請打開設置->開發者->Enable UI Automation

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章