0


介绍下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]-v100

2. 保存日志

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

3. 黑白名单的使用

pck-blacklist-file <黑名单文件>

pck-whitelist-file <白名单文件>

,两者同一时间只能使用一个,不能同时使用

  1. 第一步建立黑白名单文件,黑白名单文件为文本格式,里面存储的是要列入黑白名单的包名,用回车换行区 分,一行一个包名,比如创建黑名单black.txtcom.test.appcom.zui.player
  2. 第二步将刚建好的文件push到手机上,如:adb push D:\black.txt /sdcard/monkeytest执行命令adb shell monkey --pkg-blacklist-file /sdcard/monkeytest/black.txt --throttle500-v-v-v1000

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)启动应用的ActivityTap(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)结束获取帧率

标签: 压力测试

本文转载自: https://blog.csdn.net/qq_37776700/article/details/128419448
版权归原作者 qq_37776700 所有, 如有侵权,请联系我们删除。

“介绍下monkey”的评论:

还没有评论