Monkey日志信息的12种Event percentages(2021.8.5更新)

文章是2015年写的,现在2021年event事件已经是12种了,网上搜了下,还都是11种,都没人更新了。


 

我们查看官方文档,表里只给出了8种事件(可以看我上篇的翻译文档)。但我们运行Monkey后,却发现有12种事件!最坑爹的是,在每种事件的百分比后面,他还不给注明是什么事件!

原来不同的Android SDK中的Event percentages种类数和顺序是不一样的!


我们可以查看MonkeySourceRandom.java中定义的这些值:

https://android.googlesource.com/platform/development/+/master/cmds/monkey/src/com/android/commands/monkey/MonkeySourceRandom.java

 

 1     public static final int FACTOR_TOUCH        = 0;
 2     public static final int FACTOR_MOTION       = 1;
 3     public static final int FACTOR_PINCHZOOM    = 2;
 4     public static final int FACTOR_TRACKBALL    = 3;
 5     public static final int FACTOR_ROTATION     = 4;
 6     public static final int FACTOR_PERMISSION   = 5;
 7     public static final int FACTOR_NAV          = 6;
 8     public static final int FACTOR_MAJORNAV     = 7;
 9     public static final int FACTOR_SYSOPS       = 8;
10     public static final int FACTOR_APPSWITCH    = 9;
11     public static final int FACTOR_FLIP         = 10;
12     public static final int FACTOR_ANYTHING     = 11;
13     public static final int FACTORZ_COUNT       = 12;    // should be last+1
14     private static final int GESTURE_TAP = 0;
15     private static final int GESTURE_DRAG = 1;
16     private static final int GESTURE_PINCH_OR_ZOOM = 2;

  

然后再来看Monkey.java源码中的processOptions()方法

