monkey测试 -- 原理和操作步骤

时间:2024-04-15 10:54:02

 Monkey测试原理:

  • Monkey是Android中的一个命令行工具,可以运行在模拟器里或实际设备中。它向系统发送伪随机的用户事件流(如按键输入、触摸屏输入、手势输入等),实现对正在开发的应用程序进行压力测试。
  • Monkey测试是一种为了测试软件的稳定性、健壮性的快速有效的方法
  • 是androidSDK附带的一个工具,在Android文件系统中的存放路径是:/system/framework/monkey.jar  Monkey.jar程序是由一个名为“monkey”的Shell脚本来启动执行,shell脚本在Android文件系统中的存放路径是:/system/bin/monkey,这样就可以通过在shell窗口中执行: adb shell monkey {+命令参数}来进行Monkey测试了。

Monkey测试步骤:
1、将手机连接PC,测试连接是否正常
adb devices
2、查找需要测试的包名
adb shell pm list packages 列出所有包名
adb shell pm list packages testAPP123 查找名称中包含testAPP123的包名

3、执行monkey测试(打开3个cmd窗口,分别执行以下命令)
1)打印系统日志:adb logcat -v time > e:/20190508.txt
2)监控crash和ANR:adb shell am monitor
3)常用monkey命令:(adb shell monkey + 参数)
adb shell monkey -p com.dapp.abc --throttle 200 --pct-touch 60 --pct-motion 40 --ignore-crashes --ignore-timeouts --ignore-security-exceptions --ignore-native-crashes -v -v -v 1080000 >e:\monkey_log\20190507.txt

4、停止monkey测试

adb shell ps | findstr monkey 查看进程ID
adb shell kill 26073 杀掉monkey对应的进程

5、设置黑名单
将想要添加到黑名单的包名写到blacklist.txt中,多个包名换行分隔(monkey解析是一行行读的)
设置白名单同理。
黑名单、白名单、-p参数,三选一,不能同时设置
adb push blacklist.txt /data/local/tmp/
adb shell monkey --pkg-blacklist-file /data/local/tmp/blacklist.txt --throttle 200 --pct-touch 60 --pct-motion 40 -v -v -v 10000 >e:\monkey_log\2019070604.txt



Monkey参数说明:
-help 查看帮助信息
-v-v-v log的详细级别
-s <seed> 伪随机数生成器的seed值。(如果用相同的seed值再次运行monkey,将生成相同的事件序列)
-p <allowed-package-name> 指定包名。(若指定多个包,使用多个-P,一个-p后跟一个包名)
--throttle <millisecond> 在事件之间插入固定的时间(毫秒)延迟
--pct-touch <percent> 调整触摸事件的百分比,一次ACTION_DOWN,一次ACTION_UP 例如:–pct-touch 10 //百分之十为触摸事件
--pct-motion <percent> 滑动事件,按下->移动->抬起,ACTION_DOWN ACTION_MOVE ACTION_UP
-–pct-trackball percent 轨迹事件
-–pct-syskeys <percent> 系统按键事件 //如Home、Back、Start Call、End Call及音量控制键
-–pct-nav <percent> 基本导航事件(上下左右四个方向)
-–pct-majornav <percent> 主要导航事件 //如 5-way键盘的中间按键、回退键、菜单键
-–pct-appswitch <percent> 启动Activity的百分比(测试多个APP时,保证其他app都能启动并测到)
--pct-flip <percent> 键盘打开关闭
-–pct-anyevent <percent> 其他事件 //字母、数字按键等,一般是不常用的设备按钮
-–pct-pinchzoom <percent> 二指缩放事件
-–pct-permission <percent> 权限(替换掉了老版本中的--pct-rotation 屏幕旋转)
--ignore-crashes 应用程序发生崩溃或异常时,monkey继续运行
--ignore-timeouts 应用程序发生任何超时错误时(如“Application Not responding”对话框),monkey继续运行
--ignore-security-exception 当程序发生许可错误(例如启动一些需要许可的Activity)时,monkey继续运行
--ignore-native-crashes
--monitor-native-crashes

PS:
常用时间:
15小时:1080000(周内:晚上6点--早上9点)
39小时:2808000(周末:周六晚上6点--周一早上9点)


备注:因为adb发送事件,一次down算一个事件,一次up算一个事件,但是一次down加一次up才sleep一次,所以用事件间隔时间乘以事件次数,算出的运行时间并不准确。所以按照经验,给算出的次数乘以4,这样运行时间大致相等。比如:间隔500ms,执行5分钟,是600次(实际1.2分钟就执行完了)所以,想要执行5分钟的话,600次*4=2400次