monkey常用命令

monkey测试简介

1.存放路径:Monkey程序是Android系统自带的,由Java语言写成,在Android文件系统中的存放路径是: /system/framework/monkey.jar。

2.大致操作流程:通过名为“monkey”的Shell脚本去启动Monkey.jar程序(shell脚本在Android文件系统中 的存放路径是:/system/bin/monkey),在你指定的APP应用上模拟用户点击,滑动,输入等操作以极快的速度来对设备程序进行压力测试,检测程序是否会发生异常,然后通过日志进行排错。

3.主要目的:测试app 是否会是否会Crash/anr。

4.操作命令格式:adb shell monkey {+命令参数}

5.帮助命令:adb shell monkey -help

获取Android包名方法:(注意:请开启手机开发者模式,请开启手机USB调试模式)

用adb命令查看当前与用户交互的包名、activity

adb shell "dumpsys activity | grep mFoc"
adb shell "dumpsys window | grep mCurrentFocus" //Linux环境
adb shell dumpsys window | findstr mCurrentFocus //该命令为WIn环境

D:\work\xxxx>adb shell "dumpsys activity | grep mFoc"
mFocusedActivity: ActivityRecord{e7bf55c u0 ***com.xxx.xxxx/.activity.MatchLiveActivity*** t118}
mFocusedStack=ActivityStack{35fa3e5 stackId=1, 3 tasks} mLastFocusedStack=ActivityStack{35fa3e5 stackId=1, 3 tasks}

 

查看该应用包名下的activity栈(过滤)
dumpsys activity | grep “xxxx” —–Linux(Android手机)
dumpsys activity | findstr “xxxx” —–Windows

adb shell dumpsys activity | grep "包名(中的字符串)"

————————————————

 

 

 

monkey常用操作命令简介

-p 包名:指定应用程序。例如:adb shell monkey -p 包名 事件总数

-v:打印log级别,-v越多日志信息越详细,最多支持3个。例如:adb shell monkey -p 包名 -v -v -v 事件总数-v  日志详细程度

Level 0  :  adb shell monkey  -p fishjoy.control.menu  -v 100   最简单(默认),除了启动、测试完成和最终结果外只提供较少的信息。

Level 1  :  adb shell monkey  -p fishjoy.control.menu  -v  -v 100  提供了较为详细的测试信息,如逐个发送到Activity的事件信息

Level 2  :  adb shell monkey  -p fishjoy.control.menu  -v  -v  -v 100 提供了更多的设置信息,如测试中选中或未选中的Activity信息

-s:伪随机数生成器的 seed 值,通俗的说就是个标记,后面跟数字,例如:执行adb shell monkey -s 1 -p 包名 事件总数,这个我标记了-s 1命令操作完之后,我发现有日志报错,我想重新执行这个monkey操作,那你就可以继续执行这个命令,排错时常用。

-f:后接测试脚本名,例如:adb shell monkey -f 脚本名 事件总数

--throttle:翻译减速的意思,后面接时间,单位为ms,,表示事件之间的固定延迟,如果不接该项,monkey将不会延迟,例如:adb shell monkey --throttle 500 -p 包名 事件总数

--pct-事件类别 11个事件百分比控制(有的是9种事件,没有--pct-pinchzoom,--pct-rotation事件)由安卓SDK决定

  • 11种事件,按顺序罗列的
    --pct-touch {+百分比}:0
    翻译触摸,触摸事件泛指发生在某一位置的一个down-up事件,点击
    --pct-motion {+百分比}:1
    翻译动作,动作事件泛指从某一位置接下(即down事件)后经过一系列伪随机事件后弹出(即up事件)
    --pct-pinchzoom {+百分比}:2
    翻译二指缩放,智能机上的放大缩小手势操作事件
    --pct-trackball {+百分比}: 3
    翻译轨迹,轨迹事件包括一系列的随机移动,以及偶尔跟随在移动后面的点击事件
    --pct-rotation {+百分比}:4
    翻译屏幕旋转,横屏竖屏事件
    --pct-nav {+百分比}:5
    翻译基本导航,基本导航事件主要来自方向输入设备的上、下、左、右事件
    --pct-majornav {+百分比}:6
    翻译主要导航,主要导航事件通常指引发图形界面的一些动作,如键盘中间按键、返回按键、菜单按键等
    --pct-syskeys {+百分比}:7
    翻译系统按键,系统按键事件通常指仅供系统使用的保留按键,如HOME键、BACK键、拨号键、挂断键、音量键等
    --pct-appswitch {+百分比}:8
    翻译应用启动,应用启动事件(activity launches)即打开应用,通过调用startActivity()方法最大限度地开启该package下的所有应用
    --pct-flip {+百分比}:9
    翻译翻转,键盘轻弹百分比,如点击输入框,键盘弹起,点击输入框以外区域,键盘收回
    --pct-anyevent {+百分比}:10
    翻译其他类型,其他类型事件指上文中未涉及的所有其他事件,如keypress、不常用的button等

  • 百分比控制以及使用

    • 首先注意一点,这个Event percentages在不同版本的SDK版本中顺序可能会不一样。
    • 如果在monkey参数中不指定事件参数,这些动作都是随机分配的,11个动作其分配的百分比之和为100%,通过添加命令选项来控制每个事件的百分比。
    • 添加事件百分比之后的情况,举例添加--pct-touch事件百分比为100:
    • 命令: adb shell monkey -v -p 包名 --pct-touch 100 100
    • 结果:
    •  

       

    •  
      •  

         

        ## Network stats: elapsed time=3997ms (0ms mobile, 0ms wifi, 3997ms not connected)
        ** System appears to have crashed at event 108 of 10000 using seed 1588642082540   

        该seed值,在上次跑完脚本的时候,可以在最后一行显示打印出来,记得日志显示使用详细,即-v -v -v才能看到seed值,或者在头部第一行也可看到seed值

        当开发修复该crash后,回归测试验证是否修复成功,测试人员需要使用上一次跑的monkey测试中的seed值做回归测试。 

        adb shell monkey -p +包名 -s +seed值 -v 10000 

        比如 

         

         

7.--ignore-crashes:翻译忽略崩溃,当应用程序崩溃或发生失控异常时,monkey将继续运行直到计数完成。如果不设置此项,monkey遇到上述崩溃或异常将停止运行。
8.--ignore-timeouts:翻译忽略超时,当应用程序发生任何超时错误(如ANR,即Application Not Responding)时,monkey将继续运行直到计数完成。如果不设置此项,monkey 遇到此类超时将停止运行。

monkey测试中,如何终止运行:

方法一:新建一个窗口,执行: adb shell ,,再执行ps | grep monkey,返回来的第一个数字,即是monkey的进程号,然后kill pid 进程号。如图

 

 

方法二:对手机进行重启:新建一个窗口 ,执行adb reboot

方法三:exit退出

 

log日志导出

adb shell monkey -p 包名 -v 1000 > F:/monkey.txt

 

 

搬运工仅供参考。后续待补充。 

 

posted @ 2020-04-27 15:55  熊猫meme  阅读(421)  评论(0)    收藏  举报