https://android.googlesource.com/platform/development/+/master/cmds/monkey/src/com/android/commands/monkey/Monkey.java

 

  1 /**
  2      * Process the command-line options
  3      *
  4      * @return Returns true if options were parsed with no apparent errors.
  5      */
  6     private boolean processOptions() {
  7         // quick (throwaway) check for unadorned command
  8         if (mArgs.length < 1) {
  9             showUsage();
 10             return false;
 11         }
 12         try {
 13             String opt;
 14             Set<String> validPackages = new HashSet<>();
 15             while ((opt = nextOption()) != null) {
 16                 if (opt.equals("-s")) {
 17                     mSeed = nextOptionLong("Seed");
 18                 } else if (opt.equals("-p")) {
 19                     validPackages.add(nextOptionData());
 20                 } else if (opt.equals("-c")) {
 21                     mMainCategories.add(nextOptionData());
 22                 } else if (opt.equals("-v")) {
 23                     mVerbose += 1;
 24                 } else if (opt.equals("--ignore-crashes")) {
 25                     mIgnoreCrashes = true;
 26                 } else if (opt.equals("--ignore-timeouts")) {
 27                     mIgnoreTimeouts = true;
 28                 } else if (opt.equals("--ignore-security-exceptions")) {
 29                     mIgnoreSecurityExceptions = true;
 30                 } else if (opt.equals("--monitor-native-crashes")) {
 31                     mMonitorNativeCrashes = true;
 32                 } else if (opt.equals("--ignore-native-crashes")) {
 33                     mIgnoreNativeCrashes = true;
 34                 } else if (opt.equals("--kill-process-after-error")) {
 35                     mKillProcessAfterError = true;
 36                 } else if (opt.equals("--hprof")) {
 37                     mGenerateHprof = true;
 38                 } else if (opt.equals("--match-description")) {
 39                     mMatchDescription = nextOptionData();
 40                 } else if (opt.equals("--pct-touch")) {
 41                     int i = MonkeySourceRandom.FACTOR_TOUCH;
 42                     mFactors[i] = -nextOptionLong("touch events percentage");
 43                 } else if (opt.equals("--pct-motion")) {
 44                     int i = MonkeySourceRandom.FACTOR_MOTION;
 45                     mFactors[i] = -nextOptionLong("motion events percentage");
 46                 } else if (opt.equals("--pct-trackball")) {
 47                     int i = MonkeySourceRandom.FACTOR_TRACKBALL;
 48                     mFactors[i] = -nextOptionLong("trackball events percentage");
 49                 } else if (opt.equals("--pct-rotation")) {
 50                     int i = MonkeySourceRandom.FACTOR_ROTATION;
 51                     mFactors[i] = -nextOptionLong("screen rotation events percentage");
 52                 } else if (opt.equals("--pct-syskeys")) {
 53                     int i = MonkeySourceRandom.FACTOR_SYSOPS;
 54                     mFactors[i] = -nextOptionLong("system (key) operations percentage");
 55                 } else if (opt.equals("--pct-nav")) {
 56                     int i = MonkeySourceRandom.FACTOR_NAV;
 57                     mFactors[i] = -nextOptionLong("nav events percentage");
 58                 } else if (opt.equals("--pct-majornav")) {
 59                     int i = MonkeySourceRandom.FACTOR_MAJORNAV;
 60                     mFactors[i] = -nextOptionLong("major nav events percentage");
 61                 } else if (opt.equals("--pct-appswitch")) {
 62                     int i = MonkeySourceRandom.FACTOR_APPSWITCH;
 63                     mFactors[i] = -nextOptionLong("app switch events percentage");
 64                 } else if (opt.equals("--pct-flip")) {
 65                     int i = MonkeySourceRandom.FACTOR_FLIP;
 66                     mFactors[i] = -nextOptionLong("keyboard flip percentage");
 67                 } else if (opt.equals("--pct-anyevent")) {
 68                     int i = MonkeySourceRandom.FACTOR_ANYTHING;
 69                     mFactors[i] = -nextOptionLong("any events percentage");
 70                 } else if (opt.equals("--pct-pinchzoom")) {
 71                     int i = MonkeySourceRandom.FACTOR_PINCHZOOM;
 72                     mFactors[i] = -nextOptionLong("pinch zoom events percentage");
 73                 } else if (opt.equals("--pct-permission")) {
 74                     int i = MonkeySourceRandom.FACTOR_PERMISSION;
 75                     mFactors[i] = -nextOptionLong("runtime permission toggle events percentage");
 76                 } else if (opt.equals("--pkg-blacklist-file")) {
 77                     mPkgBlacklistFile = nextOptionData();
 78                 } else if (opt.equals("--pkg-whitelist-file")) {
 79                     mPkgWhitelistFile = nextOptionData();
 80                 } else if (opt.equals("--throttle")) {
 81                     mThrottle = nextOptionLong("delay (in milliseconds) to wait between events");
 82                 } else if (opt.equals("--randomize-throttle")) {
 83                     mRandomizeThrottle = true;
 84                 } else if (opt.equals("--wait-dbg")) {
 85                     // do nothing - it's caught at the very start of run()
 86                 } else if (opt.equals("--dbg-no-events")) {
 87                     mSendNoEvents = true;
 88                 } else if (opt.equals("--port")) {
 89                     mServerPort = (int) nextOptionLong("Server port to listen on for commands");
 90                 } else if (opt.equals("--setup")) {
 91                     mSetupFileName = nextOptionData();
 92                 } else if (opt.equals("-f")) {
 93                     mScriptFileNames.add(nextOptionData());
 94                 } else if (opt.equals("--profile-wait")) {
 95                     mProfileWaitTime = nextOptionLong("Profile delay" +
 96                                 " (in milliseconds) to wait between user action");
 97                 } else if (opt.equals("--device-sleep-time")) {
 98                     mDeviceSleepTime = nextOptionLong("Device sleep time" +
 99                                                       "(in milliseconds)");
100                 } else if (opt.equals("--randomize-script")) {
101                     mRandomizeScript = true;
102                 } else if (opt.equals("--script-log")) {
103                     mScriptLog = true;
104                 } else if (opt.equals("--bugreport")) {
105                     mRequestBugreport = true;
106                 } else if (opt.equals("--periodic-bugreport")){
107                     mGetPeriodicBugreport = true;
108                     mBugreportFrequency = nextOptionLong("Number of iterations");
109                 } else if (opt.equals("--permission-target-system")){
110                     mPermissionTargetSystem = true;
111                 } else if (opt.equals("-h")) {
112                     showUsage();
113                     return false;
114                 } else {
115                     Logger.err.println("** Error: Unknown option: " + opt);
116                     showUsage();
117                     return false;
118                 }
119             }
120             MonkeyUtils.getPackageFilter().addValidPackages(validPackages);
121         } catch (RuntimeException ex) {
122             Logger.err.println("** Error: " + ex.toString());
123             showUsage();
124             return false;
125         }
126         // If a server port hasn't been specified, we need to specify
127         // a count
128         if (mServerPort == -1) {
129             String countStr = nextArg();
130             if (countStr == null) {
131                 Logger.err.println("** Error: Count not specified");
132                 showUsage();
133                 return false;
134             }
135             try {
136                 mCount = Integer.parseInt(countStr);
137             } catch (NumberFormatException e) {
138                 Logger.err.println("** Error: Count is not a number: \"" + countStr + "\"");
139                 showUsage();
140                 return false;
141             }
142         }
143         return true;
144     }

 

