目錄
4.3 monkey server 的使用----隱藏api
Monkey測試
1. monkey
有兩種啓動方式:
第一種方式:shell 端啓動
- 進入
adb shell
- 運行
"/system/bin"
路徑下的monkey
腳本
$ adb shell
# cd /system/bin
# monkey
第二種方式:直接 pc 啓動
直接通過以下的命令運行:
$ adb shell monkey [options] <event-count>
2 . monkey 的命令及其使用
monkey
的 option
操作都是根據具體的需求設定的,主要分爲五類,分別爲:
常規類、事件類、約束類、調試類和官方隱藏類參數。
2.1 monkey 的常規類命令
-h
: 顯示monkey
參數幫助信息 usage-v
: 打印出日誌信息,每個-v
將增加反饋信息的級別。命令格式爲:
$ adb shell monkey -v <event-count>
-v
越多日誌信息月詳細,不過目前最多支持 3 個 -v
,即:
* 0級: 除啓動提示、測試完成和最終結果外提供較少信息
* 1級: 提供較詳細測試信息,如逐個發送 Activity 的事件
* 2級: 提供更詳細安裝信息,如測試中被選中或爲被選中的 Activity
2.2 monkey 的事件類命令
-f
: 後接測試腳本名,表示要使用monkey
運行指定的monkey
腳本,命令示例:
$ adb shell monkey -f <scriptfile> <event-count>
$ abd shell monkey -f /mnt/sdcard/test 10
-s
: 後接隨機數生成器的 seed 值。如果使用相同的seed 值再次運行 monkey,將生成相同的事件序列,也就是說重複執行剛纔的隨機操作。
命令格式爲:
$ adb shell monkey -s <seed> <event-count>
-
-throttle
: 後接時間,單位爲 ms(<milliseconds>),表示事件之間的固定延遲(即執行每一個指令間隔的時間),如果不接該選項,monkey
將不會延遲。
命令格式:
$ adb shell monkey --throttle <milliseconds>
--ptc-motion
: 後接動作事件百分比。動作事件不單單指手勢操作,它泛指從某一個位置按下(即Down事件)後經過一系列僞隨機事件後彈起(即Up事件)。--ptc-trackball
: 後接軌跡球事件百分比。軌跡球事件包括一系列的隨機移動,以及偶爾跟隨在移動後面的點擊事件。--ptc-nav
: 後接基本導航事件百分比。 基本導航事件主要指來自方向輸入設備的上、下、左、右事件。--ptc-majornav
: 後接主要導航事件百分比。主要導航事件通常指引發圖形界面的一些動作,如 5-way 鍵盤中間按鍵、返回按鍵、菜單按鍵等。--ptc-syskeys
: 後接系統按鍵事件百分比。系統按鍵事件通常指僅供系統使用的保留按鍵,比如 home鍵,back鍵,撥號鍵等。--ptc-appswitch
: 後接應用啓動事件百分比。醫用啓動事件俗稱 打開應用,通過調用startActivity()
方法最大限度地開啓該 package 下的所有應用。--ptc-anyevent
: 後接其他類型事件百分比。除了上述提到的事件外全部都屬於其他事件。
2.3 monkey 的約束類命令
-p
: 後接一個或多個包名(<allowed-package-name>),如果應用需要訪問其他包裏面的 Activity,那相關的包也需要在此同時指定。如果不指定任何包,monkey
將允許系統啓動全部包裏的 Activity。 每一個 -p 對應一個包,指定多個包時每個包名前都需要加上 -p,如:
$ adb shell monkey -p <allowed-package-name> <event-count>
$ adb shell monkey -p com.csmijo.test 1000
--c
: 後接一個或多個類別名(即 <main-category> 參數),monkey
將只允許系統啓動這些類別中某個類別列出的 Activity。如果不指定任何類別,monkey 將選擇Intent.CATEGORY_LAUNCH
和Intent.CATEGORY_monkey
裏的 Activity。
2.4 monkey 調試類命令
--dbg-no-events
: 在設置此選項後,monkey 將進入初始啓動,進入到某個測試 Activity 中不會進一步生成事件。命令格式:
$ adb shell monkey --dbg-no-events <event-count>
-hprof
: 在設置此項後,將在monkey
事件序列前後立即生成profiling report
。 該選項將在 data/misc 中生成 5MB 大小的文件,慎用!--ignore-crashes
: 在設置此項後,當應用程序崩潰或者發生失控異常時,monkey
將繼續運行直到計數完成。如果不設置此選項,monkey
遇到上述崩潰或者異常將停止運行。--ignore-timeouts
: 在設置此選項後,當應用程序發生任何超時錯誤(如ANR)時,monkey
將繼續運行直到計數結束。如果不設置此選項,monkey
遇到此類超時對話框將停止運行。--ignore-security-exceptions
: 在設置此選項後,當應用程序發生任何權限錯誤(如啓動一個需要某些權限的 Activity)時,monkey
將繼續運行直到計數完成。如果不設置此選項,monkey
遇到此類權限錯誤將停止運行--kill-process-after-error
: 在設置此選項後,當monkey
因爲應用程序發生錯誤停止時,將會通知系統體質發生錯誤的進程。如果不設置此項,在monkey
停止時發生錯誤的應用程序將繼續處於運行狀態。--monitor-nativie-crashes
: 在設置此選項後,monkey
運行時native code
的崩潰事件將被監視被報告。如果不設置則不會監視。--wait-dbg
: 在設置此選項後,將暫停執行中的monkey
,知道有調試器與它連接
2.5 官方隱藏類參數
--pkg-blacklist-file
: 限制monkey
不測試指定黑名單文檔中記錄的包(package)。如果沒有使用這個參數,monkey 會測試系統內所有的的包。如果使用了這個參數,可通過在黑名單文檔中記錄所有不需要測試的包名稱,來相紙 monkey 的執行範圍。 黑名單文檔中每一行只能放一個包名--pkg-whitelist-file
: 限制monkey
只測試指定的白名單文檔中記錄的包。如果沒有使用這個參數,monkey 會測試系統內所有的包。如果使用了這個參數,可通過在白名單文檔內記錄所有要測試的包,來限制monkey 的執行範圍。白名單文檔中每一行只能放一個包名。注意:如果要測試的包與其他的包有關聯,則必須一起指定這些包來執行這項參數。
3. monkey 腳本編寫
軌跡球事件
DispatchTrackball(long downTime, long eventTime, int action, float x, float y, float pressure, float size, int metaState, float xPrecision, float yPrecision, int device, int edgeFlags)
只需要關注: action、x、y 即可
- ACTION_DOWN = 0
- ACTION_UP = 1
- ACTION_MULTIPLE = 2
輸入字符串事件
DispatchString(String text)
點擊事件
DispatchPointer(long downTime, long eventTime, int action, float x, float y, float pressure, float size, int metaState, float xPrecision, float yPrecision, int device, int edgeFlags)
只需要關注: action、x、y 即可
啓動應用
LaunchActivity(String pkg_name,String cl_name)
等待事件
UserWait(long sleeptime)
時間的單位爲:毫秒(millisecond)
按下鍵值
DispatchPress(int keyCode)
長按鍵值
LongPress(int keyCode)
發送鍵值
DispatchKey(long downTime, long eventTime, int action, int code, int repeat, int metaState, int device, int scancode)
開關軟鍵盤
DispatchFlip(boolean keyboardOpen)
3.2 monkey 腳本編寫
type= raw events
count= 10
speed= 1.0
start data >>
captureDispatchPointer(5109520,5109520,0,230.75429,458.1814,0.20784314,0.06666667,0,0.0,0.0,65539,0)
captureDispatchKey(5113146,5113146,0,20,0,0,0,0)
captureDispatchFlip(true)
...
4.1 monkey 日誌的保存方法
保存在 pc 中,命令如下
$ adb shell monkey [options] <event-count> > d:\monkeylog.txt
adb shell monkey -p com.bbk.recorder -v 10000 >d:\xxx.txt
保存在手機中,命令如下:
$ adb shell
# monkey [options] <event-count> /mnt/sdcard/monkeylog.txt
標準流與錯誤流分開保存,命令如下:
# monkey [options] <event-count> 1>/mnt/sdcard/monkeylog.txt 2>/mnt/sdcard/monkeyErrorlog.txt
4.2 monkey 日誌內容解析
- 搜索關鍵字"ANR" 查找 ANR 相關信息
- 搜索關鍵字"CRASH" 查找 Crash 相關信息
4.3 monkey server 的使用----隱藏api
啓動Money Server
adb shell monkey --port 1080 &
連接Monkey Server
adb forward tcp:1080 tcp:1080
telent 127.0.0.1 1080
4.4Money 腳本生成工具