Monkey,一款安卓自动化测试工具。
基本语法:
adb shell monkey [options] [eventcount]
options的可选项有:
常规类命令:
-h 显示monkey参数的帮助信息
-v 打印出日志信息,最多支持3个-v
事件类命令:
-f 后接测试脚本名
-s 后接随机数生成器的seed值
–throttle 后接时间
–ptc-touch 后接触摸事件的百分比
–ptc-motion 后接动作事件的百分比
–ptc-trackball 后接轨迹球事件的百分比
–ptc-nav 后接基本导航事件百分比
–ptc-majornav 后接主要导航事件百分比
–ptc-syskeys 后接系统按键事件百分比
–ptc-appswitch 后接应用启动事件百分比
–ptc-anyevent 后接其他类型事件百分比
约束力命令:
-p 后接一个或多个包名
-c 后接一个或多个类名
调试类命令:
–dbg-no-events 监视应用程序所调用的包之间的转换
–hprof 在monkey事件序列前后生成profiling report
–ingnore-crashes 当程序崩溃或异常时,继续运行
–ingnore-timeouts 当程序发生超时错误时,继续运行
–ignore-security-exceptions 当程序发生权限错误时,继续运行
–kill-process-after-error 当程序发生错误而停止时,将会
通知系统停止发烧错误的进程
–monitor-native-crashes 运行时native code崩溃事件将
监视并报告
–wait-dbg 暂停执行中的monkey,直到有调试器与它连接
脚本编写:
格式:
type = user 指名脚本类型
count = 10 脚本执行次数
speed = 1.0 命令执行速率
start data >> 相当于一个入口
注意:脚本命令必须为小写字母
脚本命令以回车符作为一条命令的结束
事件:
轨迹球事件:
DispatchTrackball (long downtime, long eventTime, int action, float x, float y,
Float pressure, float size, int metaState, float xPrecision,
Float yPrecision, int device, int edgeFlags)
轨迹球事件参数:
long downtime 键最初被按下的时间
long eventTime 事件发生的时间
long eventTime 动作,down 0,up,1,multiple 2
float x x坐标
float y y坐标
Float pressure 当前事件的压力,范围0~1
float size 触摸的近似值 范围0~1
int metaState 当前按下的meta键的标识
float xPrecision x坐标的精确值
float yPrecision y坐标的精确值
int device 事件来源,0表示不来自物理设备
int edgeFlags 坐标是否超出了屏幕范围
输入字符串事件:
DispatchString(String text) 输入不加引号的字符串
启动应用:
LaunchActivity(String packageName, String ClassName)
等待事件:
UserWait(long sleepTime)
如果测试成功,在log的最后,会打印出当前执行事件的次数和所花费的时间; Monkey finished代表执行完成。
看monkey的日志时,注意第一个switch以及异常信息
在使用monkey的过程中,发现只能根据包名测试,不能单独测试某一个类。现在不清楚是有这个局限性还是我还未了解测试类的方式。