文檔名稱 |
Monkey測試執行與LOG分析 |
||
文檔說明 |
|
||
更改記錄 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1、Monkey測試介紹
Monkey測試是Android平台自動化測試的一種手段,通過Monkey程序模擬用戶觸摸屏幕、滑動Trackball、按鍵等操作來對設備上的程序進行壓力測試,檢測程序多久的時間會發生異常。
傳統意義上,Monkey測試主要針對的是應用的健壯性與穩定性,它通過大量的隨機的用戶事件來檢測應用是否會異常。
主要使用Monkey測試來進行內存泄露檢查。
2、Monkey測試執行
Monkey測試可分為環境配置、測試執行、結果分析3步驟。
2.1、環境配置
MONKEY測試使用的是ADB命令,因此只需要配置ADB環境即可。
2.2、測試准備與執行
在Monkey測試前,必須進行以下准備
Ø 手機屏幕超時設置為30分鍾,防止手機進入鎖屏狀態。
Ø 插入SIM卡和存儲卡后將手機開機,開啟ADB模式,連接到PC(存儲卡剩余空間盡量留大,建議1G以上)
Ø 開啟系統log。(具體可依據每個機型平台決定)
Ø 在PC上執行 運行—>CMD,在彈出的命令窗口中,輸入adb devices,檢查設備是否連接
Ø 在彈出的命令窗口中,輸入adb shell,進入Linux Shell
Ø 輸入Ideafriend Monkey命令。如下:
|
monkey -p com.lenovo.ideafriend --ignore-crashes --ignore-timeouts --ignore-native-crashes --pct-touch 30 -s 1 -v -v --throttle 200 100000 2>/sdcard/error.txt 1>/sdcard/info.txt |
||
參數 |
描述 |
|
|
-p com.lenovo.ideafriend |
只僅針對特定包名進行測試 |
|
|
--ignore-crashes |
忽略應用程序崩潰(Force & Close錯誤),繼續發送執行事件,直到事件數執行完成 |
|
|
--ignore-timeouts |
忽略應用程序發生ANR(Application No Responding)錯誤時,直到事件數執行完成 |
|
|
--ignore-native-crashes |
忽略本地應用程序發生奔潰,直到事件數執行完成 |
|
|
--pct-touch 30 |
調整觸摸事件為30%。即整個事件過程中觸摸事件占30% |
|
|
-s 1 |
偽隨機數生成器seed值。Seed值為1。相同的seed值再次執行monkey,將產生相同的事件序列。 |
|
|
-v -v |
日志級別為Leve1 1。將提供較為詳細的日志,包括每個發送到Activity的事件信息 |
|
|
--throttle 200 |
事件之間延時200毫秒。可以控制monkey的執行速度,如果不指定該選項,monkey事件間將不會延時。 |
|
|
100000 |
執行事件數為10萬次 |
|
|
2>/sdcard/error.txt |
Leve1 2日志保存到sdcard上的error.txt中 |
|
|
1>/sdcard/info.txt |
Leve1 1日志保存到sdcard上的info.txt中 |
|
|
|
|
||
2.3、結果檢查與分析
測試結束后,需要將手機連接PC,拷貝以下文件:
Ø info.txt:此文件在手機上的SDCARD中,主要記錄了MONKEY測試時發送的各種事件,如觸摸事件的位置等等。
Ø error.txt:此文件在手機上的SDCARD中,主要記錄了MONKEY測試時產生的一些ANR、強制關閉等異常。
Ø LOG文件:此文件在手機上的LOG文件夾中中,主要主要記錄程序對MONKEY測試時的響應情況。
我們需要對這3個文件進行分析整理,以便提交開發人員處理。
2.3.1、檢查測試是否完成
通過info.txt文件,可以查看Monkey是否執行成功。如下圖
2.3.2、結果分析整理
前文有提及,我們目前執行Monkey測試的目的是為了檢查是否有內存泄露,而這類問題主要是通過Log文件來體現的。
Error文件也記錄了部分異常,考慮到這部分文件格式已經很規范,因此不需要再次整理。
Log文件記錄了所有信息,因此我們需要進行初步分析整理后再提交研發,以減少研發工作量。
注意:內存泄露檢查目前主要針對MTK平台,高通平台等其他平台目前的LOG還未將此部分信息體現。以下說明僅針對MTK平台的LOG。
通過mtklog文件中main_log文件,我們可以查看可能存在內存泄露代碼所在具體位置。是否該行代碼存在泄露需要開發人員進一步驗證。我們只提供可能存在代碼泄露的信息。
Main_log文件路徑見相關LOG說明 。含有mian_log的文件都需要進行查看。搜索關鍵字“leak”,在搜索結果中,查看與Ideafreiend相關的代碼。如下圖:
注:com.lenovo.ideafriend:Ideafriend包名;CursorLeakDetecter: 游標泄露檢查器
當發現相關LOG后,將可能存在內存泄露的代碼所在區域(代碼所在前后5行左右),拷貝到另外一個文檔中(新建:mianlog.txt)。泄露的代碼只需要拷貝一處即可。如下圖:
注:紅圈處在ideafriend代碼中的677行可能存在泄露,此時只需拷貝一處即可
3、資料與擴展
3.1 Log信息查看工具可使用UltraEdit
3.2 Monkey擴展閱讀
[1]Android壓力測試工具Monkey介紹-V1.1-20110822.doc
[2]Monkey官網
http://developer.android.com/tools/help/monkey.html
[3]百度文庫 Monkey測試介紹
http://wenku.baidu.com/view/476c79b8fd0a79563c1e72b6.html
4、Monkey log工具使用
Monkey測試后在Mobilelog文件中會產生多個main_log文件,里面含有詳細的log執行記錄,通過下面五步,挑選出我們所需要的信息。
1、 合並含有main_log文件,另存為main_log.txt。
將上述文件合並並重命名為main_log.txt
2、 查找標注可能泄露的log,使用工具Ideafriend_LogTool_1.jar
3、在生成的mian_log_search.txt中查找Ideafriend可能的泄露處。使用工具Ideafriend_logTool_2.jar
注:在文件夾MainLog中,查看文件名格式為:Ideafriend_xxx.txt的說明為Ideafriend可能泄露的代碼。刪除所有文件名含有dele_xxx.txt的文件。
4、 查找出重復的文件,使用工具NoClone.exe
在重復的列表中標記復制出,重復中一項(如圖所示522個文件中有4個重復的,因此只要復制出4個就可以),在非重復中的所有文件(如圖所示為3個)
5、 合並我們查找出來的文件,使用工具庖丁解牛.exe
如圖所示,添加要合並的文件,保存文件為TXT。
S920_main_log.txt 就是我們需要的文件,log整理完成。
詳情:http://wenku.baidu.com/browse/downloadrec?doc_id=18d475440066f5335a812172&