Monkey是Android中的一个命令行工具,可以运行在模拟器里或者现实设备中,向系统发送伪随机的用户事件流(点击、滑动、Application切换、横竖屏、应用关闭)实现对正在开发的应用程序进行压力测试。monkey测试是一种为了测试软件的稳定性,健壮性的快速有效的方法,只针对Activity做测试,不能对Service做测试。
1、–help : 列出简单的用法
adb shell monkey -help
2、指定应用命令-p,允许启动的app包名
比如先启动计算器:adb shell pm list package -3(找到打开的包)
adb shell monkey -p com.lilysgame.calculatorjw 1000(随机点击1000次)
如不加-p参数,也就是不指定包,随机点击app,所有的app都有可能启动并执行
adb shell monkey 1000
3、-v : 操作日志记录
命令行的每一个-v将增加反馈信息的级别。
例:
adb shell monkey -p com.lilysgame.calculatorjw -v 1000
4、-s种子数
指定了相同的种子数,那么这两次monkey运行所发送的事件类型和顺序就是一样的
作用:做了一次monkey测试,出现了一个bug要复现。指定和上一次相同的种子数,再运行一遍
-s后边可以是任意的数字或字母
例:
adb shell monkey -p com.lilysgame.calculatorjw -v 100
adb shell monkey -p com.lilysgame.calculatorjw -v -s 1646799424729 100
5、--throttle :插入固定延迟,事件的间隔数
在事件之间插入固定延迟。通过这个选项可以减缓Monkey的执行速度。如果不指定该选项,Monkey将不会被延迟,事件将尽可能快地被执行。
例:
adb shell monkey -p com.lilysgame.calculatorjw --throttle 500 -v 100
6、调整触摸事件百分比
触摸事件不单单是按键,它泛指发生在某一位置的一个down-up事件。
#调整触摸事件百分比为80%
例:
adb shell monkey -p com.lilysgame.calculatorjw --pct-touch 80 -v 100
7、调整手势事件百分比(滑动)
#调整手势占比为100%
例:
adb shell monkey -p com.lilysgame.calculatorjw --pct-motion 100 -v 100
8、调整屏幕旋转事件百分比
--pct-rotation 后面接屏幕旋转事件的比例值。
例:
adb shell monkey -p com.lilysgame.calculatorjw --pct-rotation 50 -v 100
9、调整应用启动事件的百分比
如果你希望调整应用启动事件的百分比。
--pct-appswitch:后面接应用启动事件百分比。
例:
adb shell monkey -p com.lilysgame.calculatorjw --pct-appswitch 50 -v 100
10、--ignore-crashes : 忽略操作是崩溃异常
通常,应用发生崩溃或异常时Monkey会停止运行。如果设置此项,Monkey将继续发送事件给系统,直到事件计数完成。
adb shell monkey -p com.lilysgame.calculatorjw --ignore-
crashes -v 100
11、--ignore-timeouts :忽略超时
通常,应用程序发生任何超时错误(如“Application Not responding”对话框)Monkey将停止运行,设置此项,Monkey将继续发送事件给系统,直到事件计数完成。
adb shell monkey -p com.lilysgame.calculatorjw --ignore-
timeouts -v 100
12、--ignore-security-exceptions :忽略程序发生许可异常
通常,当程序发生许可错误(例如启动一些需要许可的Activity)导致的异常时,Monkey将停止运行。设置此项,Monkey将继续发送事件给系统,直到事件计数完成。
adb shell monkey -p com.lilysgame.calculatorjw --ignore-
security-exceptions -v 100
常见的app测试的问题
crash问题崩溃,可通过日志查看
ANR问题,应用程序不响应
exception问题
1、测试案例
对QQ进行随机测试,测试希望通过Monkey来模拟用户的随机操作,检查被测应用是否会出现异常(应用崩溃或者无响应)。
2、需求分析
这个测试的目的是希望模拟用户操作,因此需要让Monkey执行的事件尽可能地接近用户的常规操作,这样才可以最大限度地发现用户使用过程中可能出现的问题。
3、monkey指令
例:
adb shell monkey -p com.tencent.mobileqq --throttle 400 --pct-touch 40 --pct-motion 25 --pct-appswitch 10 --pct-rotation 5 --ignore-crashes --ignore-timeouts -v -v 200