官方文檔鏈接:https://developer.android.com/studio/test/monkey.html
概覽
Monkey在設(shè)備上模擬用戶行為,隨機(jī)生成點(diǎn)擊、滑動(dòng)等事件,幫助開發(fā)者進(jìn)行壓力測(cè)試。
基本語(yǔ)法
$ adb shell monkey [options] <event-count>
對(duì)于一般開發(fā)者來(lái)說(shuō),我們只關(guān)心自己app的穩(wěn)定性,所以需要指定包名:
$ adb shell monkey -p com.sina.weibo -v 1000
以上這條命令的意思是:對(duì) [新浪微博app] [輸出基本日志信息] <執(zhí)行1000個(gè)隨機(jī)操作>
常用Options
事件間隔時(shí)間(throttle)
$ adb shell monkey -p com.sina.weibo -v --throttle 500 1000
翻譯:[新浪微博app] [輸出基本日志信息] [兩次隨機(jī)事件間間隔] <500ms> <執(zhí)行1000個(gè)隨機(jī)操作>
忽略異常(ignore)
app很難做到不出現(xiàn)crash和ANR問(wèn)題,我們希望monkey在執(zhí)行過(guò)程中不會(huì)因?yàn)橛龅疆惓6O聛?lái)。
$ adb shell monkey -p com.sina.weibo -v --throttle 500 --ignore-crashes --ignore-timeouts 1000
翻譯:[新浪微博app] [輸出基本日志信息] [兩次隨機(jī)事件間間隔] <500ms> [出現(xiàn)crash不阻塞monkey] [出現(xiàn)ANR不阻塞monkey] <執(zhí)行1000個(gè)隨機(jī)操作>
各事件比例(pct)
monkey會(huì)隨機(jī)生成事件,在一些測(cè)試場(chǎng)景中,我們希望測(cè)試控件被點(diǎn)擊的效果,而另一些場(chǎng)景中,可能我們會(huì)更看重列表滑動(dòng)的性能。
$ adb shell monkey -p com.sina.weibo -v --throttle 500 --ignore-crashes --ignore-timeouts --pct-touch 100 1000
翻譯:[新浪微博app] [輸出基本日志信息] [兩次隨機(jī)事件間間隔] <500ms> [出現(xiàn)crash不阻塞monkey] [出現(xiàn)ANR不阻塞monkey] [touch事件比例] <100%> <執(zhí)行1000個(gè)隨機(jī)操作>
事件種類還包含:motion-滑動(dòng)操作,syskeys-系統(tǒng)鍵等等。
日志輸出
終端有顯示限制,假如跑了10W個(gè)事件,過(guò)程中遇到的crash和ANR等日志如何記錄呢?
$ adb shell monkey -p com.sina.weibo -v --throttle 500 --ignore-crashes --ignore-timeouts --pct-touch 100 1000 > /Users/haitong/monkey_log_1009.txt
翻譯:[新浪微博app] [輸出基本日志信息] [兩次隨機(jī)事件間間隔] <500ms> [出現(xiàn)crash不阻塞monkey] [出現(xiàn)ANR不阻塞monkey] [touch事件比例] <100%> <執(zhí)行1000個(gè)隨機(jī)操作> [把日志記錄在monkey_log_1009.txt里]
停止Monkey
記得有一次測(cè)試,隨便寫了100W個(gè)事件,結(jié)果發(fā)現(xiàn)拔了手機(jī)還是在不停的點(diǎn)。。
停下來(lái)的方法很簡(jiǎn)單,monkey也是運(yùn)行在手機(jī)上的一個(gè)進(jìn)程,把進(jìn)程殺掉就可以了。
$ adb shell
$ ps | grep monkey

找到monkey的pid
$ kill pid 23371
Warning
monkey高頻模擬用戶事件,對(duì)手機(jī)的損耗較大,謹(jǐn)慎使用。