zoukankan      html  css  js  c++  java
  • monkey_使用_基础参数

    我的前置条件:USB连接Redmi 5A,开发者选项,USB调试已经打开

    adb devices -l     # 看是否连接成功,如下图则连接成功

    启动monkey   如下图

    参数简介

    一、基础参数

    1)-p

    参数-p用于约束限制,用此参数指定一个或多个包(Package,即App)。指定

    包之后,Monkey将只允许系统启动指定的APP。如果不指定包,Monkey将允许系统启动设备中的所有APP。

    * 指定一个包: adb shell monkey -p [包名]  100

    说明:com.example.sellClientAPP 为包名,100是事件计数(即让Monkey程序模拟100次随机用户事件)。

    * 指定多个包:adb shell monkey -p com.htc.Weather –p com.htc.pdfreader  -p com.htc.photo.widgets 100  

    * 不指定包:adb shell monkey 100

     说明:Monkey随机启动APP并发送100个随机事件。

    * 要查看设备中所有的包,在CMD窗口中执行以下命令:

      >adb shell

      #cd data/data

      #ls

    我的手机没有root所以不能用这个属性了,用下面这种方法

    > adb shell pm list package

    关键字 查找想要的包名

    > adb shell

    $ pm list package | grep [包名或关键字]

    2)   -v

    用于指定反馈信息级别(信息级别就是日志的详细程度),总共分3个级别,分别对应的参数如下表所示:

    日志级别 Level 0 

    示例 adb shell monkey -p com.htc.Weather –v 100

    说明 缺省值,仅提供启动提示、测试完成和最终结果等少量信息 相应源代码如图所示了,这十分有利于调试了。

    日志级别 Level 1

    示例 adb shell monkey -p com.htc.Weather –v -v 100

    说明  提供较为详细的日志,包括每个发送到Activity的事件信息

    日志级别 Level 2

    示例 adb shell monkey -p com.htc.Weather –v -v –v 100

    说明  最详细的日志,包括了测试中选中/未选中的Activity信息

    日志保存

    • 例如:保存到电脑上并命名为monkey.txt

      执行:adb shell monkey -p 包名 -v 1000 > /Users/weixiangyang/Desktop/monkey.txt  没有这个文件,他会创建一个

    • 例如:保存到电脑上标准流与错误流分开保存,分别命名为info.txt,error.txt

      info.txt:此文件在手机上的SDCARD中,主要记录了MONKEY测试时发送的各种事件,如触摸事件的位置等等。

      error.txt:此文件在手机上的SDCARD中,主要记录了MONKEY测试时产生的一些ANR、强制关闭等异常。 

      执行:adb shell monkey -p 包名 -v 1000 1>/Users/weixiangyang/Desktop/info.txt 2>/Users/weixiangyang/Desktop/error.txt

    保存到手机上。注意:手机要root

    • 例如:保存到手机上并命名为monkey.txt

    执行:adb shell说明:进入adb shell后就相当于进入linux的root下面,但是没有权限在里面创建文件,所以手机要root

    monkey -p 包名 -v 1000 > /mnt/sdcard/monkey.txt
    注意:我的 adb shell 跟monkey XXX是分开执行的,分两行!!!

    查看的话。先cd 到/sdcard 然后ls 找到monkey.txt文件,用cat 命令查看monkey.txt查看文件

    • 例如:保存到电脑上标准流与错误流分开保存,分别命名为info.txt,error.txt

    执行:adb shell monkey -p 包名 -v 1000 1>/mnt/sdcard/info.txt 2>/mnt/sdcard/error.txt

    3)-s

    用于指定伪随机数生成器的seed值,如果seed相同,则两次Monkey测试所产生的事件序列也相同的。

    * 示例:

     Monkey测试1:adb shell monkey -p com.htc.Weather –s 10 100

       Monkey 测试2:adb shell monkey -p com.htc.Weather –s 10 100

       两次测试的效果是相同的,因为模拟的用户操作序列(每次操作按照一定的先后顺序所组成的一系列操作,即一个序列)是一样的。操作序

    列虽   然是随机生成的,但是只要我们指定了相同的Seed值,就可以保证两次测试产生的随机操作序列是完全相同的,所以这个操作序列伪随 机的;

    4)--throttle <milliseconds>

    作用:在事件之间插入固定的时间(毫秒)延迟,你可以使用这个设置来减缓Monkey的运行速度,如果你不指定这个参数,则事件之间将没有延迟,事件将以最快的速度生成。

    注:常用参数,一般设置为300毫秒,原因是实际用户操作的最快300毫秒左右一个动作事件,所以此处一般设置为300毫秒。

    例:adb shell monkey --throttle 300 -v 10

    5)-f

    执行monkey脚本, 

    $ adb shell monkey -f <scriptfile> <event-count>

        -f:后接测试脚本名,表示要使用monkey运行指定的monkey脚本,

        如:$ adb shell monkey -f /mnt/sdcard/test01 3

    注:这里的3是指循环次数,不是事件数

    二、事件类参数

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

    操作事件简介

    Monkey所执行的随机事件流中包含11大事件,分别是触摸事件、手势事件、二指缩放事件、轨迹事件、屏幕旋转事件、基本导航事件、主要导航事件、系统按键事件、启动Activity事件、键盘事件、其他类型事件。Monkey通过这11大事件来模拟用户的常规操作,对手机App进行稳定性测试。下面让我们来详细了解这11大事件。

      • 11种事件,按顺序罗列的
        --pct-touch {+百分比}:0
        翻译触摸,触摸事件泛指发生在某一位置的一个down-up事件,点击

        触摸事件是指在屏幕某处按下并抬起的操作,可通过--pct-touch参数来配置其事件百分比。从Monkey执行该事件对外输出的日志可以看到。 该事件由一组Touch(ACTION_DOWN)和Touch(ACTION_UP)事件组成,在手机上看到实际操作类似于点击。


        --pct-motion {+百分比}:1
        翻译动作,动作事件泛指从某一位置接下(即down事件)后经过一系列伪随机事件后弹出(即up事件)

        手势事件是指在屏幕某处的按下、随机移动、抬起的操作,即直线滑动操作。可通过--pct-motion参数来配置其事件百分比。

        该事件是由一个ACTION_DOWN事件、一系列ACTION_MOVE事件和一个ACTION_UP事件组成的,在手机上看到的实际操作是一个没有拐弯的直线滑动操作。


        --pct-pinchzoom {+百分比}:2
        翻译二指缩放,智能机上的放大缩小手势操作事件

        二指缩放事件是指在屏幕上的两处同时按下,并同时移动,最后同时抬起的操作,即智能机上的放大缩小手势操作。可通过--pct-pinchzoom参数来配置其事件百分比。从Monkey执行该事件对外输出的日志可以看到:

        该事件起始是一个ACTION_DOWN事件和一个ACTION_POINTER_DOWN事件,即模拟两个手指同时点下;中间是一系列的ACTION_MOVE事件,即两个手指同时在屏幕上直线滑动;结束是由一个ACTION_POINTER_UP事件和一个ACTION_UP事件组成的,即两个手指同时放开。


        --pct-trackball {+百分比}: 3
        翻译轨迹,轨迹事件包括一系列的随机移动,以及偶尔跟随在移动后面的点击事件

        轨迹事件是由一个或多个随机的移动组成的,有时会伴随着点击。很早之前的Android手机带有轨迹球,这个事件就是模拟的轨迹球的操作。现在的手机几乎都没有轨迹球,但轨迹球事件中包含曲线滑动操作,如果被测程序需要曲线滑动时可以选用此参数。可通过--pct-trackball参数来配置其事件百分比。从Monkey执行该事件对外输出的日志可以看到:

        该事件是由一系列的Trackball(ACTION_MOVE)事件组成的,观察手机上的操作,即为一系列的曲线滑动操作。

      • --pct-rotation {+百分比}:4
        翻译屏幕旋转,横屏竖屏事件

        屏幕旋转事件是一个隐藏事件,在Android官方文档中并没有记录这个事件。它其实是模拟的Android手机的横屏和竖屏切换。可通过--pct-rotation参数来配置其事件百分比。从Monkey执行该事件对外输出的日志可以看到: [代码] 该事件由一个rotation事件组成,其中degree表示的是旋转方向,顺时针旋转,0表示旋转90度的方向,1表示旋转180度的方向,2表示旋转270度的方向,3表示旋转360度的方向。在执行过程中,可以看到手机屏幕在横竖屏之间不断地切换。


        --pct-nav {+百分比}:5
        翻译基本导航,基本导航事件主要来自方向输入设备的上、下、左、右事件

        基本导航事件是指点击方向输入设备的上、下、左、右按键的操作,现在手机上很少有上、下、左、右按键,这种事件一般用得比较少。可通过--pct-nav参数来配置其事件百分比。从Monkey执行该事件对外输出的日志可以看到:

        该事件是由一个Key(ACTION_DOWN)和一个Key(ACTION_UP)组成的,点击的就是上、下、左、右四个方向按键。


        --pct-majornav {+百分比}:6
        翻译主要导航,主要导航事件通常指引发图形界面的一些动作,如键盘中间按键、返回按键、菜单按键等

        主要导航事件是指点击“主要导航”按键的操作,这些按键通常会导致UI界面中的动作,如键盘的中间键、回退按键、菜单按键。可通过--pct-majornav参数来配置其事件百分比。从Monkey执行该事件对外输出的日志可以看到: [代码] 该事件是由一个Key(ACTION_DOWN)和一个Key(ACTION_UP)组成的,点击的按键就是中间键和菜单键


        --pct-syskeys {+百分比}:7
        翻译系统按键,系统按键事件通常指仅供系统使用的保留按键,如HOME键、BACK键、拨号键、挂断键、音量键等

        系统按键事件是指点击系统保留使用的按键的操作,如点击Home键、返回键、音量调节键等。可通过--pct-syskeys参数来配置其事件百分比。从Monkey执行该事件对外输出的日志可以看到: [代码] 该事件是由一个Key(ACTION_DOWN)和一个Key(ACTION_UP)组成的,点击的就是上面说到的几个系统按键。


        --pct-appswitch {+百分比}:8
        翻译应用启动,应用启动事件(activity launches)即打开应用,通过调用startActivity()方法最大限度地开启该package下的所有应用

        启动Activity事件是指在手机上启动一个Activity的操作。在随机的时间间隔中,Monkey将执行一个startActivity()方法,作为最大限度上覆盖被测包中全部Activity的一种方法。可通过--pct-appswitch参数来配置其事件百分比。从Monkey执行该事件对外输出的日志可以看到: [代码] 该事件是由一个Switch操作组成的,从手机上看,上面的操作实际是打开了com.android.settings这个应用的一个com.android.settings.Settings的Activity界面。


        --pct-flip {+百分比}:9
        翻译翻转,键盘轻弹百分比,如点击输入框,键盘弹起,点击输入框以外区域,键盘收回

        键盘事件主要是一些与键盘相关的操作。比如点击输入框、键盘弹起、点击输入框以外区域、键盘收回等。可通过--pct-flip参数来配置其事件百分比。从Monkey执行该事件对外输出的日志可以看到: [代码] 如日志所示,这里主要是键盘的打开和关闭操作。


        --pct-anyevent {+百分比}:10
        翻译其他类型,其他类型事件指上文中未涉及的所有其他事件,如keypress、不常用的button等

        其他类型事件包括了除前面提到的10种事件外其他所有的事件,如按键、其他不常用的设备上的按钮等。可通过--pct-anyevent参数来配置其事件百分比。从Monkey执行该事件对外输出的日志可以看到: [代码] 该事件是由一个Key(ACTION_DOWN)和一个Key(ACTION_UP)组成的,点击的按键就是其他的一些系统按键,如字母按键、数字按键等。因为现在手机很少带字母按键或数字按键,所以这个事件一般使用得比较少。

      • 百分比控制以及使用

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

     

    调试类参数

    --dbg-no-events:初始化启动的activity,但是不产生任何事件,monkey会启动待测应用,但不发送任何消息,建议与-v,-p,-throttle一起使用。
     
    --hprof:指定该项后在事件序列发送前后会立即生成分析报告,monkey会在发送事件前后生成性能报告(即内存的快照文件),一般在设备的/data/misc目录下生成一个5M左右的文件。
     
    --ignore-crashes:忽略崩溃,待测应用崩溃或发生异常时,继续发送系统消息,直到指定个数的消息全部发送完毕,否则停止运行。
     
    --ignore-timeouts:忽略超时,当应用程序发生任何超时错误(如ANR,即Application Not Responding)时,monkey将继续运行直到计数完成。如果不设置此选项,monkey遇到此类超时对话框将停止运行。
     
    --ignore-security-exceptions:忽略安全异常,当应用程序发生任何权限错误(如启动一个需要某些权限的Activity)时,monkey将继续运行直到计数完成。如果不设置此选项,monkey遇到此类权限错误将停止运行。
     
    --kill-process-after-error:发生错误后直接杀掉进程,当monkey因为某个错误指定运行时,出问题的应用会留在系统上继续执行,这个选项通知系统当错误发生时杀掉进程。
     
    --monitor-native-crashes:跟踪本地方法的崩溃问题,监视由Android C/C++代码部分(cpu计算部分)引起的崩溃,此时如果设置了“--kill-process-after-error”,整个系统会关机。
    --wait-dbg: 启动monkey后,先中断其运行,等待调试器附加上来。
     
     
    工作中为了保证测试数量的完整进行,我们一般不会在发生错误时立刻退出压力测试。monkey 测试命令如下:
    adb shell monkey -p com.elzj.camera -s 500 --ignore-crashes --ignore-timeouts --monitor-native-crashes -v -v 10000 > E:monkey_log20190218.txt
     
    kill此参数用来杀掉进程:kill pid 先执行adb shell  再ps |grep monkey 查询结果如下图中15248 即为PID  再kill pid(15248)即可
     
     

    参考地址:https://www.cnblogs.com/manuosex/p/3215270.html

      https://www.cnblogs.com/lauren1003/p/6193277.html

      https://blog.csdn.net/lucytan01/article/details/79958727

      https://testerhome.com/topics/12013

    https://www.cnblogs.com/yajing-zh/p/4340795.html

  • 相关阅读:
    “介绍一下自己吧”——记2020BUAA软工团队介绍和采访
    [no code][scrum meeting] Alpha 7
    [no code][scrum meeting] Alpha 6
    [no code][scrum meeting] Alpha 5
    [no code][scrum meeting] Alpha 4
    [no code][scrum meeting] Alpha 3
    [no code][scrum meeting] Alpha 2
    [no code][scrum meeting] Alpha 1
    [no_code]团队贡献分分配规则
    [no_code]团队任务拆解Alpha
  • 原文地址:https://www.cnblogs.com/niunai/p/10383079.html
Copyright © 2011-2022 走看看