介绍下monkey

1. 基本语法

UI/Application Exerciser Monkey

adb shell monkey [options] <event-count>

options可以分为以下5个类型:

  1. 基本配置参数

    参数说明
    -help输出monkey的使用指南
    -v表示打印信息的级别,可以在命令行中出现多次,每一个v选项都会增加monkey向命令行打印输出的详细级别。默认的0只会打印启动信息、测试完成信息和最终的结果信息。级别1会打印测试执行的一些信息,级别2会打印最详细的信息。
  2. 事件类型参数

    参数说明
    -s <随机数>通俗一点说monkey测试都是一些随机操作,如果一次操作中出现了bug,如果要复现bug是比较难的。在每次操作的时候加上一个seed值,现在操作只要seed值是一样的,就能帮助我们复现操作。
    –throttle <毫秒数>有时候monkey执行事件很快,肉眼根本看不清点击事件,加上这个参数可以控制每个事件之间的间隔数,使得执行动作慢下来,方便我们查看
    –pct-touch <百分比>设置触控事件生成的比例
    –pct-motion <百分比>设置滑动事件的生成比例
    –pct-trackball <百分比>设置轨迹事件的比例
    –pct-nav <百分比>设置“基本”的导航事件的生成比例。导航事件是指模拟方向性设备输入向上/下/左/右导航操作
    –pct-majornav <百分比>设置轨迹事件的比例
    –pct-syskeys <百分比>设置系统按键消息的比例,系统中保留的按键消息,如:首页(home)、后退(back)、拨号、挂断、音量控制键
    –-pct-appswitch <百分比>设置启动活动的事件比例,每隔一段随机时间,monkey就会调用startActivity()函数来尽可能地覆盖待测应用的界面
    –-pct-anyevent <百分比>设置其他事件的比例,包括普通的按键消息,设备上一些不常用的按键等
  3. 约束性参数

    参数说明
    -p <包名>使用这个参数可以指定一个或几个包名,monkey就只会测试这些包中的活动,同时设置多个包名时,每个包需要用“-p”参数制定
    -c<意图的种类>定意图的种类,这样monkey只会启动可以处理的这些种类的意图活动,如果没有设定这个选项,monkey只会启动列有Intent.CATEGORY_LAUNCHER和Intent.CATEGORY_MONKEY的活动
  4. 调试类参数

    参数说明
    –dbg-no-events指定了这个选项,monkey知会启动待测程序,不会发送消息
    –hprof如果指定了这个选项,monkey会在发送事件的前后生成性能报告
    -ignore-crashes一般情况下,monkey会在待测应用奔溃或者发生未处理异常后停止运行,如果指定了这个选项,会继续向系统发送消息,直到指定个数的消息发送完毕
    –ignore-timeouts通常情况下,当应用程出现 应用程序没有响应 对话框monkey会停止,如果指定这个选项,monkey将继续向系统发送事件,直到完成
    –ignore-security-exceptions通常情况下,当应用程序发生权限错误(如启动一个需要某些许可的Activity)如果指定这个选项,monkey将继续向系统发送事件,直到完成
    –kill-process-after-error这个选项可以通知系统当应用发生错误时杀掉进程
    –monitor-native-crashes监控和报告Android系统中本机代码的崩溃事件,如果-kill-process-after-error设置,系统将停止
    –wait-dbg启动monkey后,先中断其运行,等待调试器附加上来
  5. 隐藏的参数类型

    参数说明
    -pck-blacklist-file <黑名单文件>设置该选项后,monkey将不测试该名单中的包,文档中每包名写一行
    -pck-whitelist-file <白名单文件>设置该选项后,monkey只测试该名单中的包,文档中每包名写一行
    -f <脚本文件>设置monkey执行自定义脚本文件

比如:

# 启动指定app,向其发送100个伪随机事件
adb shell monkey -p [packagename] -v 100

2. 保存日志

# 保存运行日志到D盘下的 log.log文件中
adb shell monkey -p [packagename] -v -v -v 1000 >D:\log.log

3. 黑白名单的使用

pck-blacklist-file <黑名单文件>pck-whitelist-file <白名单文件>,两者同一时间只能使用一个,不能同时使用

  1. 第一步建立黑白名单文件,黑白名单文件为文本格式,里面存储的是要列入黑白名单的包名,用回车换行区
    分,一行一个包名,比如创建黑名单black.txt

    com.test.app
    com.zui.player
    
  2. 第二步将刚建好的文件push到手机上,如:

    adb push D:\black.txt /sdcard/monkeytest
    

    执行命令

    adb shell monkey --pkg-blacklist-file /sdcard/monkeytest/black.txt --throttle 500  -v -v -v 1000
    

4. 停止monkey

Monkey一旦运行起来,就无法停止,直到事件完成或者异常终止执行(不能选择上述命令中忽略崩溃命令),但是我们可以通过杀进程的方式终结monkey

# 获取monkey 的 PID,应该是 com.android.commands.monkey
adb shell ps | grep monkey
# 杀进程
adb shell kill [pid]

5. monkey脚本

有时候我们不想让它随机执行,通过脚本可以让测试按照我们自定义的流程来执行。使用-f参数就可以执行Monkey的脚本了 adb shell monkey -f <script> 1

官网没有介绍Monkey脚本的使用的文章,可以参照sdk源码中的写法。在 MonkeySourceScriptjava 这个类中可以参考。

API说明
LaunchActivity(Pkg_name,cl_name)启动应用的Activity
Tap(x,y,tapDuration)模拟一次手指单击事件
DispatchPress(KeyCodeName)按键
RotateScreen(ratationDegree,peresist)旋转屏幕
ratationDegree:四个参数0123分别代表0,90,180,270
peresist:两个参数^0,0旋转后固定和旋转后不固定
DispatchFlip(true/false)打开或关闭软键盘
LongPress()长按两秒
PressAndHold(x,t,pressDuration)模拟长按事件
DispatchString(input)输入字符串
Drag(sStart,yStart,xEnd,yEnd.stepCount)用于模拟一个拖拽操作
PinchZoom(pt1xStart,pt1yStart,pt1xEnd,pt1yEnd,pt2xStart,pt2yStart,pt2xEnd,pt2yEnd,stepCount)模拟缩放手势
UserWait(sleepTime)让脚本中断一段时间
DeviceWakeUp()唤醒屏幕
PowerLog(power_log_type,test_case__status)模拟电池电量信息
WriteLog()将电池信息写入SD卡
RunCmd()运行shell命令
DispatchPointer(downtime,eventTime,action,x,yxpressure,size,metastate,xPrecision,yPrecision,device,edgeFilags)向指定位置发送单个手势
action:0是按下,1是弹起
DispatchKey(downTime,eventTime,action,code,repeat,metaStatue,device,scancode)发送按键消息
Launchlnstrumentation(test_name,runner__name)运行一个instrumentation测试用例
DispatchTrackball模拟发送轨迹球事件
ProfileWait等待5秒
StartCaptureFramerate()获取帧率
EndCaptureAppFramerate(input)结束获取帧率
startCaptureAppFramerate(app)获取指定应用帧率
EndCaptureAppFramerate(app,input)结束获取帧率
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值