所以,Monkey运行结果中对应的就应该是:

0:--pct-touch

touch events percentage触摸事件百分比(触摸事件是一个在屏幕单一位置的按下-抬起事件)

1:--pct-motion

motion events percentage手势事件百分比(手势事件是由一个在屏幕某处的按下事件、一系列的伪随机移动、一个抬起事件组成)即一个滑动操作,但是是直线的,不能拐弯

2:--pct-pinchzoom

pinch zoom events percentage二指缩放百分比,即智能机上的放大缩小手势操作

3:--pct-trackball

trackball events percentage轨迹球事件百分比(轨迹球事件包括一个或多个随机移动,有时还伴有点击。轨迹球现在智能手机上已经没有了,就是类似手柄的方向键一样)

4:--pct-rotation

screen rotation events percentage屏幕旋转百分比,横屏竖屏

5:--pct-permission

runtime permission toggle events percentage:运行时权限开关事件百分比(相比2015年新增)

6:--pct-nav

nav events percentage”基本”导航事件百分比(导航事件包括上下左右,如方向输入设备的输入)老手机的上下左右键,智能机上没有

7:--pct-majornav

major nav events percentage主要导航事件百分比(这些导航事件通常会引发UI的事件,例如5-way pad的中间键、回退键、菜单键)

8:--pct-syskeys

system(key) operations percentage系统按钮事件百分比(这些按钮一般专供系统使用,如Home, Back, Start Call, End Call,音量控制)

9:--pct-appswitch

app switch events percentage启动activity事件百分比。在随机的间隔里,Monkey会执行一个startActivity()调用,作为最大程度覆盖包中全部Activity的一种方法

10:--pct-flip

keyboard flip percentage键盘轻弹百分比,如点击输入框,键盘弹起,点击输入框以外区域,键盘收回

11:--pct-anyevent

any events percentage其他类型事件百分比。包括了其他所有的类型事件,如按键、其他不常用的设备上的按钮等等。

 

参考:

http://blog.csdn.net/jlminghui/article/details/42261307

http://blog.csdn.net/jlminghui/article/details/42268187

-------------------------------------------------------------------------------- 

关注微信公众号(测试工程师小站)即可在手机上查阅,并可接收更多测试分享,发送【测试资料】更可获取百G测试教程~

posted @ 2015-01-11 15:48  ☆星空物语☆  阅读(1526)  评论(0编辑  收藏  举报