06.25 APP壓力穩定性測試之monkey入門

1、什麼是monkey?

Monkey是一個命令行工具,使用安卓調試橋(adb)來運行它,模擬用戶觸摸屏幕、滑動Trackball、按鍵等隨機事件流來對設備上的程序進行壓力測試,檢測程序多久的時間會發生異常,可以根據獲取的log信息進行修復。

注:運行adb服務,需要搭建android sdk的環境,可以參考我另一篇《APP壓力穩定性測試之monkey環境搭建》完成。

2、Monkey的一般使用步驟

1.先確認設備(模擬器或者真機)是否連接成功。命令:adb devices,出現設備號則表示連接成功

2.確定待測應用的包名。參考如下

1)打開待測應用後,輸入命令:adb shell dumpsys activity | find "mFocusedActivity"

例圖,我開啟騰訊課堂的應用,輸入命令後,得到包名為com.tencent.edu

APP壓力穩定性測試之monkey入門

2)adb shell進入shell界面,通過查看data/data下的程序包,根據關鍵字查找包名

3.執行monkey測試命令:adb shell monkey -p com.tencent.edu -v -v 200

這個命令的意思就是,向騰訊課堂app發送200次隨機事件流操作,且打印日誌

3、Monkey的常見命令

-help 查看monkey用法

命令格式:adb shell monkey [限制命令 參數值][事件名 百分比] 事件次數

-p <allowed-package-name>

用於約束限制,用此參數指定一個或多個包。指定包之後,Monkey將只允許系統啟動指定的APP。如果不指定包,Monkey將允許系統啟動設備中的所有APP。指定多個包,使用多個-p,一個-p後面接一個包名。

例: adb shell monkey -p com.android.browser -p com.tencent.edu -v 100

-v 用於指定反饋信息級別(信息級別就是日誌的詳細程度),總共分3個級別

-v,日誌級別 Level0;

-v -v,日誌級別 Level 1;

-v -v -v,日誌級別 Level 2;

要查看級別最高的日誌,例:adb shell monkey -p com.tencent.edu -v -v -v 100

-s 用於指定偽隨機數生成器的seed值,如果seed相同,則兩次Monkey測試所產生的事件序列也相同的。一般測試過程中出現崩潰,可以通過seed值來完成復現。

--throttle 用於指定用戶操作(即事件)間的時延,單位是毫秒;

--randomize-throttle 用這個參數必須與--throttle 綁定使用。用於在事件之間插入隨機延遲,隨機延遲範圍為0到throttle設置的時間,單位為毫秒;

例:adb shell monkey -p com.tencent.edu --throttle 500 --randomize-throttle 100

--pkg-whitelist-file 白名單,後面接txt文件,指定白名單參數後只測試白名單的應用程序

--pkg-blacklist-file 黑名單,後面接txt文件,指定黑名單參數後,避開黑名單的應用程序

例:adb shell monkey --pkg-whitelist-file /data/local/tmp/whitelist.txt 100

注:黑白名單命令不能同時使用

Monkey百分比事件

0:點擊事件百分比,即參數--pct-touch

1:滑動事件百分比,即參數--pct-motion

2:縮放事件百分比,即參數--pct-pinchzoom

3:軌跡球事件百分比,即參數--pct-trackball

4:屏幕旋轉事件百分比,即參數--pct-rotation

5:基本導航事件百分比,即參數--pct-nav

6:主要導航事件百分比,即參數--pct-majornav

7:系統按鍵事件百分比,即參數--pct-syskeys

8:Activity啟動事件百分比,即參數--pct-appswitch

9:鍵盤喚出隱藏事件百分比,即參數--pct-flip

10:其他事件百分比,即參數--pct-anyevent

例:adb shell monkey -p com.tencent.edu --pct-touch 10 -v -v 100

APP壓力穩定性測試之monkey入門

4、MonkeyScript

MonkeyScript是monkey的腳本語言,是一組可以被Monkey識別的命令集合,可以幫我們完成一系列的被固定的重複性操作。

