Android自動化測試 monkey 工具學習5

Monkey是Android系統固件自帶的性能測試工具,他可以模擬各種按鍵、觸屏、軌跡球、activity等事件。
命令如下:
adb shell monkey --help
** Error: Unknown option: --help
usage: monkey [-p ALLOWED_PACKAGE [-p ALLOWED_PACKAGE] ...]
             [-c MAIN_CATEGORY [-c MAIN_CATEGORY] ...]
             [--ignore-crashes] [--ignore-timeouts]
             [--ignore-security-exceptions]
             [--monitor-native-crashes] [--ignore-native-crashes]
             [--kill-process-after-error] [--hprof]
             [--pct-touch PERCENT] [--pct-motion PERCENT]
             [--pct-trackball PERCENT] [--pct-syskeys PERCENT]
             [--pct-nav PERCENT] [--pct-majornav PERCENT]
             [--pct-appswitch PERCENT] [--pct-flip PERCENT]
             [--pct-anyevent PERCENT]
             [--pkg-blacklist-file PACKAGE_BLACKLIST_FILE]
             [--pkg-whitelist-file PACKAGE_WHITELIST_FILE]
             [--wait-dbg] [--dbg-no-events]
             [--setup scriptfile] [-f scriptfile [-f scriptfile] ...]
             [--port port]
             [-s SEED] [-v [-v] ...]
             [--throttle MILLISEC] [--randomize-throttle]
             [--profile-wait MILLISEC]
             [--device-sleep-time MILLISEC]
             [--randomize-script]
運行monkey可以採用兩種方式:系統默認方式和script方式
一、默認運行方式:
 adb shell monkey -p package.name -v 30
其中:  可以繼續添加一個或者兩個 -v 參數, -v參數越多,輸出的日誌越詳細
        最後的數字表示,觸發的事件次數
爲了更好的查看日誌,可以將輸出的日誌信息重定向到文件中
如:adb shell monkey -p package.name -v 30 > log.txt
二、腳本方式
Android 的monkey test 工具提供了 -f scriptfile 參數,可以指定 test 腳本。在 monkey 的源碼 MonkeySourceScript.java 中有一小段註釋,裏面給了一個不到 10 行例子:
  • /**

  • * monkey event queue. It takes a script to produce events

  • *

  • * sample script format:

  • *      type= raw events

  • *      count= 10

  • *      speed= 1.0

  • *      start data >>

  • *      captureDispatchPointer(5109520,5109520,0,784314,

  • *          0.06666667,0,0.0,0.0,65539,0)

  • *      captureDispatchKey(5113146,5113146,0,20,0,0,0,0)

  • *      captureDispatchFlip(true)

  • *      ...

  • */


monkey中提供的函數如下:
  • 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)  

  • 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)  

  • DispatchKey(long downTime, long eventTime, int action, int code, int repeat, int metaState, int device, int scancode)  

  • DispatchFlip(boolean keyboardOpen)  

  • DispatchPress(int keyCode)  

  • LaunchActivity(String pkg_name, String cl_name)  

  • UserWait(long sleeptime)  

  • LongPress(int keyCode)

首先本地編寫需要的測試的事件 命名爲 monkey.script (文件格式無要求),將文件push到手機或模擬器的sdcard中
如: adb push  lujing/monkey.script  /sdcard/
然後執行腳本:
      adb shell monkey -v -f /sdcard/monkey.script


附 Example:
type= user
count= 49
speed= 1.0
start data >>
LaunchActivity(com.example.android.notepad, com.example.android.notepad.NotesList)
DispatchPress(KEYCODE_DPAD_DOWN)
LongPress(KEYCODE_DOWN)
DispatchPress(KEYCODE_BACK)
其中 type值可以任意,源碼中沒有對該值做任何處理。
      count值,在此無效,還是需要在命令行輸入需要執行的次數。因爲命令行的count值是必填項


另外,如何通過LaunchActivity啓動帶參數的activity,還需要繼續研究。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章