一、简介
monkey程序通过模拟用户的随机操作来对程序进行压力测试。
monkey程序由java写成,android系统自带,在android文件系统中的存放路径是:/system/framework/monkey.jar 。
monkey.jar使用名为monkey的shell脚本启动,该shell脚本在android文件系统中的存放路径是:/system/bin/monkey。
二、命令
1、获取monkey帮助
adb shell monkey –help
2、执行压力测试
adb shell monkey [参数] aa>/data/local/tmp/log.txt 2>&1 &
1)aa:随机事件计数,即让monkey程序模拟用户aa次随机事件。
2)>/data/local/tmp/log.txt:测试日志的保存路径。
3)2>&1:固定的写法,表示中间忽略的日志一并输入到指定的文件中。
4)&:表示monkey测试开始后即可拔掉数据线,不影响monkey测试。
eg:
adb shell monkey -p com.taobao -v-v-v -s 10 --throttle 200 --ignore-crashes --ignore-timeouts --ignore-security-exceptions --kill-process-after-error --monitor-native-crashes --pct-touch 10 --pct-motion 10 --pct-trackball 10 --pct-nav 10 --pct-majornav 10 --pct-syskeys 10 --pct-appswitch 30 --pct-anyevent 10 1000>/data/local/tmp/log.txt 2>&1 &
三、命令参数
monkey命令参数,包括基本选项、约束选项、事件选项、调试选项。
参数 | 说明 |
---|---|
基本选项 | |
-v -v-v -v-v-v | 日志级别 1)level0,缺省值,提供少量的日志,包括启动提示、测试完成和最终结果等信息。 2)level1,提供较详细的日志,包括每个发送到Activity的事件信息。 3)level2,提供最详细的日志,包括测试中选中/未选中的Activity信息。 |
-s aa | 指定伪随机数生成器的seed值,aa为seed的值。操作序列虽然是随机生成的,但只要指定了相同的Seed值,就可以保证两次测试产生的随机操作序列是完全相同的,所以这个操作序列伪随机的。 |
–throttle aa | 指定用户操作(即事件)间的时延,单位是毫秒,aa为throttle的值。即每个事件结束后的间隔时间,是为了降低系统的压力。若不指定,系统会尽快的发送事件序列。 |
约束选项 | |
-p package1 -p package2 | 指定一个或多个包,package1、package2为包名。指定多个包时,需要使用多个-p选项,每个-p选项只能用于一个包。若指定包,只允许系统启动指定的APP。若不指定包,monkey允许系统启动设备中的所有APP。 |
-c | 指定一个或多个特定的Activity。要指定多个类别,需要使用多个-c选项,每个-c选项只能用于一个类别。若指定类别,只允许系统启动被这些类别中的某个类别列出的Activity。若不指定类别,Monkey将选择下列类别中列出的Activity: Intent.CATEGORY_LAUNCHER或Intent.CATEGORY_MONKEY。 |
事件选项 | –pct-bb aa ,指定事件类型、该事件类型占总事件数目的百分比。注:单位已包含%,所以值的范围为0~100。 |
–pct-touch aa | 触摸事件。在屏幕某处按下并抬起的操作,类似点击。由一组Touch(ACTION_DOWN)和Touch(ACTION_UP)事件组成。 |
–pct-motion aa | 滑动事件。在屏幕某处的按下、随机移动、抬起的操作,类似直线滑动操作。由一个ACTION_DOWN事件、一系列ACTION_MOVE事件和一个ACTION_UP事件组成。 |
–pct-trackball aa | 轨迹事件。一个或多个随机的移动组成的,包含曲线滑动操作。由一系列的Trackball(ACTION_MOVE)事件组成一个或几个随机的移动组成。 |
–pct-nav aa | “基本”导航事件。点击方向输入设备的上、下、左、右按键的操作。由一个Key(ACTION_DOWN)和一个Key(ACTION_UP)组成。来自方向输入设备的up/down/left/right组成。注:这种事件用的比较少。 |
–pct-majornav aa | “主要”导航事件。按键通常会导致UI界面中的动作,如键盘的中间键、回退按键、菜单按键。由一个Key(ACTION_DOWN)和一个Key(ACTION_UP)组成。 |
–pct-syskeys aa | “系统”按键事件。系统保留使用的按键的操作,如点击Home键、返回键、音量调节键等。 由一个Key(ACTION_DOWN)和一个Key(ACTION_UP)组成 。 |
–pct-appswitch aa | 启动Activity。启动一个Activity的操作,即执行一个startActivity()调用。由一个Switch操作组成。注:这是最大程度覆盖包中全部Activity的一种方法。 |
–pct-pinchzoom | 二指缩放事件。在屏幕上的两处同时按下,并同时移动,最后同时抬起的操作,即智能机上的放大缩小手势操作。 起始是一个ACTION_DOWN事件和一个ACTION_POINTER_DOWN事件,即模拟两个手指同时点下;中间是一系列的ACTION_MOVE事件,即两个手指同时在屏幕上直线滑动;结束是由一个ACTION_POINTER_UP事件和一个ACTION_UP事件组成的,即两个手指同时放开。 |
–pct-flip | 键盘事件。键盘相关的操作。比如点击输入框、键盘弹起、点击输入框以外区域、键盘收回等。 |
–pct-rotation | 屏幕旋转事件。模拟Android手机的横屏和竖屏切换。由一个rotation事件组成,其中degree表示的是旋转方向,顺时针旋转,0表示旋转90度的方向,1表示旋转180度的方向,2表示旋转270度的方向,3表示旋转360度的方向 |
–pct-anyevent aa | 其它类型事件。除前面10种事件外其他所有的事件,如按键、其他不常用的设备上的按钮等。由一个Key(ACTION_DOWN)和一个Key(ACTION_UP)组成的。 |
调试选项 | 为了保证测试数量的完整进行,一般不会在发生错误时立刻退出压力测试。所以一般需要忽略崩溃、超时、安全异常等。 |
–ignore-crashes | 忽略崩溃,即当应用程序崩溃时(Force& Close错误),monkey不停止运行。若不使用此参数,monkey将会停止运行。 |
–ignore-timeouts | 忽略超时,即当应用程序发生ANR(Application No Responding)错误时,monkey不停止运行。若不使用此参数,monkey将会停止运行。 |
–ignore-security-exceptions | 忽略安全异常,即当应用程序发生许可错误时(如证书许可,网络许可等),monkey不停止运行。若不使用此参数,monkey将会停止运行。 |
–kill-process-after-error | 当应用程序发生错误时,应用程序停止运行并保持在当前状态。注:应用程序仅是静止在发生错误时的状态,系统并不会结束该应用程序的进程。 |
–monitor-native-crashes | 监视由Android C/C++代码部分(cpu计算部分)引起的崩溃,并报告应用程序发生崩溃的本地代码。此时如果设置了“–kill-process-after-error”,系统将停止运行。 |
–dbg-no-events | Monkey将执行初始启动,进入到一个测试activity,然后不会再进一步生成事件。为了得到最佳结果,把它与-v、一个或几个包约 束、以及一个保持Monkey运行30秒或更长时间的非零值联合起来,从而提供一个环境,可以监视应用程序所调用的包之间的转换。 |
–wait-dbg | 启动monkey后,先中断其运行,直到连接了调试器后再执行monkey测试。 |
–hprof | 将在monkey事件序列之前和之后立即生成profiling报告(性能报告,即内存的快照文件)。在设备的/data/misc目录下生成一个5M左右的文件。一般建议指定该项。 |
本文来自:https://blog.csdn.net/yisumi
end…