Monkey 是 google 提供的一款对 Android app 进行压力测试工具,基于随机坐标位置,进行点击、滑动、输入等操作.
官方文档
https://developer.android.com/studio/test/monkey
adb shell monkey -help 打印参数帮助信息
out:
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] [--pct-pinchzoom PERCENT]
[--pct-permission 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]
[--script-log]
[--bugreport]
[--periodic-bugreport]
[--permission-target-system]
COUNT
查看当前app包名命令:adb shell "dumpsys window |grep mCurrent"
adb shell monkey -p com.test.android(app包名)
启动包名是com.test.android的app进行monkey测试.
adb shell monkey -p com.test.android 300(COUNT)
COUNT是需要Monkey执行的总共事件数.
adb shell monkey -p com.test.android -v 100
adb shell monkey -p com.test.android -v -v -v 100
v是设置日志级别,默认是一个
如需更详细的日志可以加多个-v,最多3个
adb shell monkey -p com.test.android(app包名) -s 50(随机种子)
s表示一个随机种子,必须是数字类型.可以用于两次monkey测试,第二次monkey回归第一次monkey测试出来的bug,指定的随机种子是一样的.
那么两次操作的事件操作基本一致.需要说明的是,随机种子仅仅的是操作是一样的,有些app启动以后会有弹框或者其他引导提醒,那么这样不能保证两次操作的路径是完全一样,需要手工去除
adb shell monkey -p com.test.android --throttle 500 300
throttle表示两次操作之间的延迟,单位是毫秒.因为实际模拟器用户操作并不一定要操作很快,所以500ms延迟到1000ms接近用户的真实使用.
adb shell monkey -p com.test.android --throttle 500 --randomize-throttle 300
randomize-throttle表示每次事件的间隔在0到500毫秒之间不固定
触摸事件百分比,即参数--pct-touch
滑动事件百分比,即参数--pct-motion
缩放事件百分比,即参数--pct-pinchzoom
轨迹球事件百分比,即参数--pct-trackball
屏幕旋转事件百分比,即参数--pct-rotation
基本导航事件百分比,即参数--pct-nav
主要导航事件百分比,即参数--pct-majornav
系统事件百分比,即参数--pct-syskeys
adb shell monkey -p com.test.android --pct-touch 20 --pct-motion 30 300
adb shell monkey -p com.test.android --ignore-crashes 500
ignore-crashes表示运行monkey中,遇到crash会忽略,继续执行后续的操作.
adb shell monkey -p com.test.android --ignore-timeouts 500
ignore-timeouts表示运行monkey中,遇到ANR会忽略,继续执行后续的操作.
adb shell monkey -p com.test.android --ignore-native-crashes 500
ignore-native-crashes表示忽略monkey本身的异常,直到事件执行完毕
期望解决上述不足以外,还期望增加如下功能:
https://github.com/xinxi1990/MyMonkey.git
脚本开发基于 python 语言开发,大致设计模块如下
对于 app 的健壮性和稳定性,一直是个必须关注的问题.传统的手工测试无法解决庞大的用户群体的随机事件,所以此时需要借助一些工具来快速遍历到 app 中所有功能.
android monkey 使用教程
https://www.jianshu.com/p/c2aca7019ddf