monkey測(cè)試簡(jiǎn)介
什么是Monkey
Monkey程序是Android系統(tǒng)自帶的洽损,由Java語言寫成庞溜,在Android文件系統(tǒng)中的存放路徑是: /system/framework/monkey.jar。
操作流程
通過名為“monkey”的Shell腳本去啟動(dòng)Monkey.jar程序(shell腳本在Android文件系統(tǒng)中 的存放路徑是:/system/bin/monkey)碑定,在你指定的APP應(yīng)用上模擬用戶點(diǎn)擊流码,滑動(dòng),輸入等操作以極快的速度來對(duì)設(shè)備程序進(jìn)行壓力測(cè)試延刘,檢測(cè)程序是否會(huì)發(fā)生異常漫试,然后通過日志進(jìn)行排錯(cuò)。
目的
測(cè)試app 是否會(huì)是否會(huì)Crash,主要用于穩(wěn)定性測(cè)試
操作命令格式:adb shell monkey {+命令參數(shù)}
操作步驟
- 環(huán)境配置:把a(bǔ)db加入系統(tǒng)環(huán)境碘赖,手機(jī)開啟開發(fā)者模式
- 連接手機(jī)商虐,獲取測(cè)試的包名。獲取包名的方法
- Monkey編寫測(cè)試命令,并運(yùn)行崖疤。monkey操作命令
如果要提前中結(jié)束測(cè)試秘车,中斷運(yùn)行中的monkey
CTRL+C
adb shell ps | grep monkey 返回進(jìn)程號(hào)
adb shell kill [剛才查到的進(jìn)程號(hào)]
從Monkey日志中看問題
測(cè)試結(jié)果初步判斷
- monkey執(zhí)行時(shí)未加
--ignore-crashes
--ignore-crashes
參數(shù),就先瀏覽日志中Events injected: 值
劫哼,查看當(dāng)前已執(zhí)行的次數(shù)叮趴,就知道有無bug - 程序無響應(yīng)的問題:在日志中搜索 “ANR”
- 崩潰問題:在日志中搜索 “Exception” ,在這里順便提一下常見的Java異常:
- 算術(shù)異常類:ArithmeticExecption
- 空指針異常類:NullPointerException
- 類型強(qiáng)制轉(zhuǎn)換異常:ClassCastException
- 數(shù)組負(fù)下標(biāo)異常:NegativeArrayException
- 數(shù)組下標(biāo)越界異常:ArrayIndexOutOfBoundsException
- 違背安全原則異常:SecturityException
- 文件已結(jié)束異常:EOFException
- 文件未找到異常:FileNotFoundException
- 字符串轉(zhuǎn)換為數(shù)字異常:NumberFormatException
- 操作數(shù)據(jù)庫異常:SQLException
- 輸入輸出異常:IOException
- 違法訪問錯(cuò)誤:IllegalAccessError
- 內(nèi)存不足錯(cuò)誤:OutOfMemoryError
- 堆棧溢出錯(cuò)誤:StackOverflowError 15.其他权烧,參考
找出問題后的操作步驟:
- 找到是monkey里面的哪個(gè)地方出錯(cuò)
- 查看Monkey里面出錯(cuò)前的一些事件動(dòng)作眯亦,并手動(dòng)執(zhí)行該動(dòng)作
- 若以上步驟還不能找出,可以使用之前執(zhí)行的monkey命令再執(zhí)行一遍般码,注意seed值要一樣妻率。
常規(guī)測(cè)試的monkey用法
adb shell monkey -p com.xxx.myapp --throttle 100 --ignore-crashes --ignore-timeouts --ignore-security-exceptions --ignore-native-crashes --monitor-native-crashes -v -v -v 1000000>d:\mylog.log
對(duì)應(yīng)參數(shù)說明
-p指定包名
--throttle 100 MILLISEC事件之間插入的固定延遲。通過這個(gè)選項(xiàng)可以減緩Monkey的執(zhí)行速度板祝。如果不指定宫静,Monkey將盡可能快的產(chǎn)生并執(zhí)行事件
--ignore-crashes作用:通常,應(yīng)用發(fā)生崩潰或異常時(shí)Monkey會(huì)停止運(yùn)行。如果設(shè)置此項(xiàng)孤里,Monkey將繼續(xù)發(fā)送事件給系統(tǒng)伏伯,直到事件計(jì)數(shù)完成。
--ignore-timeouts作用:通常捌袜,應(yīng)用程序發(fā)生任何超時(shí)錯(cuò)誤(如“Application Not responding”對(duì)話框)Monkey將停止運(yùn)行说搅,設(shè)置此項(xiàng),Monkey將繼續(xù)發(fā)送事件給系統(tǒng)虏等,直到事件計(jì)數(shù)完成弄唧。
--ignore-security-exception 作用:通常,當(dāng)程序發(fā)生許可錯(cuò)誤(例如啟動(dòng)一些需要許可的Activity)導(dǎo)致的異常時(shí)霍衫,Monkey將停止運(yùn)行套才。設(shè)置此項(xiàng),Monkey將繼續(xù)發(fā)送事件給系統(tǒng)慕淡,直到事件計(jì)數(shù)完成。
--ignore-native-crashes忽略本地代碼導(dǎo)致的崩潰沸毁。設(shè)置忽略后峰髓,Monkey將執(zhí)行完所有的事件,不會(huì)因此停止
--monitor-native-crashes 監(jiān)視崩潰時(shí)的本地代碼
-v 每個(gè)-v都將增加反饋信息的級(jí)別息尺。共3個(gè)級(jí)別携兵,因此,-v -v -v可以提供最詳細(xì)的設(shè)置信息搂誉。
1000000 這里是指點(diǎn)擊的次數(shù)
>d:\mylog.log 日志輸出