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

一、什麼是monkey?android

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

注:運行adb服務,須要搭建android sdk的環境,能夠參考我另外一篇《APP壓力穩定性測試之monkey環境搭建》完成。瀏覽器

 

二、Monkey的通常使用步驟app

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

2.肯定待測應用的包名。參考以下工具

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

  例圖,我開啓騰訊課堂的應用,輸入命令後,獲得包名爲com.tencent.eduui

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

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

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

 

三、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

 

 

四、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 >>後面是執行的命令。

 

<常見API>

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軸的座標)。  

 

<腳本舉例>

要求:打開瀏覽器,輸入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

 

五、補充小知識:

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問題

 

~~更多問題歡迎你們留言,也歡迎加右上角羣號一塊兒討論~~

相關文章
相關標籤/搜索