Monkey
地址:
https://developer.android.google.cn/studio/test/monkey
介绍:Monkey 是一个在模拟器或设备上运行的程序,可生成伪随机用户事件(例如点击、轻触或手势)流以及很多系统级事件。使用 Monkey 以随机且可重复的方式对正在开发的应用进行压力测试。
https://www.bilibili.com/video/BV1dT4y1j7gH?p=6&spm_id_from=pageDriver
常用adb命令
Adb devices
Adb help
Adb version
Adb kill-server
Adb start-server
Adb install *.apk
连接逍遥模拟器
adb connect 127.0.0.1:21503
连接夜神模拟器
adb connect 127.0.0.1:62001
多个设备可以选择进入 adb -s emulator-5554 shell
读取电量电压
adb shell dumpsys battery
虽然有root权限,但是仍然不能编辑,需要执行以下命令
设置/system为可读写:adb remount
输出日志
Adb logcat -d -v time>D:/android/android.log
把pc端的文件推送到终端
Adb push d:\xx.log /data/data/
多个设备
adb -s 127.0.0.1:21503 push D:\Android\log\android.log /data/data
把手机端的文件拉到pc端
Adb pull /data/data/xx.log d:\demo
查看包名和activity
Adb logcat|findstr START
查看需要测试的包名
如果有root权限,可以进入/data/data/下使用ls/ls-a查看(不能使用ll)
如果无root权限,可以使用:pm list packages查看
(需要控制monkey执行的时间,可以通过设置执行时长/事件发送延时,计算出需要执行的次数。如:想要monkey运行24小时,每100毫秒发送一个事件。246060*1000/100=864000(次)
monkey -p *** --ignore-crashes --ignore-timeouts --throttle 100 864000
表示:此次monkey将会运行24小时
启动app
Adb shell am start -W -n package/.activity
打开币安apk,并测量时间
Adb shell am start -W -n com.binance.dev/.activities.register.RegisterActivity
打开xt apk,并测量时间
Adb shell am start -W -n com.zsdk.xt/.ui.activity.MainActivity
币安的apk启动时间381ms,xt 的apk启动时间1180ms,慢了3倍多
关闭app
Adb shell am force-stop package
Adb shell am force-stop com.binance.dev
app退到后台运行
Adb shell input keyevent 3
币安的启动包名
cmp=com.binance.dev/.activities.register.RegisterActivity
Xt 的启动包名
cmp=com.zsdk.xt/.ui.activity.MainActivity
cmp=com.zsdk.xt/.ui.act.MainActivity
cmp=com.zsdk.xt.debug/com.zsdk.xt.ui.act.ColumnOreActivity
cmp=com.android.systemui/.recents.RecentsActivity
预生产的包
cmp=com.zsdk.xt.pro/com.zsdk.xt.ui.act.MainActivity
卸载apk包
adb -s 127.0.0.1:21503 uninstall com.zsdk.xt.debug
查看cpu
Adb shell dumpsys cpuinfo|findstr package
Dumpsys meminfo|grep xt
如果在shell里面 输入dumpsys cpuinfo|findstr xt
如果在cmd里面 输入adb shell dumpsys cpuinfo|findstr xt
获取进程pid
Adb shell ps | findstr package
先找到pid,然后cat查看进程流量,建议在shell里面操作,那样就不需要每次多输入adb shell
Adb shell cat /proc/pid/net/dev
查看接受和发送的流量
获取内存
Adb shell top
VSS- Virtual Set Size 虚拟耗用内存(包含共享库占用的内存)
RSS- Resident Set Size 实际使用物理内存(包含共享库占用的内存)
PSS- Proportional Set Size 实际使用的物理内存(比例分配共享库占用的内存)
USS- Unique Set Size 进程独自占用的物理内存(不包含共享库占用的内存)
一般来说内存占用大小有如下规律:VSS >= RSS >= PSS >= USS
dstat 命令是一个用来替换 vmstat、iostat、netstat、nfsstat 和 ifstat 这些命令的工具,是一个全能系统信息统计工具。
Dstat -afv
Monkey命令
https://www.cnblogs.com/smallstone2018/p/10024500.html
Adb shell monkey -p com.zsdk.xt.pro --ignore-crashes --ignore-timeouts --throttle 100 60
monkey -p *** --ignore-crashes --ignore-timeouts --throttle 100 864000
产生500此随机事件,作用在系统中所有的activity
Adb shell monkey -v 500
adb shell monkey -v 500 -p com.zsdk.xt.pro
adb shell monkey -v -p com.zsdk.xt.pro --ignore-crashes --ignore-timeouts --throttle 100 600
-p参数
在我们测试时,是针对具体的app进行测试的,所以在使用monkey测试时,我们需要提供具体的app包名给monkey,此时就需要用到参数-p。在-p后跟随app包名。
(二)事件类型
0:触摸事件–pct-touch
调整touch触屏事件的百分比,触碰事件就是指在屏幕上的一个单独位置的一次点击/抬起的事件。
1:滑屏事件–pct-motion(手势事件)
(手势事件是由一个在屏幕某处的按下事件、一系列的伪随机移动、一个抬起事件组成)即一个滑动操作,但是是直线的,不能拐弯)
2:轨迹球–pct-trackball
(轨迹球事件包括一个或多个随机移动,有时还伴有点击。轨迹球现在智能手机上已经没有了,就是类似手柄的方向键一样)
3:旋转(–pct-rotation)
旋转屏幕
4:导航–pct-nav
(导航事件包括上下左右,如方向输入设备的输入)老手机的上下左右键,智能机上没有)
5:主导航–pct-majornav
调整主要导航事件的百分比(如中间键、取消、确定或菜单引发的图形接口的动作)
6:系统按键–pct-syskeys
调整系统按键事件,如:home/back/startcall/endcall以及音量控制键等
7:app切换–pct-appswitch
调整启动activity的百分比,在随机间隔中,执行一个startActivity()方法调用,作为一种最大化的覆盖安装包的所有的activity的方法
8:键盘翻转(–pct-flip)
9:随机–pct-anyevent
调整其他类型的事件的百分比,比如按键或其他不太常用到的一些事件的百分比
(三)调试选项
1、–ignore-crashes
用于指定当应用程序崩溃时,Monkey是否停止运行。如果使用此参数,即使应用程序崩溃,monkey依然会发送事件,直到事件计数完成。
2、—ignore-timeouts
用于指定当应用程序发生ANR(Application No Responding)错误时,Monkey是否停止运行。如果使用此参数,即使应用程序发生ANR错误,Monkey依然会发送事件,直到事件计数完成。
3、–ignore-security-exceptionss
用于指定当应用程序发生许可错误时(如证书许可,网络许可等),Monkey是否停止运行。如果使用此参数,即使应用程序发生许可错误,Monkey依然会发送事件,直到事件计数完成。
4、–kill-process-after-error
用于指定当应用程序发生错误时,是否停止其运行。如果指定此参数,当应用程序发生错误时,应用程序停止运行并保持在当前状态(注意:应用程序仅是静止在发生错误时的状态,系统并不会结束该应用程序的进程)。
5、–monitor-native-crashes
用于指定是否监视并报告应用程序发生崩溃的本地代码
6、–hprof
该选项设置后,将会在monkey事件序列前后立刻生成report,大小为大于5MB,存储在/data/misc
Tips
Sdk 下载后设置环境变量
如果adb命令无效,重启adb服务
使用monkey做app压测的时候使用-s 可以重复之前的操作步骤。
https://www.bilibili.com/video/BV1ft411h7kQ?from=search&seid=4038063240049936772
6节课轻松搞定APP monkey性能专项测试
Monkey自动化脚本测试,monkey压力稳定性测试,自动化混合应用。
Adb(Android Debug Bridge)是android sdk(software development kit)的一个工具
aapt dump badging D:\Android\Browser\Browser.apk
com.android.browser
com.android.browser.BrowserActivity
运行脚本
#头文件、控制monkey发送消息的参数
type=raw events
count=10
speed=1.0
#以下monkey命令
start data>>
#打开测试应用程序
LaunchActivity(com.android.browser,com.android.browser.BrowserActivity)
#等待时间
UserWait(3000)
#点击浏览器网址
Tap(300,152)
#输入www.baidu.com
DispatchString(www.baidu.com)
#输入enter键
DispatchPress(KEYCODE_ENTER)
#输入Home键返回到桌面
DispatchPress(KEYCODE_BACK)