monkey測試中日誌分析和內存泄露分析

一.monkey日誌分析

1、程序無響應的問題:在日誌中搜索“ANR”

2、崩潰問題:在日誌中搜索“Exception“

看前後執行事件進行復現

如果Monkey測試順利執行完成,在log的最後,會打印出當前執行事件的次數和所花費的時間;// Monkey finished代表執行完成。

Monkey執行中斷,在log的最後也能查看到當前已執行的次數。

二、monkey內存泄露

1.內存泄露發現方法

執行monkey測試時有時會有內存泄露情況,可以進行排查

a.手機彈出out of  memory對話框--基本確定有內存泄露

b.手機沒有提示但是實際有內存泄露:排除方法通過logcat文件GC輸出lgo信息,搜關鍵詞GC,如果有下面四個中的一個,就可能存在內存泄露。(可以打開兩個命令窗口,一個執行adb logcat,再執行monkey,待monkey結束後,ctrl+c中斷log抓取)

GC_FOR_ALLOC, 因爲在分配內存時內存丌夠引發的

GC_EXPLICIT, 表明GC被顯式請求觸發的,如System.gc調用

GC_CONCURRENT,  表明GC在內存使用率達到一定的警戒值時,自動觸發

GC_BEFORE_OOM, 表明在虛擬機拋出內存丌夠異常OOM之前,執行最後一次回收內存垃圾

2.發現內存泄露--內存報告分析(利用hprof參數的內存快照生成內存報告)

在發現內存泄露後,可以執行相同的monkey,只需多加一個參數--hprof 

adb shell monkey -p 包名  --hprof --throttle 100  --pct-touch 50 --pct-motion 50 -v -v -v 1000 >c:\monkey.txt

如果指定了這個選項,monkey會在發送時間的前後生成app內存快照文件,一般會在手機設備的/data/misc目錄下生成hprof的文件。(注:  /data/misc  需要root權限,可

以在手機上安裝個RE查看或通過手機助手查看)

ps:文件轉換:配置monkey測試時的sdk-tools下查看是否hprof-conv命令,在命令行輸入hprof-conv -help得知文件轉化用法,直接轉化就行,由.hprof轉化成.conv格式。

轉化後的文件用eclipse的Memory Analyzer tool(MAT)查看(此插件可以下載),可以點擊 Reports->Leak Suspects鏈接來生成報告。

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