1.有adb环境
2.手机打开开发者选项usb调试,连接数据线,使用adb devices查看设备
3.使用adb install xx.apk 安装应用,打开应用,使用adb shell dumpsys window | findstr mCurrentFocus查看包名,adb logcat | findstr START 打开应用,可以看到包名和当前页名
monkey命令解析
-p 包名 用以指定包名,多个包,使用多个-p 包名 来指定
-v 日志级别,1个表示0级,只记录启动 测试完成 测试结果等信息,2个表示1级 进一步记录逐个发送到Activity的事件,3个表示2级,进一步记录测试中被选中的或未被选中的Activity
-s
在每次执行完Monkey命令之后,从输出里可以看到当前的seed值,只要通过-s参数后指定相同的seed,就可以重复刚才的操作。
--throttle<毫秒>
事件之间加入延时操作,一般业内标准是每秒操作2-3次。即:--throttle 200到 --throttle 300
--ignore-crashes
忽略程序崩溃,对于重新执行的 Monkey 命令-s参数设置的随机数seed值将不会生效。
--ignore-timeouts
忽略程序超时。【这里的超时并不是网络超时或者接口返回超时,而是程序相应超时导致的ANR】
--ignore-security-exceptions
用于指定当应用程序发生许可错误时(如证书许可,网络许可等),Monkey是否停止运行。
--kill-process-after-error
应用程序仅是静止在发生错误时的状态,系统并不会结束该应用程序的进程。
--monitor-native-crashes
用于指定是否监视并报告应用程序发生崩溃的本地代码。
--pct-{事件类别}{事件类别百分比}
虽然Monkey测试是随机事件,但是我们可以指定事件的类型。【注意】:①所有指定事件的数值加起来不能超过100。②不做任何指定时,默认为--pct-anyevent
--pct-touch
--pct-motion
--pct-trackball
--pct-nav
--pct-majornav
--pct-syskeys
--pct-appswitch
--pct-anyevent
--hprof
指定该项后在事件序列发送前后会立即生成分析报告 —— 一般建议指定该项
①--dbg-no-events:初始化启动的activity,但是不产生任何事件。
⑧--wait-dbg:知道连接了调试器才执行monkey测试。
adb shell monkey -help 查看Monkey测试的其他命令行
日志输出
adb shell monkey -p 包名 -v 300 >e:\text.txt 后面内容会被覆盖
adb shell monkey -p 包名 -v 300 >> e:\text.txt 后面内容追加输出
退出monkey测试
adb reboot 重启手机
查找monkey进程adb shell ps | grep monkey(windows下用findstr代替grep) 通过adb shell kill 进程id 杀死进程
再次查看adb shell ps | grep monkey进程是否已经不在
测试结果分析
错误重现,找到出错的地方,查看往前的一些事件,手动执行该事件
如果手动无法复现,使用seed值重现
在log中通过关键字查询:当Monkey命令执行过程中遇到错误时,会输出对应异常信息,关键字查询:应用程序无响应(ANR)、崩溃(CRASH)、其他问题(Exception)、“Force Close”
参考
如何让adb在指定页面执行
1.可在执行monkey命令之前,先执行禁用通知栏的命令
adb shell settings put global policy_control immersive.full=*
解禁命令:adb shell settings put global policy_control null
2.设置白名单页
具体参考:https://blog.csdn.net/joey_2018_/article/details/88607549