天天看點

android crash沒有日志_App測試之monkey(四)-調試參數及日志

android crash沒有日志_App測試之monkey(四)-調試參數及日志

由于monkey在測試app時,我們需要作長時間的穩定性測試,比如連續測試10小時(monkey不能指定時間,可以指定次數,時間可以在測試次數的日志基礎上大概算出來),在測試過程中,app很可能測試時間不久,因為碰到問題而崩潰,此時測試會停止,而達不到我們長期測試的目的,我們需要通過調試參數來讓測試執行繼續,主要的幾個參數如下:

--ignore-crashes 指即使應用程式崩潰,Monkey依然會發送事件,直到事件計數達到指定的次數為止。如:

adb shell monkey -p cn.mopon.film --ignore-crashes 10000

說明:即使應用程式崩潰,Monkey依然會發送事件,直到事件計數達到10000為止。

--ignore-security-exceptions 指APP發生許可證書錯誤時,Monkey依然繼續發送事件,直到事件數目達到目标值為止

adb shell monkey -p cn.mopon.film --ignore-security-exceptions 1000

--ignore-timeouts 指app在發生 ANR(Application No Responding)錯誤時,Monkey是否停止運作如果使用--ignore-timeouts參數,即使應用程式發生ANR錯誤,Monkey依然會發送事件,直到事件計數完成,如

adb shell monkey -p cn.mopon.film --ignore-timeouts 1000

--kill-process-after-error 指APP發生錯誤時,應用程式停止運作并保持在目前狀,如:

adb shell monkey -p cn.mopon.film --kill-process-after-error 1000

當應用程式發生錯誤時,應用程式停止運作并保持在目前狀态,注意系統并不會結束該應用程式的程序。

也多個控制參數一起使用:

adb shell monkey -p cn.mopon.film --ignore-crashes --ignore-timeouts 10000

注:當app崩潰,發生ANR錯誤時繼續測試

Monkey指令和事件等綜合運用參考

adb shell monkey -p cn.mopon.film (替換要測試的包名) --throttle 500 --ignore-crashes --ignore-timeouts --ignore-security-exceptions --ignore-native-crashes --monitor-native-crashes -v -v -v 1000000>d:monkeyLog.log

Monkey測試可以發現的問題

Android平台應用程式可能産生以下四種Crash:

App層(java應用):1、Force Close Crash 2、ANR Crash

Native層(本地架構):3、Tombstone Crash(Native Crash)

Kernel層(LINUX核心空間):4、Kernel Panic

Money日志定位問題

1 .monkey作長時間穩定性測試時,由于無人值守,是以測試的結果主要靠日志來看,典型Monkey測試日志檔案輸出,如下:

android crash沒有日志_App測試之monkey(四)-調試參數及日志

//主要Log檔案說明

anr目錄:從手機/data/anr導出的日志,儲存發生anr crash 時的相關資訊;

dontpanic目錄:從手機/data/dontpanic/導出的日志,儲存發生Kernel Panic時的相關資訊;

Tombstone目錄:從手機/data/tombstones/導出的日志,儲存發生Tombstone Crash時的錯誤資訊;

dropbox目錄:從手機/data/tombstones/導出的日志,經過dropbox服務截取的部分tombstones錯誤資訊;

BugReportLog.log:通過adb shell bugreport指令提取的系統各種資訊;

MonkeyScreenLog.Log:儲存Monkey測試過程、應用層錯誤資訊,發生Native Crash時,在此檔案也會有記錄;

2 .通過日志定位問題步驟

(1) 在MonkeyScreen.Log日志檔案搜尋關鍵詞“Fatal”、“Crash”、“ANR”定位到發生Crash的詳細堆棧資訊,或分析發生Crash前後的日志事件,如圖所示:

android crash沒有日志_App測試之monkey(四)-調試參數及日志

(2)檢查dropbox目錄下是否有相關crash日志資訊,主要關注是否有以下4類crash錯誤資訊:data_app_wtf,data_app_anr,data_app_crash,system_server_watchdog,如圖:

android crash沒有日志_App測試之monkey(四)-調試參數及日志

(3) 檢查tombstone目錄是否有生成日志,有的話說明發生過native crash,如圖:

android crash沒有日志_App測試之monkey(四)-調試參數及日志

(4)通過anr目錄中的日志檔案或BugReport.log日志檔案,進一步分析問題原因;

(5)通過上述日志資訊,結合代碼分析或通過搜尋引擎尋找對應問題的可能錯誤,定位解決問題。

Monkey背景運作

作用:使得android系統的裝置脫離PC,獨立運作monkey和記錄logcat和monkey日志。

方法如下:

1. 連接配接裝置和PC;

2 .adb shell 指令進入指令行模式;

3. 輸入 logcat 指令(日志檔案的位址使用> /sdcard/logcat_x.log),之後回車,

如:logcat -v time >/sdcard/logcat_x.log

4 .輸入 monkey 指令(日志檔案的位址使用> /sdcard/monkey_x.txt),回車;

如:monkey -p packageName --throttle 500 -v -v -v 1000000 >/sdcard/monkey.log 對于其餘的monkey指令的參數可以自己添加

5 .此時monkey開始運作,拔掉裝置和PC的資料線;

6 .确認logcat和monkey的日志記錄,可以重新連接配接裝置和PC,通過adb shell進入日志儲存的目錄,使用 ls –l檢視,logcat和monkey日志檔案的大小不斷增加,說明測試一直在寫入日志。