随时随地阅读更多技术实战干货,获取项目源码、学习资料,请关注源代码社区公众号(ydmsq666)、QQ技术交流群(183198395)。
今天抽空学习了一下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 (好了,我们可以吃饭去了,回来测试结果就可以在文件中查看了)