CrashMonkey4Android 的安裝及使用
簡介
CrashMonkey4Android,是一個依靠Cts框架,對原生Monkey進行改造後的產物,擁有以下新增功能:
- 儲存每一步的截圖
- 儲存logcat
- 儲存每一個Monkey事件的資訊
- 分析Crash
- Html報告
- 開源,你想做的,你能做的,只要你行,你就可以做
- 支援多裝置
環境要求
- 安裝JDK1.6+並配置環境變數
- 安裝SDK並配置環境變數
如何使用
下面以Mac環境為例
第一步
同步CrashMonkey4Androd_bin 專案來獲取可執行檔案,或者直接下載ZIP包,解壓。
第二步
解壓後,專案目錄結構如下:
找到tools目錄下的cts-tradefed檔案,雙擊會出現終端視窗:
(可以看出來我們支援多裝置)
第三步
在終端輸入命令 : run cts --plan Monkey
按return
,@Monkey開跑了。
第四步
參看報告,在tools的統計目錄repository下有2個目錄很重要
1. logs:儲存測試過程中的截圖和log資訊
2. results: 儲存測試報告
首先去results下開啟報告,一個資料夾代表一次測試,我們剛才有2臺裝置,所以生成了2個報告,進入檔案下找到index.html,開啟:
有crash版本:
index.html
為結果總結頁面,上面顯示了測試裝置的硬體資訊(Hardware),被測應用資訊(Application),測試周期(Span),結果(Results)。下方有一個表格中result顯示了測試所花時間(Duration),Monkey的事件數(20)。點選result一覽的連結進入詳細報告:
無crash版本:
有crash版本
詳細頁面中顯示了最後50步的操作截圖(少於50的全部列出),截圖上繪製了操作的型別,還可以點選圖片檢視該步操作的相關logcat資訊。還包括3按鈕(crash log按鈕會在發生crash的時候顯示),點選system log
可以看到系統log:
點選uiauto trace
按鈕會顯示所有步驟的資訊:
如果有crash log
按鈕,會顯示crash的簡簡訊息,目前只是簡單的從logcat分析ANR和Java Crash資訊,後續會詳細研究一下crash知識:
擴充套件功能
我們可以通過在命令列下輸入run cts --help-all
獲取所有的可設定引數:
test options:
--p package of test app
--a main activity of test app
--v monkey event count Default: 20.
--throttle The delay time between the events Default: 300.
--pct-tap percentage of tap event Default: 25.0.
--pct-motion percentage of motion event Default: 0.0.
--pct-nav percentage of navigation event Default: 15.0.
--pct-majornav percentage of major navigation event Default: 15.0.
--pct-syskeys percentage of system key event Default: 15.0.
--pct-drag percentage of drag evnet Default: 30.0.
--logcat-size The max number of logcat data in bytes to capture when --logcat-on-failure is on. Should be an amount that can comfortably fit in memory. Default: 20480.
--plan the test plan to run.
--[no-]reboot Do not reboot device after running some amount of tests. Default behavior is to reboot. Default: false.
--[no-]skip-device-info
flag to control whether to collect info from device. Providing this flag will speed up test execution for short test runs but will result in required data being omitted from the test report. Default: false.
--[no-]device-unlock unlock device Default: false.
--app-path local app's path
--wifiSsdk wifi username
--wifiPsk wifi password
--[no-]skip-uninstall-app
no uninstall test app Default: true.
--monkey-log-size monkey log size Default: 10485760.
-b, --[no-]bugreport take a bugreport after each failed test. Warning: can potentially use a lot of disk space. Default: false.
--[no-]tracefile get trace file ,in /data/anr/trace.txt Default: false.
'stdout' logger options:
--log-level minimum log level to display. Default: INFO. Valid values: [VERBOSE, DEBUG, INFO, WARN, ERROR, ASSERT]7
主要關注以下屬性:
- p :測試app的包名.
- a :測試app的主activity,如果正確設定上面兩項,Monkey會針對上面-p指定的應用測試,一直保持在該應用介面.
- throttle:2個Monkey事件之間的間隔,預設為300毫秒.
- pct-tap:點選事件的百分比,預設為%25.
- pct-motion:多點滑動事件百分比,預設為%0,(暫時還沒實現).
- pct-nav: 導航事件的百分比(導航事件由方向輸入裝置的上下左右按鍵所觸發的事件組成),預設為%15.
- pct-majornav:主要導航事件的百分比。(這些導航事件通常會導致UI介面中的動作事件,如5-way鍵盤的中間鍵,回退按鍵、選單按鍵),預設為%15.
- pct-syskeys:系統事件百分比。(這些按鍵通常由系統保留使用,如Home、Back、Start Call、End Call、音量調節),預設為%15.
- pct-drag:拖拽事件的百分比,預設為%30。
目前只實現了5/6,但是上面的數字相加一定要為100%。
- reboot : 重啟機器,預設為false,不重啟。如果想要重啟的話,直接在命令列附上該引數,不用在後面加true,因為boolen型別的設定方式和其他不一樣。
- device-unlock:解鎖手機,預設為false,如果收集重啟的話,建議將該屬性設定為true。解鎖原理就是利用appium自帶的apk來解鎖的。
- skip-device-info:是否跳過裝置資訊獲取,預設為false。因為我們的報告中用到了裝置資訊,所以建議不要將該屬性設定為true。
- app-path:如果應用需要從本地安裝,用該屬性設定app路徑,會自動安裝app到收集端。
- wifiSsdk: wifi的使用者名稱
- wifiPsk:wifi的密碼
因為該工具支援自動連線wifi,所以你的app需要在wifi情況下工作,請設定這兩個屬性,它會自動檢測斷網並重連
- skip-uninstall-app:是否跳過解除安裝app的階段,因為如果使用本地app安裝後,有時想解除安裝應用,可以設定該屬性為false。預設是不解除安裝。
- monkey-log-size:如果針對某一個應用測試,該工具為該app單獨收集log,這裡可以設定log可以最大到多少B。
- bugreport:是否儲存bugreport資訊,預設為false。如果研發想要bugreport資訊,將該屬性設定為true。
- tracefile:是否儲存trace.txt檔案,該檔案位於/data/anr/trace.txt。一般發生crash的時候會用到該檔案分析問題。