測試步驟
adb devices-----了解包名-----adb shell monkey-----p 包名?----v 運行次數(shù)(多個參數(shù)的組合形成不同的用例以求最大的覆蓋)-----當崩潰或無響應(yīng)時分析monkey日志
常規(guī)monkey命令
(可直接在項目里使用)
adb shell monkey -p com.jiochat.jiochatapp --throttle 100 --ignore-crashes --ignore-timeouts --ignore-security-exceptions --ignore-native-crashes --monitor-native-crashes -v -v -v 1000000>d:\b.log
重現(xiàn)bug:monkey日志搜索關(guān)鍵詞ANR exception,將之前的事件重新操作移国,尤其是seed值要一模一樣翘骂,如monkey -p 包名 -v seed 0 500
日志分析:查看是否有crash等關(guān)鍵字,找上下文耻台,進行簡單分析將你所能定位的錯誤信息發(fā)給開發(fā)。
該工具用于進行壓力測試空另。開發(fā)人員結(jié)合monkey 打印的日志 和系統(tǒng)打印的日志盆耽,修改測試中出現(xiàn)的問題。
Monkey 是SDK中附帶的一個工具,所有的事件都是隨機產(chǎn)生的,不帶任何人的主觀性摄杂。
Monkey程序由Android系統(tǒng)自帶坝咐,使用Java語言寫成,在Android文件系統(tǒng)中的存放路徑是:/system/framework/monkey.jar析恢。
Monkey.jar程序是由一個名為“monkey”的Shell腳本來啟動執(zhí)行墨坚,shell腳本在Android文件系統(tǒng)中的存放路徑是:/system/bin/monkey;這樣就可以通過在shell窗口中執(zhí)行: adb shell monkey {+命令參數(shù)}來進行Monkey測試了映挂。
運行monkey
運行方式有三種:
1泽篮、pc機上 adb shell monkey +參數(shù)?
2、 pc機輸入adb shell進入到手機的安卓設(shè)備后再monkey+參數(shù)?
3柑船、手機設(shè)備上安裝一個模擬器手機執(zhí)行monkey+參數(shù)(手機模擬器可以通過百度搜索或360手機助手搜android terminal帽撑,安裝即可,可以在模擬器的命令行中輸入mokey +參數(shù))
monkey -pcom.tencent.mtaexample -s 23 --throttle2000 --ignore-crashes --ignore-timeouts -v -v -v 100000>/data/local/tmp/log.txt 2>&1 &
1.? -p后面接著的對應(yīng)的包名鞍时,如果是整機測試亏拉,就不需要 -ppackage_name
2.? -s后面是對應(yīng)的種子數(shù),好像就是操作步驟寸癌,根據(jù)她們測試的經(jīng)驗专筷,一般種子數(shù)在23弱贼,同步她們測試的結(jié)果蒸苇,一般種子的個數(shù)固定為23,和她們選擇的操作步驟就是同步的吮旅。
3.? --ignore-crashes --ignore-timeouts 這里是在monkey測試的過程中遇到carash或者timeout的情況時忽略掉溪烤,一般不設(shè)置時,出現(xiàn)carash或者timeout時庇勃,Monkey測試會終止檬嘀。這里是防止Monkey測試終止。
4.? -v 指的是Monkey測試時打印log級別责嚷。
5.? 100000 這里是指點擊的次數(shù)鸳兽,根據(jù)測試的經(jīng)驗,對于單個應(yīng)用程序這個次數(shù)設(shè)置在100000次就可以了罕拂;如果是整機揍异,一般設(shè)置在500000次。
/data/local/tmp/log.txt測試的log記錄在手機上/data/local/tmp/ 下面的log.txt里面爆班,這個名字可以自己寫衷掷。
6.? 2>&1 固定的寫法,這個也很重要柿菩,代表的意思是中間忽略的東東的日志一并輸入到指定的文件中戚嗅。
7.? 最后單獨的一個"&" 是一旦Monkey測試開始了,之后可以拔掉數(shù)據(jù)線,不會影響Monkey測試懦胞。
8.? 測試所有模塊? monkey? -s 23 --ignore-crashes --ignore-timeouts -v-v -v 100000> /data/local/tmp/log.txt 2>&1 &
monkey常用參數(shù)詳解
-v 日志詳細程度
Level 0 : adb shell monkey -p fishjoy.control.menu -v 100 最簡單(默認)替久,除了啟動、測試完成和最終結(jié)果外只提供較少的信息躏尉。
Level 1 : adb shell monkey -p fishjoy.control.menu -v -v 100 提供了較為詳細的測試信息侣肄,如逐個發(fā)送到Activity的事件信息
Level 2 : adb shell monkey -p fishjoy.control.menu -v -v -v 100 提供了更多的設(shè)置信息,如測試中選中或未選中的Activity信息
比較常用的是-v -v -v醇份,一般會保存到指定文件中供開發(fā)人員查找bug原因時使用
-s(隨機數(shù)種子)
指定偽隨機數(shù)生成器的seed值稼锅,如果seed相同,則兩次Monkey測試所產(chǎn)生的事件序列也相同的僚纷。
示例:?
monkey測試1:adb shell monkey -p fishjoy .control.menu –s 10 100
monkey測試2:adb? shell? monkey? -p fishjoy .control.menu? –s 10? 100
--throttle <毫秒>
指定用戶操作(即事件)間的時延矩距,單位是毫秒;如果不指定這個參數(shù)怖竭,monkey會盡可能快的生成和發(fā)送消息锥债。
示例:adb shell monkey -p fishjoy.control.menu --throttle 3000 100
-p <允許的包名列表>
用此參數(shù)指定一個或多個包。指定包之后痊臭,monkey將只允許系統(tǒng)啟動指定的app哮肚。如果不指定包,monkey將允許系統(tǒng)啟動設(shè)備中的所有app广匙。
--ignore-security-exception
作用:通常允趟,當程序發(fā)生許可錯誤(例如啟動一些需要許可的Activity)導(dǎo)致的異常時,Monkey將停止運行鸦致。設(shè)置此項潮剪,Monkey將繼續(xù)發(fā)送事件給系統(tǒng),直到事件計數(shù)完成分唾。
--ignore-timeouts
作用:通常抗碰,應(yīng)用程序發(fā)生任何超時錯誤(如“Application Not responding”對話框)Monkey將停止運行,設(shè)置此項绽乔,Monkey將繼續(xù)發(fā)送事件給系統(tǒng)弧蝇,直到事件計數(shù)完成。
--ignore-crashes
作用:通常折砸,應(yīng)用發(fā)生崩潰或異常時Monkey會停止運行看疗。如果設(shè)置此項,Monkey將繼續(xù)發(fā)送事件給系統(tǒng)鞍爱,直到事件計數(shù)完成鹃觉。
--pct-touch
作用:調(diào)整觸摸事件的百分比.(觸摸事件是指在屏幕中的一個down-up事件,即在屏幕某處按下并抬起的操作)比如一個應(yīng)用80%的操作都是觸摸睹逃,那就可以將此參數(shù)的百分
比設(shè)置成相應(yīng)較高的百分比盗扇。如觸摸返回祷肯、觸摸簽到等
--pct-motion
調(diào)整motion事件百分比。(motion事件是由屏幕上某處一個down事件疗隶、一系列偽隨機的移動事件和一個up事件組成)也就是直線滑動事件如從左到有滑動解鎖
--pct-trackball
作用:調(diào)整滾動球事件百分比佑笋。(滾動球事件由一個或多個隨機的移動事件組成,有時會伴隨著點擊事件)如不規(guī)則滑動解鎖
--pct-nav?導(dǎo)航斑鼻,現(xiàn)在手機基本沒有導(dǎo)航了
---pct-syskeys?按鍵消息比例蒋纬,主頁、后退坚弱、音量增減
--pct-anyevent?其他不常用的按鍵比例的設(shè)置蜀备,不常用
--hprof monkey測試完成后生成內(nèi)存快照,data/misc路徑下生成荒叶,不常用碾阁,比較占空間
--ignore-security-exceptions?忽略權(quán)限問題的
--kill-process-after-error?當錯誤發(fā)生時殺進程
--monitor-native-crashes?監(jiān)視崩潰時的本地代碼
殺monkey進程
如果想中斷運行中的monkey CTRL+C
adb shell ps | grep monkey 返回進程號
adb shell kill [剛才查到的進程號]
app包名查看:
a.手機安裝包名查看器'
b.aapt命令 aapt dump badging *.apk
c、源碼下的AndroidManifest.xml文件查看
d.adb logcat抓取當前Android機運行的app的包名( I/ActivityManager(數(shù)字): Displayed 包名/類
名: +ms )
命令行輸入 adb logcat >e:\bag.txt
手機操控app些楣,ctrl+c停止
去e:\bag.txt這個文件下搜索關(guān)鍵字如Displayed 脂凶,一般都能找到