腳本優勢:簡單、快捷、不需要藉助任何工具,只是運行一個腳本文件

腳本缺點:只能簡單實現座標、按鍵等基本操作(根據像素點來進行操作)

#頭文件、控制monkey發送消息的參數

type=raw events

count=10

speed=1.0

#以下為monkey命令

start data >>

LaunchActivity(pkg_name,activity)

DispatchPress(KEYCODE_ENTER)

DispatchPress(KEYCODE_HOME)

---->前三行是腳本頭。count為腳本中包含的指令數目。speed為執行速度。

---->start data >>後面是執行的命令。

LaunchActivity(pkg_name, cl_name): 啟動應用的Activity。參數:包名和啟動的Activity。

Tap(x, y, tapDuration): 模擬一次手指單擊事件。參數:x,y為控件座標,tapDuration為點擊的持續時間,此參數可省略。

DispatchPress(keyName): 按鍵。注:keyName值可以百度android keycode列表獲取

RotateScreen(rotationDegree, persist): 旋轉屏幕。 參數:rotationDegree為旋轉角度, e.g. 1代表90度;persist表示旋轉之後是否固定,0表示旋轉後恢復,非0則表示固定不變。

DispatchFlip(true/false): 打開或者關閉軟鍵盤。

LongPress(): 長按2秒。

PressAndHold(x, y, pressDuration): 模擬長按事件。

DispatchString(input): 輸入字符串。

Drag(xStart, yStart, xEnd, yEnd, stepCount): 用於模擬一個拖拽操作。

PinchZoom(x1Start, y1Start, x1End, y1End, x2Start, y2Start, x2End, y2End, stepCount): 模擬縮放手勢。

UserWait(sleepTime): 休眠一段時間

DeviceWakeUp(): 喚醒屏幕。

ProfileWait: 等待5秒。

---->在android sdk路徑-tools下,使用sdk中的工具hierarchyviewer.bat或者uiautomatorviewer.bat,獲取API方法中控件位置(X,Y軸的座標)。

APP壓力穩定性測試之monkey入門

APP壓力穩定性測試之monkey入門

要求:打開瀏覽器,輸入www.ningmengban.com, 退出瀏覽器。這個步驟進行重複壓力測試。

---->腳本文件browser.txt編寫內容如下:

#頭文件、控制monkey發送消息的參數

type=raw events

count=10

speed=1.0

#以下為腳本正文

start data >>

#1.打開瀏覽器

LaunchActivity(com.android.browser,com.android.browser.BrowserActivity)

ProfileWait()

#2.清空網址

Tap(223,146)

ProfileWait()

DispatchPress(112)

ProfileWait()

#3.輸入網址

DispatchString(www.ningmengban.com)

ProfileWait()

#4.確認,載入網址

DispatchPress(KEYCODE_ENTER)

ProfileWait()

#5.完成退出瀏覽器

DispatchPress(KEYCODE_HOME)

ProfileWait()

---->將browser.txt文件push到手機中

adb push D:\\browser.txt data/local/tmp

D:\\browser.txt 為本地腳本文件路徑及名稱,data/local/tmp為手機路徑

---->運行腳本

adb shell monkey -f data/local/tmp/browser.txt -v -v 200

5、補充小知識:

1>如何安裝apk?

adb install xxx.apk -----為了獲取apk的安裝包所在地址,可以直接把apk拖到cmd的窗口獲取,返回success就說明安裝成功了!

2>如何將本地文件上傳到手機端?

adb push

例,將本地的白名單上傳到手機端,adb push F:\\whitelist.txt data/local/tmp

3>如何將日誌保存到PC端?

adb shell monkey -v -v -v 1000 > 本機地址

例:adb shell monkey -v -v -v 1000 > d:\\monkey.txt

4>日誌查看補充

---->先把日誌輸出到本地

---->注意觀察switch後面的內容,一般錯誤都會顯示在這個後面

---->ANR問題:日誌中搜索ANR關鍵字

---->奔潰問題:在日誌中搜索Exception問題


分享到:


相關文章: