随时随地阅读更多技术实战干货,获取项目源码、学习资料,请关注源代码社区公众号(ydmsq666)
今天抽空学习了一下monkey的使用,在这里记录一下:
一.概念介绍
1.monkey 发送伪随机事件的工具,这个手机自带
monkeyRunner 对monkey 命令进行封装后的api
2.测试结果有两个我们需要关注解决的
crash 崩溃,app崩溃了
ANR app响应超时
二.开始使用
1.环境搭建
Android sdk 添加到环境变量(Android 开发人员可以直接使用,早就配置好了)和https://www.Python.org/downloads/release/python-2712/下载python,并将安装路径添加到path环境变量(可以没有不影响跑Monkey,但是monkeyRunner有影响)
2.确定手机和电脑连接 ,命令 adb devices 结果如下:
List of devices attached
xxxxx device(说明已经连接好了)
3.2将要测试apk安装到手机 adb install 包名
例如adb install C:/Users/lenovo/Desktop/alices/camerademo/app-release.apk(全路径)
4.压力测试 adb shell monkey 1000 monkey随机操作1000次 结果
C:\Users\lenovo>adb shell monkey 1000
// activityResuming(com.bbk.launcher2)
// Injection Failed
// activityResuming(com.bbk.launcher2)
// Injection Failed
// activityResuming(com.vivo.easyshare)
// activityResuming(com.vivo.easyshare)
Events injected: 1000 //说明1000次跑完了,没有任何错误出现
5.获取app包名 adb logcat | grep start 没有找到此命令(adb logcat --help中没有),没关系,包名我们肯定都知道
6.给指定的包进行压力测试 adb shell monkey -p package 10000
7.指定指令之间的时间间隔 adb shell monkey --throttle 1000 1000 每个指令之间时间间隔为1s
例如 adb shell monkey -p com.demo --throttle 1000 1000
8.(bug复现方法)重复上次随机操作参数 seed参数 adb shell monkey -s 100 1000 参数为100
例如 adb shell monkey -p com.demo -s 100 --throttle 1000 1000
9.触摸事件参数 设定触摸事件百分比 adb shell monkey --pct-touch 50 参数为50,也就是说百分之五十的事件为触摸事件(可以使用adb shell monkey -help 看看其他参数事件)
例如 adb shell monkey -p com.demo --pct-touch 50 1000 百分之五十的事件为触摸事件
其他参数如下:
[-p ALLOWED_PACKAGE [-p ALLOWED_PACKAGE] ...]
[-c MAIN_CATEGORY [-c MAIN_CATEGORY] ...]
[--ignore-crashes] [--ignore-timeouts]//忽略崩溃 忽略ANR 即使出现了也会继续跑(这个一般都会加上的)
[--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]//轨迹球事件百分比 系统事件百分比(back home 拨号键音量键)
[--pct-nav PERCENT] [--pct-majornav PERCENT]//基本导航事件,输入设备的上下左右 主要导航事件,中间键返回键菜单按键
[--pct-appswitch PERCENT] [--pct-flip PERCENT]//启动activity的事件
[--pct-anyevent PERCENT] [--pct-pinchzoom 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] ...]
[--sort-app-list]
[--throttle MILLISEC] [--randomize-throttle]
[--profile-wait MILLISEC]
[--device-sleep-time MILLISEC]
[--randomize-script]
[--script-log]
[--bugreport]
[--periodic-bugreport]
[--delay-appswitch MILLISEC]
[--launch-app-after-launcher
[--launch-app-after-app MILLISEC PACKAGE_NAME CLASS_NAME]
10.查看anr
adb shell 进入手机-->cd /data/anr/ ---->ls ---->more traces.txt 就可以查看了,里面记录了所有应用的anr信息
11.android studio 的terminal 下执行命令并且将测试结果保存到指定文件下:
例如:adb shell monkey -p com.hawk.android.hicamera -s 100 --ignore-crashes --ignore-timeouts 1000000 >c:\Users\lenovo\Desktop\alice\testlog.txt (好了,我们可以吃饭去了,回来测试结果就可以在文件中查看了)