這段時間工作上出現變動,接觸到Monkey測試,在這做個總結。
Monkey是一個在安卓上測試的工具包,功能實現不復雜,花了幾個小時擼了一遍原始碼,將原始碼解讀和蒐集到的資訊彙總一下。
adb shell
,或者直接進入 shell 並輸入 Monkey 命令。所以需要先安裝SDK以支援adb命令$ adb shell monkey [options] <event-count>
如果未指定任何選項,Monkey 將以靜默(非詳細)模式啟動,並將事件傳送到目標上安裝的任何(及所有)軟體包。
下面是一個更典型的命令列,它會啟動您的應用並向其傳送 500 個偽隨機事件:
$ adb shell monkey -p your.package.name -v 500
# Script to start "monkey" on the device, which has a very rudimentary # shell. # base=/system export CLASSPATH=$base/framework/monkey.jar trap "" HUP for a in "$@"; do echo " bash arg:" $a done exec app_process $base/bin com.android.commands.monkey.Monkey "$@"
型別
|
MonkeyEvent實現
|
備註
|
key事件
|
MonkeyKeyEvent
|
|
touch事件
|
MonkeyTouchEvent
|
繼承自MonkeyMotionEvent,還支援多次touch事件(根據引數個數判斷)
|
trackball事件
|
MonkeyTrackballEvent
|
繼承自MonkeyMotionEvent
|
wait事件
|
MonkeyWaitEvent
|
sleep,模擬操作間有間隔
|
profileWait事件
|
MonkeyWaitEvent
|
|
rotation事件
|
MonkeyRotationEvent
|
|
tap事件
|
MonkeyTouchEvent
|
生成ACTION_DOWN和ACTION_UP 2個事件
|
pressAndHold事件
|
MonkeyTouchEvent
|
生成ACTION_DOWN和ACTION_UP 2個事件,
兩個事件之間存在 pressDuration 的wait時間
|
drag事件
|
MonkeyTouchEvent
|
生成ACTION_DOWN和ACTION_UP 2個事件,
兩個事件之間多次ACTION_MOVE事件
|
pinchAndZoom事件
|
MonkeyTouchEvent
|
生成ACTION_DOWN和ACTION_UP 2個事件,
兩個事件之間多次ACTION_MOVE、
ACTION_POINTER_DOWN、
ACTION_POINTER_INDEX_SHIFT事件
|
flip事件
|
MonkeyFlipEvent
|
鍵盤事件
|
launch事件
|
MonkeyActivityEvent
|
|
wakeUp事件
|
MonkeyActivityEvent、
MonkeyKeyEvent
|
涉及鎖屏、解鎖等事件
|
launchInstrumentation事件
|
MonkeyInstrumentationEvent
|
|
keypress事件
|
MonkeyKeyEvent
|
生成ACTION_DOWN和ACTION_UP 2個事件,並攜帶引數keyCode,
兩個事件之間無時間間隔
|
longpress事件
|
MonkeyKeyEvent
|
生成ACTION_DOWN和ACTION_UP 2個事件,並攜帶引數KEYCODE_DPAD_CENTER,
兩個事件之間存在 2ms 的wait時間
|
powerLog事件
|
MonkeyPowerEvent
|
The power log event is mainly for the automated power framework
|
writeLog事件
|
MonkeyPowerEvent
|
無參
|
runCmd事件
|
MonkeyCommandEvent
|
執行shell命令
|
dispatchString事件
|
MonkeyCommandEvent
|
通過shell命令傳入引數
|
StartCaptureFramerate事件
|
MonkeyGetFrameRateEvent
|
引數:start
|
EndCaptureFramerate事件
|
MonkeyGetFrameRateEvent
|
引數:end+輸入引數
|
StartCaptureAppFramerate事件
|
MonkeyGetAppFrameRateEvent
|
引數:start+app
|
EndCaptureAppFramerate事件
|
MonkeyGetAppFrameRateEvent
|
引數:end+app+label
|
原生的Monkey雖然功能已經很強大,但依然存在一些不足,比如:
改進的思考點:
技術牛逼,技術就是讓人無腦操作。 --- me