本章節主要講解“Monkey事件”的詳細介紹,我們先從Monkey的簡單介紹說起。
Monkey簡單介紹
monkey是android自帶系統自帶的程式,可以生成偽隨機使用者事件來模擬單擊、雙擊、輸入、滑動、拖動、觸控、手勢等操作,可以對正在開發中的app程式進行隨機壓力測試和穩定性測試。
Monkey事件型別詳解
Monkey所執行的隨機事件流中包含11大事件,分別是觸控事件、手勢事件、二指縮放事件、軌跡事件、螢幕旋轉事件、基本導航事件、主要導航事件、系統按鍵事件、啟動Activity事件、鍵盤事件、其他型別事件。每種事件具體解釋如下:
1.觸控事件(touch)
觸控事件是指在螢幕某處按下並抬起的操作,可透過--pct-touch引數來配置其事件百分比。從Monkey執行該事件對外輸出的日誌可以看到。 該事件由一組Touch(ACTION_DOWN)和Touch(ACTION_UP)事件組成,在手機上看到實際操作類似於點選。
2.手勢事件(motion)
手勢事件是指在螢幕某處的按下、隨機移動、抬起的操作,即直線滑動操作。可透過--pct-motion引數來配置其事件百分比。
該事件是由一個ACTION_DOWN事件、一系列ACTION_MOVE事件和一個ACTION_UP事件組成的,在手機上看到的實際操作是一個沒有拐彎的直線滑動操作。
3.二指縮放事件(pinchzoom)
二指縮放事件是指在螢幕上的兩處同時按下,並同時移動,最後同時抬起的操作,即智慧機上的放大縮小手勢操作。可透過--pct-pinchzoom引數來配置其事件百分比。從Monkey執行該事件對外輸出的日誌可以看到:
該事件起始是一個ACTION_DOWN事件和一個ACTION_POINTER_DOWN事件,即模擬兩個手指同時點下;中間是一系列的ACTION_MOVE事件,即兩個手指同時在螢幕上直線滑動;結束是由一個ACTION_POINTER_UP事件和一個ACTION_UP事件組成的,即兩個手指同時放開。
4.軌跡事件(trackball)
軌跡事件是由一個或多個隨機的移動組成的,有時會伴隨著點選。很早之前的Android手機帶有軌跡球,這個事件就是模擬的軌跡球的操作。現在的手機幾乎都沒有軌跡球,但軌跡球事件中包含曲線滑動操作,如果被測程式需要曲線滑動時可以選用此引數。可透過--pct-trackball引數來配置其事件百分比。從Monkey執行該事件對外輸出的日誌可以看到:
該事件是由一系列的Trackball(ACTION_MOVE)事件組成的,觀察手機上的操作,即為一系列的曲線滑動操作。
5.螢幕旋轉事件(rotatio)
螢幕旋轉事件是一個隱藏事件,在Android官方文件中並沒有記錄這個事件。它其實是模擬的Android手機的橫屏和豎屏切換。可透過—pct-rotation引數來配置其事件百分比。從Monkey執行該事件對外輸出的日誌可以看到: [程式碼] 該事件由一個rotation事件組成,其中degree表示的是旋轉方向,順時針旋轉,0表示旋轉90度的方向,1表示旋轉180度的方向,2表示旋轉270度的方向,3表示旋轉360度的方向。在執行過程中,可以看到手機螢幕在橫豎屏之間不斷地切換。
6.基本導航事件(nav)
基本導航事件是指點選方向輸入裝置的上、下、左、右按鍵的操作,現在手機上很少有上、下、左、右按鍵,這種事件一般用得比較少。可透過--pct-nav引數來配置其事件百分比。從Monkey執行該事件對外輸出的日誌可以看到:
該事件是由一個Key(ACTION_DOWN)和一個Key(ACTION_UP)組成的,點選的就是上、下、左、右四個方向按鍵。
7.主要導航事件(majornav)
主要導航事件是指點選“主要導航”按鍵的操作,這些按鍵通常會導致UI介面中的動作,如鍵盤的中間鍵、回退按鍵、選單按鍵。可透過--pct-majornav引數來配置其事件百分比。從Monkey執行該事件對外輸出的日誌可以看到: [程式碼] 該事件是由一個Key(ACTION_DOWN)和一個Key(ACTION_UP)組成的,點選的按鍵就是中間鍵和選單鍵。
8.系統按鍵事件(syskeys)
系統按鍵事件是指點選系統保留使用的按鍵的操作,如點選Home鍵、返回鍵、音量調節鍵等。可透過--pct-syskeys引數來配置其事件百分比。從Monkey執行該事件對外輸出的日誌可以看到: [程式碼] 該事件是由一個Key(ACTION_DOWN)和一個Key(ACTION_UP)組成的,點選的就是上面說到的幾個系統按鍵。
9.啟動Activity事件(appswitch)
啟動Activity事件是指在手機上啟動一個Activity的操作。在隨機的時間間隔中,Monkey將執行一個startActivity()方法,作為最大限度上覆蓋被測包中全部Activity的一種方法。可透過--pct-appswitch引數來配置其事件百分比。從Monkey執行該事件對外輸出的日誌可以看到: [程式碼] 該事件是由一個Switch操作組成的,從手機上看,上面的操作實際是打開了com.android.settings這個應用的一個com.android.settings.Settings的Activity介面。
10.鍵盤事件(flip)
鍵盤事件主要是一些與鍵盤相關的操作。比如點選輸入框、鍵盤彈起、點選輸入框以外區域、鍵盤收回等。可透過--pct-flip引數來配置其事件百分比。從Monkey執行該事件對外輸出的日誌可以看到: [程式碼] 如日誌所示,這裡主要是鍵盤的開啟和關閉操作。
11.其他型別事件(anyevent)
其他型別事件包括了除前面提到的10種事件外其他所有的事件,如按鍵、其他不常用的裝置上的按鈕等。可透過--pct-anyevent引數來配置其事件百分比。從Monkey執行該事件對外輸出的日誌可以看到: [程式碼] 該事件是由一個Key(ACTION_DOWN)和一個Key(ACTION_UP)組成的,點選的按鍵就是其他的一些系統按鍵,如字母按鍵、數字按鍵等。因為現在手機很少帶字母按鍵或數字按鍵,所以這個事件一般使用得比較少。
啟動monkey命令步驟
連線移動裝置 -- 連線成功後輸入命令 -- adb shell -- 進入指定目錄cd /system/bin -- 輸入 monkey命令
命令:
1 adb shell monkey 100 (對模擬器進行隨機事件)
2 adb shell monkey -v 100 ( -v 列印日誌)
3 adb shell monkey -s 666 100 (偽隨機數種子值)對隨機事件編碼,可以再次複習這才隨機。
4 adb shell monkey -f /mnt/sdcard/test1 執行指定指令碼
5 adb shell monkey --throttle 3000 5 設定間隔 每一個指定之間加上事件間隔
6 adb shell monkey -v-v --pct-touch 100 200 調整觸控事件百分比
如何指定Monkey事件
執行monkey時,如果不指定時間型別,系統會隨機生成各類事件,事件百分比不一。
Monkey命令如果要指定事件型別使用--pct-事件名稱 事件百分比 的方式。
例如:
adb shell monkey -p cn.mopon.film --pct-touch 20 --pct-pinchzoom 20 --pct-motion 15 --pct-appswitch 30 1000。
指定多個事件百分比時,各百分比之和不能超過100%。如果指定了事件型別百分比,這些指定事件百分比加起來等於100 ,則只生成指定事件。如果加起來小於100,假設加起來等於80,則沒有指定的事件會隨機生成,且各未指定事件百分比數加起來等於20.如果指定事件百分比加起來大於100,則執行報錯。