一个简单的压测步骤
- 在手机开发者选项中,将USB调试选上
- 确认手机和电脑已经连接成功,
adb devices
- 安装测试app
adb install package.apk
- 发送压力指令
adb shell monkey -p 包名 1000(指令的次数)
- 获取包名
adb logcat | grep START
- 启动测试app 在命令行界面查看包名
- 获取包名
添加参数
- throttle 事件之间延长时间。
adb shell monkey -p 包名 --throttle 1000
延长1秒 - seed 设置seed值记录本次执行的事件步骤,以供下次需要重复执行时可以重复操作
adb shell monkey -p 包名 -s 100
设置sedd值为100 - pct-touch 设定点击事件百分比
adb shell monkey --pct-touch 100
设置点击事件100% - motion 设置滑动事件的百分比
- --pct-trackball 设置轨迹球事件百分比
- --pct-nav 设置基本导航事件百分比, 输入设备的 上下左右
- --pct-majornav 设置主要导航事件百分比,兼容中间键,返回键,菜单键
- --pct-syskeys 设置系统导航事件百分比, HOME、BACK、拨号及音量键
- --pct-appswitch 设置启动Activity的事件百分比
- -- pct-anyevent 设置不常用事件百分比
- --ignore-crashes 设置忽略崩溃和异常
- --ignore-timeouts 设置忽略ANR 超时事件
实例
adb shell monkey -p 包名 -v -v -v --pct-touch 40 --pct-motion 20 --pct-trackball 10 --pct-nav 10 --pct-majornav 10 --pct-syskeys 5 --pct-anyevent 5 --ignore-timeouts --ignore-security-exceptions --throttle 2000 1200000000 >F:\monkey.txt(log的路径)
查看ANR异常信息
当我们在手工测试app的时候出现的ANR情况可以通过以下步骤找到ANR异常的信息
- adb shell 进入手机
- cd /data/anr/ 进入手机目录
- ls
- 会有个traces.txt文件 查看文件 more traces.txt
- 找到跟我们测试包名相关的信息就可以找到异常的信息了。
Monkey Script
monkey只能实现随机操作的事件;Monkey Script 可以实现重复操作的事件
- 执行命令
adb shell monkey -f <Monkey Script脚本> 执行的次数
- Monkey Script脚本的命令
- DispatchTrackball命令: 轨迹球事件
DispatchTrackball(int action, float x, float y)
action 0代表按下,1代表弹起, x和y代表坐标点 - DispatchPointer命令:点击事件
DispatchPointer(int action, float x, float y)
action 0代表按下,1代表弹起, x和y代表坐标点 - DispatchString命令:输入字符串事件
DispatchString(String text)
- LaunchActivity命令:启动应用
LaunchActivity(pachage, Activity)
pachage包名,Activity启动的页面名称 - UserWait命令:等待事件
UserWait(1000)
- DispatchPress命令:按下的键盘值
DispatchPress(int keycode)
DispatchPress(66) # 66代表回车键
- DispatchTrackball命令: 轨迹球事件
Monkey Script模拟搜索脚本实践
- 在电脑上创建脚本文件
vim monkey-jb.script
Monkey Script脚本
- 把电脑上的脚本push到手机上
进入脚本目录adb push monkey-jb.script /data/local/tmp
把电脑上的脚本push到手机的tmp目录下 - 进入手机的tmp目录
adb shell
cd /data/local/tmp/
- 执行命令
monkey -f monkey-jb.script 2
# 执行两次
或者
adb shell monkey -f /data/local/tmp/monkey-jb.script 2
注意这里有个坑:执行命令的时候需要在安卓AndroidManifest.xml文件下的
<activity ...
加上android:exported="true"
> 作用是允许app被外部命令调起
< /activity >
还要注意的一点使用LaunchActivity(pachage, Activity)命令启动app时,后面的Activity名称需要和前面的包名连起来才能启动app。 格式:包名.Activity名称
否则无法启动测试的app
网友评论