Monkey 測(cè)試簡(jiǎn)介
存放路徑:Monkey程序是Android系統(tǒng)自帶的,由Java語(yǔ)言寫(xiě)成,在Android文件系統(tǒng)中的存放路徑是: /system/framework/monkey.jar。
大致操作流程:通過(guò)名為“monkey”的Shell腳本去啟動(dòng)Monkey.jar程序(shell腳本在Android文件系統(tǒng)中 的存放路徑是:/system/bin/monkey),在你指定的APP應(yīng)用上模擬用戶點(diǎn)擊,滑動(dòng),輸入等操作以極快的速度來(lái)對(duì)設(shè)備程序進(jìn)行壓力測(cè)試,檢測(cè)程序是否會(huì)發(fā)生異常,然后通過(guò)日志進(jìn)行排錯(cuò)。
主要目的:測(cè)試app 是否會(huì)是否會(huì)Crash。
操作命令格式:adb shell monkey {+命令參數(shù)}
獲取Android包名方法:(注意:請(qǐng)開(kāi)啟手機(jī)開(kāi)發(fā)者模式,請(qǐng)開(kāi)啟手機(jī)USB調(diào)試模式)
查看正在運(yùn)行的程序的包名:adb shell dumpsys activity activities | sed -En -e '/Running activities/,/Run #0/p' (例如:我清理手機(jī)后臺(tái)之后,開(kāi)啟了QQ,輸入命令之后,就會(huì)出現(xiàn)QQ的進(jìn)程,框的地方就是qq的包名)
monkey常用操作命令簡(jiǎn)介
-p 包名:指定應(yīng)用程序。例如:adb shell monkey -p 包名 事件總數(shù)
-v:打印log級(jí)別,-v越多日志信息越詳細(xì),最多支持3個(gè)。例如:adb shell monkey -p 包名 -v -v -v 事件總數(shù)
-s:偽隨機(jī)數(shù)生成器的 seed 值,通俗的說(shuō)就是個(gè)標(biāo)記,后面跟數(shù)字,例如:執(zhí)行adb shell monkey -s 1 -p 包名 事件總數(shù),這個(gè)我標(biāo)記了-s 1,命令操作完之后,我發(fā)現(xiàn)有日志報(bào)錯(cuò),我想重新執(zhí)行這個(gè)monkey操作,那你就可以繼續(xù)執(zhí)行這個(gè)命令,排錯(cuò)時(shí)常用。
-f:后接測(cè)試腳本名,例如:adb shell monkey -f 腳本名 事件總數(shù)
-throttle:翻譯減速的意思,后面接時(shí)間,單位為ms,,表示事件之間的固定延遲,如果不接該項(xiàng),monkey將不會(huì)延遲,例如:adb shell monkey --throttle 500 -p 包名 事件總數(shù)
--pct-事件類(lèi)別 11個(gè)事件百分比控制(有的是9種事件,沒(méi)有--pct-pinchzoom,--pct-rotation事件)由安卓SDK決定
11種事件,按順序羅列的
--pct-touch {+百分比}:0
翻譯觸摸,觸摸事件泛指發(fā)生在某一位置的一個(gè)down-up事件,點(diǎn)擊
--pct-motion {+百分比}:1
翻譯動(dòng)作,動(dòng)作事件泛指從某一位置接下(即down事件)后經(jīng)過(guò)一系列偽隨機(jī)事件后彈出(即up事件)
--pct-pinchzoom {+百分比}:2
翻譯二指縮放,智能機(jī)上的放大縮小手勢(shì)操作事件
--pct-trackball {+百分比}: 3
翻譯軌跡,軌跡事件包括一系列的隨機(jī)移動(dòng),以及偶爾跟隨在移動(dòng)后面的點(diǎn)擊事件
--pct-rotation {+百分比}:4
翻譯屏幕旋轉(zhuǎn),橫屏豎屏事件
--pct-nav {+百分比}:5
翻譯基本導(dǎo)航,基本導(dǎo)航事件主要來(lái)自方向輸入設(shè)備的上、下、左、右事件
--pct-majornav {+百分比}:6
翻譯主要導(dǎo)航,主要導(dǎo)航事件通常指引發(fā)圖形界面的一些動(dòng)作,如鍵盤(pán)中間按鍵、返回按鍵、菜單按鍵等
--pct-syskeys {+百分比}:7
翻譯系統(tǒng)按鍵,系統(tǒng)按鍵事件通常指僅供系統(tǒng)使用的保留按鍵,HOME鍵、BACK鍵、撥號(hào)鍵、掛斷鍵、音量鍵等
--pct-appswitch {+百分比}:8
翻譯應(yīng)用啟動(dòng),應(yīng)用啟動(dòng)事件(activity launches)即打開(kāi)應(yīng)用,通過(guò)調(diào)用startActivity()方法最大限度地開(kāi)啟該package下的所有應(yīng)用
--pct-flip {+百分比}:9
翻譯翻轉(zhuǎn),鍵盤(pán)輕彈百分比,如點(diǎn)擊輸入框,鍵盤(pán)彈起,點(diǎn)擊輸入框以外區(qū)域,鍵盤(pán)收回
--pct-anyevent {+百分比}:10
翻譯其他類(lèi)型,其他類(lèi)型事件指上文中未涉及的所有其他事件,keypress、不常用的button等
百分比控制以及使用
首先注意一點(diǎn),這個(gè)Event percentages在不同版本的SDK版本中順序可能會(huì)不一樣。
如果在monkey參數(shù)中不指定事件參數(shù),這些動(dòng)作都是隨機(jī)分配的,11個(gè)動(dòng)作其分配的百分比之和為100%,通過(guò)添加命令選項(xiàng)來(lái)控制每個(gè)事件的百分比。
添加事件百分比之后的情況,舉例添加--pct-touch事件百分比為100:
命令: adb shell monkey -v -p 包名 --pct-touch 100 100
結(jié)果:
說(shuō)明:尷尬啊,我這個(gè)vent percentages竟然有12種,多了一種什么我也不知道,但我敢肯定這跟SDK版本有關(guān)系,想知道的同學(xué)可以自己從安卓SDK中反編譯出monkey源碼,通過(guò)查看源碼中的MonkeySourceRandom.java文件獲知!查出來(lái)的同學(xué)可以告知我下。
說(shuō)明:尷尬啊,我這個(gè)vent percentages竟然有12種,多了一種什么我也不知道,但我敢肯定這跟SDK版本有關(guān)系,想知道的同學(xué)可以自己從安卓SDK中反編譯出monkey源碼,通過(guò)查看源碼中的MonkeySourceRandom.java文件獲知!查出來(lái)的同學(xué)可以告知我下,我想做伸手黨
-ignore-crashes:翻譯忽略崩潰,當(dāng)應(yīng)用程序崩潰或發(fā)生失控異常時(shí),monkey將繼續(xù)運(yùn)行直到計(jì)數(shù)完成。如果不設(shè)置此項(xiàng),monkey遇到上述崩潰或異常將停止運(yùn)行。
-ignore-timeouts:翻譯忽略超時(shí),當(dāng)應(yīng)用程序發(fā)生任何超時(shí)錯(cuò)誤(如ANR,即Application Not Responding)時(shí),monkey將繼續(xù)運(yùn)行直到計(jì)數(shù)完成。如果不設(shè)置此項(xiàng),monkey 遇到此類(lèi)超時(shí)將停止運(yùn)行。
monkey測(cè)試中,如何終止運(yùn)行:
方法一:
新建一個(gè)窗口
執(zhí)行: adb shell ,
再執(zhí)行ps | grep monkey,返回來(lái)的第一個(gè)數(shù)字,即是monkey的進(jìn)程號(hào)
然后kill pid 進(jìn)程號(hào)。如圖
對(duì)手機(jī)進(jìn)行重啟
新建一個(gè)窗口
執(zhí)行adb reboot
log日志導(dǎo)出
保存到電腦上。
執(zhí)行:adb shell monkey -p 包名 -v 1000 > /Users/weixiangyang/Desktop/monkey.txt
例如:保存到電腦上標(biāo)準(zhǔn)流與錯(cuò)誤流分開(kāi)保存,分別命名為info.txt,error.txt
info.txt:此文件在手機(jī)上的SDCARD中,主要記錄了MONKEY測(cè)試時(shí)發(fā)送的各種事件,如觸摸事件的位置等等。
error.txt:此文件在手機(jī)上的SDCARD中,主要記錄了MONKEY測(cè)試時(shí)產(chǎn)生的一些ANR、強(qiáng)制關(guān)閉等異常。 執(zhí)行:adb shell monkey -p 包名 -v 1000 1>/Users/weixiangyang/Desktop/info.txt 2>/Users/weixiangyang/Desktop/error.txt
例如:保存到電腦上并命名為monkey.txt
保存到手機(jī)上。注意:手機(jī)要root
例如:保存到手機(jī)上并命名為monkey.txt
執(zhí)行:
adb shell說(shuō)明:進(jìn)入adb shell后就相當(dāng)于進(jìn)入linux的root下面,但是沒(méi)有權(quán)限在里面創(chuàng)建文件,所以手機(jī)要root
monkey -p 包名 -v 1000 > /mnt/sdcard/monkey.txt
注意:我的 adb shell 跟monkey XXX是分開(kāi)執(zhí)行的,分兩行?。?!
例如:保存到電腦上標(biāo)準(zhǔn)流與錯(cuò)誤流分開(kāi)保存,分別命名為info.txt,error.txt
執(zhí)行:adb shell monkey -p 包名 -v 1000 1>/mnt/sdcard/info.txt 2>/mnt/sdcard/error.txt
作者:西邊人,西說(shuō)測(cè)試
程序爬蟲(chóng)抓取有用資源共享給大家
公眾號(hào)請(qǐng)搜索(軟件測(cè)試資源站)。
關(guān)注后,回復(fù)【資源包】獲取如下內(nèi)容,
測(cè)試資料、測(cè)試工具、Python、效率軟件、自動(dòng)化測(cè)試報(bào)告、梯子 等