Monkey所執行的隨機事件流中包含11大事件,分別是觸摸事件、手勢事件、二指縮放事件、軌跡事件、屏幕旋轉事件、基本導航事件、主要導航事件、系統按鍵事件、啓動Activity事件、鍵盤事件、其餘類型事件。Monkey經過這11大事件來模擬用戶的常規操做,對手機App進行穩定性測試。下面讓咱們來詳細瞭解這11大事件。
1.觸摸事件
觸摸事件是指在屏幕某處按下並擡起的操做,可經過--pct-touch參數來配置其事件百分比。從Monkey執行該事件對外輸出的日誌能夠看到:
:Sending Touch (ACTION_DOWN): 0, (444.0,1716.0)
:Sending Touch (ACTION_UP): 0, (447.18365,1728,0087)
該事件由一組Touch(ACTION_DOWN)和Touch(ACTION_UP)事件組成,在手機上看到實際操做相似於點擊。
2.手勢事件
手勢事件是指在屏幕某處的按下、隨機移動、擡起的操做,即直線滑動操做。可經過--pct-motion參數來配置其事件百分比。從Monkey執行該事件對外輸出的日誌能夠看到:
:Sending Touch (ACTION_DOWN): 0:(282.0,750.0)
:Sending Touch (ACTION_MOVE): 0:(281.0507,745.5253)
:Sending Touch (ACTION_MOVE): 0:(274.9443,743.3276)
:Sending Touch (ACTION_MOVE): 0:(269.18774,738.50525)
:Sending Touch (ACTION_MOVE): 0:(260.14917,733.6212)
:Sending Touch (ACTION_UP): 0:(254.1414,730.6132)
該事件是由一個ACTION_DOWN事件、一系列ACTION_MOVE事件和一個ACTION_UP事件組成的,在手機上看到的實際操做是一個沒有拐彎的直線滑動操做。
3.二指縮放事件
二指縮放事件是指在屏幕上的兩處同時按下,並同時移動,最後同時擡起的操做,即智能機上的放大縮小手勢操做。可經過--pct-pinchzoom參數來配置其事件百分比。從Monkey執行該事件對外輸出的日誌能夠看到:
:Sending Touch (ACTION_DOWN): 0:(274.0,193.0)
:Sending Touch (ACTION_POINTER_DOWN 1): 0:(272.80875,198.17978) 1:(26.0,312.0)
:Sending Touch (ACTION_MOVE): 0:(251.31396,198.5104) 1:(24.973522,308.64676)
:Sending Touch (ACTION_MOVE): 0:(240.28494,202.44012) 1:(23.442032,307.8576)
:Sending Touch (ACTION_MOVE): 0:(221.90855,206.75597) 1:(22.903313,306.47507)
:Sending Touch (ACTION_MOVE): 0:(210.28592,212.24286) 1:(17.78174,303.11304)
:Sending Touch (ACTION_POINTER_UP 1): 0:(171.06334,236.1724) 1:(10.3147135,293.79877)
:Sending Touch (ACTION_UP): 0:(161.06638,240.22447)
該事件起始是一個ACTION_DOWN事件和一個ACTION_POINTER_DOWN事件,即模擬兩個手指同時點下;中間是一系列的ACTION_MOVE事件,即兩個手指同時在屏幕上直線滑動;結束是由一個ACTION_POINTER_UP事件和一個ACTION_UP事件組成的,即兩個手指同時放開。
4.軌跡事件
軌跡事件是由一個或多個隨機的移動組成的,有時會伴隨着點擊。很早以前的Android手機帶有軌跡球,這個事件就是模擬的軌跡球的操做。如今的手機幾乎都沒有軌跡球,但軌跡球事件中包含曲線滑動操做,若是被測程序須要曲線滑動時能夠選用此參數。可經過--pct- trackball參數來配置其事件百分比。從Monkey執行該事件對外輸出的日誌能夠看到:
:Sending Trackball (ACTION_MOVE): 0:(2.0,3.0)
:Sending Trackball (ACTION_MOVE): 0:(-1.0,4.0)
:Sending Trackball (ACTION_MOVE): 0:(2.0, -3.0)
該事件是由一系列的Trackball(ACTION_MOVE)事件組成的,觀察手機上的操做,即爲一系列的曲線滑動操做。
5.屏幕旋轉事件
屏幕旋轉事件是一個隱藏事件,在Android官方文檔中並無記錄這個事件。它實際上是模擬的Android手機的橫屏和豎屏切換。可經過--pct- rotation參數來配置其事件百分比。從Monkey執行該事件對外輸出的日誌能夠看到:
:Sending rotation degree=1, persist=false
:Sending rotation degree=3, persist=true
:Sending rotation degree=2, persist=true
:Sending rotation degree=0, persist=true
該事件由一個rotation事件組成,其中degree表示的是旋轉方向,順時針旋轉,0表示旋轉90度的方向,1表示旋轉180度的方向,2表示旋轉270度的方向,3表示旋轉360度的方向。在執行過程當中,能夠看到手機屏幕在橫豎屏之間不斷地切換。
6.基本導航事件
基本導航事件是指點擊方向輸入設備的上、下、左、右按鍵的操做,如今手機上不多有上、下、左、右按鍵,這種事件通常用得比較少。可經過--pct- nav參數來配置其事件百分比。從Monkey執行該事件對外輸出的日誌能夠看到:
:Sending Key (ACTION_DOWN): 19 // KEYCODE_DPAD_UP
:Sending Key (ACTION_UP): 19 // KEYCODE_DPAD_UP
:Sending Key (ACTION_DOWN): 20 // KEYCODE_DPAD_DOWN
:Sending Key (ACTION_UP): 20 // KEYCODE_DPAD_DOWN
:Sending Key (ACTION_DOWN): 21 // KEYCODE_DPAD_LEFT
:Sending Key (ACTION_UP): 21 // KEYCODE_DPAD_LEFT
:Sending Key (ACTION_DOWN): 22 // KEYCODE_DPAD_RIGHT
:Sending Key (ACTION_UP): 22 // KEYCODE_DPAD_RIGHT
該事件是由一個Key(ACTION_DOWN)和一個Key(ACTION_UP)組成的,點擊的就是上、下、左、右四個方向按鍵。
7.主要導航事件
主要導航事件是指點擊「主要導航」按鍵的操做,這些按鍵一般會致使UI界面中的動做,如5-way鍵盤的中間鍵、回退按鍵、菜單按鍵。可經過--pct-majornav參數來配置其事件百分比。從Monkey執行該事件對外輸出的日誌能夠看到:
:Sending Key (ACTION_DOWN): 23 // KEYCODE_DPAD_CENTER
:Sending Key (ACTION_UP): 23 // KEYCODE_DPAD_CENTER
:Sending Key (ACTION_DOWN): 82 // KEYCODE_MENU
:Sending Key (ACTION_UP): 82 // KEYCODE_MENU
該事件是由一個Key(ACTION_DOWN)和一個Key(ACTION_UP)組成的,點擊的按鍵就是中間鍵和菜單鍵。
8.系統按鍵事件
系統按鍵事件是指點擊系統保留使用的按鍵的操做,如點擊Home鍵、返回鍵、音量調節鍵等。可經過--pct-syskeys參數來配置其事件百分比。從Monkey執行該事件對外輸出的日誌能夠看到:
:Sending Key (ACTION_DOWN): 5 // KEYCODE_CALL
:Sending Key (ACTION_UP): 5 // KEYCODE_CALL
:Sending Key (ACTION_DOWN): 4 // KEYCODE_BACK
:Sending Key (ACTION_UP): 4 // KEYCODE_BACK
:Sending Key (ACTION_DOWN): 3 // KEYCODE_HOME
:Sending Key (ACTION_UP): 3 // KEYCODE_HOME
:Sending Key (ACTION_DOWN): 24 // KEYCODE_VOLUME_UP
:Sending Key (ACTION_UP): 24 // KEYCODE_VOLUME_UP
:Sending Key (ACTION_DOWN): 25 // KEYCODE_VOLUME_DOWN
:Sending Key (ACTION_UP): 25 // KEYCODE_VOLUME_DOWN
該事件是由一個Key(ACTION_DOWN)和一個Key(ACTION_UP)組成的,點擊的就是上面說到的幾個系統按鍵。
9.啓動Activity事件
啓動Activity事件是指在手機上啓動一個Activity的操做。在隨機的時間間隔中,Monkey將執行一個startActivity()方法,做爲最大限度上覆蓋被測包中所有Activity的一種方法。可經過--pct-appswitch參數來配置其事件百分比。從Monkey執行該事件對外輸出的日誌能夠看到:
:Switch: #Intent; action=android.intent.action.MAIN; category=android.intent.
category.LAUNCHER; launchFlags=0x10200000; component=com.android.settings/.
Settings; end
// Allowing start of Intent { act=android.intent.action.MAIN cat=[android.
intent.category.LAUNCHER] cmp=com.android.settings/.Settings } in package com.
android.settings
該事件是由一個Switch操做組成的,從手機上看,上面的操做實際是打開了com. android.settings這個應用的一個com.android.settings.Settings的Activity界面。
10.鍵盤事件
鍵盤事件主要是一些與鍵盤相關的操做。好比點擊輸入框、鍵盤彈起、點擊輸入框之外區域、鍵盤收回等。可經過--pct-flip參數來配置其事件百分比。從Monkey執行該事件對外輸出的日誌能夠看到:
:Sending Flip keyboardOpen=false
:Sending Flip keyboardOpen=true
如日誌所示,這裏主要是鍵盤的打開和關閉操做。
11.其餘類型事件
其餘類型事件包括了除前面提到的10種事件外其餘全部的事件,如按鍵、其餘不經常使用的設備上的按鈕等。可經過--pct-anyevent參數來配置其事件百分比。從Monkey執行該事件對外輸出的日誌能夠看到:
:Sending Key (ACTION_DOWN): 59 // KEYCODE_SHIFT_LEFT
:Sending Key (ACTION_UP): 59 // KEYCODE_SHIFT_LEFT
:Sending Key (ACTION_DOWN): 138 // KEYCODE_F8
:Sending Key (ACTION_UP): 138 // KEYCODE_F8
:Sending Key (ACTION_DOWN): 45 // KEYCODE_Q
:Sending Key (ACTION_UP): 45 // KEYCODE_Q
:Sending Key (ACTION_DOWN): 192 // KEYCODE_BUTTON_5
:Sending Key (ACTION_UP): 192 // KEYCODE_BUTTON_5
…
該事件是由一個Key(ACTION_DOWN)和一個Key(ACTION_UP)組成的,點擊的按鍵就是其餘的一些系統按鍵,如字母按鍵、數字按鍵等。由於如今手機不多帶字母按鍵或數字按鍵,因此這個事件通常使用得比較少。