Monkey是Android SDK附帶的一個工具,一個作app壓力測試的工具,經過某些Linux命令,產生必定數量或必定時間內的隨機模擬用戶操做的事件, 如點擊、按鍵、手勢等, 以及一些系統級別的事件。一般也稱隨機測試或者穩定性測試。html
安裝Android SDK 並配置環境變量便可。可參考:JDK與adb/android環境變量配置完整教程 android
一、本地建立白名單文件,如:whitelist.txt,將包名添加到該文件中shell
如:com.ubtechinc.cruzr.advert
com.ubtechinc.cruzr.aiui
com.ubtechinc.cruzr.behavior
com.ubtechinc.cruzr.calendar
com.ubtechinc.cruzr.clock
com.ubtechinc.cruzr.coreservices
com.ubtechinc.cruzr.cruzralbum
com.ubtechinc.cruzr.cruzrbootwizard
com.ubtechinc.cruzr.dance
com.ubtechinc.cruzr.freeguide
com.ubtechinc.cruzr.introduce
com.ubtechinc.cruzr.launcher
com.ubtechinc.cruzr.launcher2
com.ubtechinc.cruzr.map
com.ubtechinc.cruzr.music
com.ubtechinc.cruzr.navigation
com.ubtechinc.cruzr.pccontrolstub
com.ubtechinc.cruzr.power
com.ubtechinc.cruzr.servicesupport
com.ubtechinc.cruzr.systemupdate
com.ubtechinc.cruzr.syswarn
com.ubtechinc.cruzr.timer
com.ubtechinc.cruzr.user
com.ubtechinc.cruzr.video
com.ubtechinc.cruzrpowersettings
com.ubtechinc.cruzrrosexceptionstats
com.ubtechinc.settingsapp
二、電腦鏈接到設備,將測試應用白名單push到Android系統,如:ide
adb push d:/Monkey/whitelist.txt /mnt/sdcard/data/whitelist.txt工具
三、登陸adb:adb shell測試
四、調用Monkey命令ui
monkey --pkg-whitelist-file /mnt/sdcard/data/whitelist.txt -s 101 --pct-touch 70 --pct-motion 20 --pct-trackball 10 --throttle 300 --ignore-crashes --ignore-timeouts --monitor-native-crashes -v -v 50000 |logcat -v time&>/mnt/sdcard/data/monkey_1019.logspa
參數說明:指針
--pkg-whitelist-file /mnt/sdcard/data/whitelist.txt //測試應用白名單
--s 50 //種子序列,出問題須要用相同種子值進行復現;沒測出問題,下次須要從新修改種子值再跑
--pct-touch 70 //觸摸事件的百分比(觸摸事件是一個down-up事件,它發生在屏幕上的某單一位置)
--pct-motion 20 //動做事件的百分比(動做事件由屏幕上某處的一個down事件、一系列的僞隨件機事和一個up事件組成)
--pct-trackball 10 //表示調整軌跡球事件的百分比(軌跡球事件由一個或多個隨機移動組成,有時還伴隨有點擊)
--throttle 300 //毫秒,操做延時
--ignore-crashes //忽略無響應,繼續執行
--ignore-timeouts //忽略Crash繼續執行
--monitor-native-crashes //用於指定是否監視並報告應用程序發生崩潰的本地代碼
--ignore-security-exceptions //表示當應用程序遇到任何類型的權限錯誤時,Monkey將中止,例如,若是它嘗試啓動須要某些權限的活動。若是指定此選項,則Monkey將繼續向系統發送事件,直到計數完成
-v 日誌等級, 經過-v參數能夠指定打印信息的詳細級別,多一個-v多一個級別
級別 |
表示 |
描述 |
0 |
-v |
打印最基本的事件 |
1 |
-v-v |
更全面的信息,如增長了那些Activity被選中 |
2 |
-v-v-v |
日誌記錄最全面的信息 |
50000 //事件數量
> monkey_1019.log //日誌保存本地SD卡
--kill-process-after-error //當Monkey因爲一個錯誤而中止時,出錯的應用程序將繼續處於運行狀態。當設置了此選項時,將會通知系統中止發生錯誤的進程。注意,正常的(成功的)結束,並無中止啓動的進程,設備只是在結束事件以後,簡單地保持在最後的狀態
--monitor-native-crashes //表示Android系統原生代碼中的監視和報告崩潰。若是設置了-kill-process-after-error,系統將中止
--wait-dbg //表示中止執行中的Monkey,直到有調試器和它相鏈接
tips:
1) 若只跑指定的幾個包,能夠不設置白名單,直接執行指令(-p部分添加要執行的包):
adb shell
monkey -p com.ubtechinc.cruzr.music -p com.ubtechinc.cruzr.video -s 50 --pct-touch 70 --pct-motion 20 --pct-trackball 10 --throttle 300 --monitor-native-crashes -v -v -v 10000&>/mnt/sdcard/data/ monkey_1019.log
2)不指定應用,跑安卓系統
adb shell
monkey -s 68 --pct-touch 70 --pct-motion 20 --pct-trackball 10 --throttle 300 --monitor-native-crashes -v -v -v 50000 &>/sdcard/monkey/ monkey_1019.log
3)指定黑名單,不執行該應用
a. 建立黑名單文件blacklist.txt
b. push黑名單到Android系統:adb push d:/Monkey/whitelist.txt /mnt/sdcard/data/blacklist.txt
c. 執行的時候增長--pkg-whitelist-file /mnt/sdcard/data/ blacklist.txt
一、導出日誌到本地:
adb pull /mnt/sdcard/data/ monkey_1019.log E:\Cruzr\Monkey\log\ monkey_1019.log
二、日誌分析
1)無響應問題能夠在日誌中搜索 「ANR」,崩潰問題搜索 「CRASH」, 若是碰到這兩類問題,抓取日誌同時,須要提供traces.txt,具體存放目錄可詢問開發
2)內存泄露問題搜索"GC"(需進一步分析),異常問題搜索 「Exception」(若是出現空指針, NullPointerException,需重視)
(Monkey日誌內容分析:
通常測試結果分析-搜索關鍵字:
1.程序無響應,ANR問題:在日誌中搜索「ANR」
2.崩潰問題:在日誌中搜索「CRASH」
3.其餘問題:在日誌中搜索」Exception」
4.ForceClosed 和程序異常退出問題:在日誌中搜索"Fatal"
5.搜索「system error」)
一、登陸adb :adb shell
二、查看進程號:ps | grep monkey
三、kill掉w進程:kill <進程號>
操做說明:(單獨一個文件夾複製過來的,僅供參考)
Cruzr Monkey測試操做說明 monkey --pkg-whitelist-file /mnt/sdcard/monkey/whitelist.txt -s 88 --pct-touch 70 --pct-motion 20 --pct-trackball 10 --throttle 800 --ignore-crashes --ignore-timeouts --monitor-native-crashes -v -v 50000 一、將測試應用白名單push到Android系統,如: adb push d:/monkey/whitelist.txt /mnt/sdcard/monkey/whitelist.txt 二、登陸adb adb shell 三、調用Monkey monkey --pkg-whitelist-file /mnt/sdcard/monkey/whitelist.txt -s 53 --pct-touch 70 --pct-motion 20 --pct-motion 10 --throttle 500 --ignore-crashes --ignore-timeouts --monitor-native-crashes -v -v -v 100000 &>/mnt/sdcard/monkey/b0f1ecac466e_0806-001.log 參數說明: --pkg-whitelist-file /mnt/sdcard/data/whitelist.txt //測試應用白名單 -s 50 //種子序列(不一樣的隨機操做系列),出問題須要用相同種子值進行復現;沒測出問題,下次須要從新修改種子值再跑 --pct-touch 70 //觸摸事件的百分比(觸摸事件是一個down-up事件,它發生在屏幕上的某單一位置) --pct-motion 20 //動做事件的百分比(動做事件由屏幕上某處的一個down事件、一系列的僞隨件機事和一個up事件組成) --pct-motion 20 「基本」導航事件的百分比(導航事件由來自方向輸入設備的up/down/left/right組成) --throttle 500 //毫秒,操做延時 -ignore-crashes //忽略無響應,繼續執行 --ignore-timeouts //忽略Crash繼續執行 --monitor-native-crashes 用於指定是否監視並報告應用程序發生崩潰的本地代碼 -v 日誌等級 500000 //事件數量 >>/mnt/sdcard/data/b0f1ecac46a3_0319-001.log //標準輸出日誌保存本地SD卡 &>/mnt/sdcard/data/b0f1ecac46a3_0319-001.log //標準輸出和標準錯誤輸出日誌保存到本地SD卡 -v -v -v 500000 |logcat -v time &>/mnt/sdcard/hly-0414-002.log //輸出日誌帶時間戳 四、導出日誌 adb pull /mnt/sdcard/monkey/b0f1ec8c21b7_0327-001.log d:/Monkey/b0f1ec8c21b7_0327-001.log 單個應用跑Monkey adb shell monkey -p com.ubtechinc.cruzr.timer -s 50 --pct-touch 70 --pct-motion 20 --pct-motion 10 --throttle 500 --monitor-native-crashes -v -v -v 100000>d:/monkey/ test.log 多個應用跑Monkey adb shell monkey -p com.ubtechinc.cruzr.timer -p com.ubtechinc.cruzr.launcher -s 50 --pct-touch 70 --pct-motion 20 --pct-motion 10 --throttle 500 --monitor-native-crashes -v -v -v 100000>d:/monkey/test.log 待確認: monkey --pkg-whitelist-file /mnt/sdcard/monkey/whitelist.txt -s 55 --pct-touch 70 --pct-motion 20 --pct-motion 10 --throttle 300 --monitor-native-crashes -v -v -v 50000 &>/mnt/sdcard/monkey/fss0324-006.log monkey --pkg-whitelist-file /mnt/sdcard/monkey/whitelist.txt -s 55 --pct-touch 70 --pct-motion 20 --pct-motion 10 --throttle 300 --ignore-crashes --ignore-timeouts --monitor-native-crashes -v -v -v 30000 &>/mnt/sdcard/monkey/fss0326-003.log