Monkey是Android平臺(tái)自動(dòng)化測(cè)試的一種手段,可以在模擬器里或?qū)嶋H設(shè)備中運(yùn)行荆几,它向系統(tǒng)發(fā)送偽隨機(jī)的用戶事件流,如按鍵輸入吨铸、觸摸屏輸入行拢、手勢(shì)輸入等诞吱,實(shí)現(xiàn)對(duì)正在開發(fā)的應(yīng)用程序進(jìn)行壓力測(cè)試舟奠。
當(dāng)然對(duì)于移動(dòng)APP測(cè)試房维,monkey測(cè)試出了壓力測(cè)試外沼瘫,也可以做做簡(jiǎn)單的機(jī)型配適咙俩,就是測(cè)試App是否會(huì)出現(xiàn)crash等異常耿戚,以此來判讀其釋放與機(jī)型適配阿趁,可以發(fā)現(xiàn)程序無響應(yīng)問題和崩潰問題膜蛔。
接下來簡(jiǎn)單說說:
Monkey程序由Android系統(tǒng)自帶脖阵,使用Java語言寫成皂股,在Android文件系統(tǒng)中的存放路徑是:/system/framework/monkey.jar独撇;
Monkey.jar程序是由一個(gè)名為“monkey”的Shell腳本來啟動(dòng)執(zhí)行屑墨,shell腳本在Android文件系統(tǒng)中的存放路徑是:/system/bin/monkey;
特征
1卵史、測(cè)試的對(duì)象僅為應(yīng)用程序包战转,有一定的局限性以躯。
2槐秧、Monky測(cè)試使用的事件流數(shù)據(jù)流是隨機(jī)的忧设,不能進(jìn)行自定義刁标。
3、可對(duì)MonkeyTest的對(duì)象膀懈,事件數(shù)量,類型谨垃,頻率等進(jìn)行設(shè)置。
這樣就可以通過在CMD窗口中執(zhí)行: adb shell monkey{+命令參數(shù)}來進(jìn)行Monkey測(cè)試了刘陶。
基本使用
1.進(jìn)入monkey
命令:adb shell/system/bin/monkey
2.運(yùn)行monkey
命令:adb shell monkey ,是指隨機(jī)發(fā)送事件數(shù)
adb shell monkey 100匙隔,運(yùn)行monkey并執(zhí)行了100件隨機(jī)事件疑苫。
3. monkey常規(guī)類命令
adb shell monkey -h顯示monkey參數(shù)幫助信息usage
adb shell monkey -v打印出日志信息纷责,每個(gè)-v將增加反饋信息的級(jí)別捍掺,最多支持3個(gè)-v
4. monkey事件類命令
adb shell monkey -f
讓monkey運(yùn)行指定monkey腳本碰逸,為測(cè)試腳本名乡小,是指循環(huán)次數(shù)饵史。
adb shell monkey -s
可以重復(fù)之前的隨機(jī)操作,-s后接隨機(jī)數(shù)的生成器的seed值胳喷。
adb shell monkey --throttle
表示每個(gè)事件之間的固定延遲事件,時(shí)間的單位為ms夭织,若后面不接時(shí)間,monkey將不會(huì)延遲
事件百分比
adb shell monkey --ptc-touch
設(shè)定觸摸事件的百分比
adb shell monkey --ptc-motion
設(shè)定動(dòng)作事件的百分比
adb shell monkey --ptc-trackball
設(shè)定軌跡球事件的百分比
adb shell monkey --ptc-nav 設(shè)定基本導(dǎo)航事件的百分比
adb shell monkey --ptc-majornav
設(shè)定主要導(dǎo)航事件的百分比
adb shell monkey --ptc-syskeys
設(shè)定按鍵事件的百分比
adb shell monkey --ptc-appswitch
設(shè)定啟動(dòng)事件的百分比
adb shell monkey --ptc-anyevent
其他類型事件的百分比尊惰,包括keypress泥兰、不常用button以及其他未提及事件
5. monkey約束類命令
adb shell monkey -p
,測(cè)試一個(gè)或多個(gè)包名题禀,每個(gè)-p對(duì)應(yīng)一個(gè)包。
adb shell monkey -p
迈嘹,測(cè)試一個(gè)或多個(gè)類別削彬。
6. monkey調(diào)試類命令
adb shell monkey --dbg-no-events
監(jiān)視應(yīng)用程序所調(diào)用的包之間的轉(zhuǎn)換
adb shell monkey --hprof
在事件序列前后立即生成profiling report
adb shell monkey --ignore-crashes
讓monkey在應(yīng)用崩潰或異常后繼續(xù)發(fā)送事件直到計(jì)數(shù)完成
adb shell monkey --ignore-timeouts
讓monkey在任何超時(shí)錯(cuò)誤發(fā)生后繼續(xù)發(fā)送事件直到計(jì)數(shù)完成
adb shell monkey
--ignore-security-exceptions 讓monkey在應(yīng)用權(quán)限錯(cuò)誤發(fā)生后繼續(xù)發(fā)送事件直到計(jì)數(shù)完成
adb shell monkey --kill-process-after-error
讓monkey因?yàn)閼?yīng)用發(fā)生錯(cuò)誤而停止時(shí)秀仲,將會(huì)通知系統(tǒng)停止發(fā)送錯(cuò)誤進(jìn)程
adb shell monkey --monitor-native-crashes
讓監(jiān)視并報(bào)告monkey運(yùn)行時(shí)Android系統(tǒng)native code的崩潰事件
adb shell monkey --wait-dbg
暫停執(zhí)行中的monkey,直到有調(diào)試器與它連接
7. monkey API
軌跡球事件
DispatchTrackball(long downTime,long eventTime, int action, float x, float y,float pressure, float size, int metaState, float xPrecision, float yPrecision,int device, int edgeFlags)
輸入字符串事件
DispatchString(String text)
點(diǎn)擊事件
DispatchPointer(long downTime,long eventTime, int action, float x, float y,float pressure, float size, int metaState, float xPrecision, float yPrecision,int device, int edgeFlags)
啟動(dòng)應(yīng)用
LaunchActivity(String pkg_name, Stringcl_name)
等待事件
UserWait(long sleeptime)
按下按鍵
DispatchPress(int keyCode)
長按按鍵
LongPress(int keyCode)
發(fā)送按鍵
DispatchKey(long downTime, long eventTime,int action, int code, int repeat, int metaState, int device, int scancode)