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,还需要继续研究。


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