monkey命令

一、monkey介绍

        顾名思义,Monkey就是猴子, Monkey测试,就像一只猴子, 在电脑面前,乱敲键盘在测试。 猴子什么都不懂, 只知道乱敲通过Monkey程序模拟用户触摸屏幕、滑动Trackball、 按键等操作来对设备上的程序进行压力测试,检测程序多久的时间会发生异常。

        monkey主要用于安卓稳定性测试,自动的一个压力测试小工具,主要目的就是为了测试app是否会crash(奔溃)

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

        (2 ) Monkey.jar 程序是由一个名为 “monkey” 的 Shell 脚本来启动执行, shell 脚本在 Android 文件系统
中 的存放路径是: /system/bin/monkey ;
        (3 ) Monkey 命令启动方式:
                a)可以通过PC 机 CMD 窗口中执行 : adb shell monkey { + 命令参数}来进行 Monkey 测试
                b)在PC 上 adb shell 进入 Android 系统,通过执行 monkey {+ 命令参数 } 来进行 Monkey 测试
                c ) 在Android 机或者模拟器上直接执行 monkey 命令,可以在 Android 机上安装 Android 终端模拟器
二、使用monkey对其测试
        adb shell monkey 100 执行 monkey 测试 100 次 针对 rom 测试

       

 

 -p <允许的包名列表>:adb shell monkey -p 包名 100

 

         用此参数指定一个或多个包。指定包之后,monkey将只允许系统启动指定的app。如果不指定包, monkey将允许系统启动设备中的所有app。

        显示日志详细程度:用亍指定反馈信息级别(信息级别就是日志的详细程度),总共分3个级别,分别对应的参数如下 表所示: Level 0: adb shell monkey -p 包名 -v 30 // 缺省值,仅提供启动提示、测试完成和最终结果等少量信息

 

        Level 1: adb shell monkey -p 包名 -v -v 30 // 提供较为详细的日志,包括每个发
送到 Activity 的事件信息


        Level 2: adb shell monkey -p 包名 -v -v -v 30 // 最详细的日志,包括了测试中选中 /
未选中的 Activity 信息

 

 

         将log信息保存到本地:adb shell monkey 100 >路径

 

        查看结果

 

        -s随机数种子:用亍指定伪随机数生成器的seed值,如果seed相同,则两次Monkey测试所产生的事件序列也相同的。 示 例:monkey测试1:adb shell monkey –s 10 100

        

 

        查看结果

 

        --throttle <毫秒>        ​​​​​:用亍指定用户操作(即事件)间的时延,单位是毫秒;如果不指定这个参数,monkey会尽可能快的 生成和发送消息。 例:adb shell monkey -p com.example.login --throttle 300 100 表示执行100个伪随机用户事件流,事件间隔为300毫秒。 注:一般设置为300毫秒,原因是实际用户操作的最快300毫秒左右一个动作事件。

 

 

         --pct-touch 触摸事件:调整触摸事件的百分比。(触摸事件是指在屏幕中的一个down-up事件,即在屏幕某处按下并抬起的操作) –pct-touch:触摸事件。即在某一位置的Down-Up(手指的放下和抬起)事件。Down(ACTION_DOWN)和 Up(ACTION_UP)的坐标临近,但并非相同。 如:adb shell monkey --pct-touch 67 -v 10 表示执行10个伪随机用户事件流,并调整其中触摸事件的百分比为67%。 注:此参数设置要适应当前被测应用程序的操作,比如一个应用80%的操作都是触摸,那就可以将此参数的百分比设置成相应较高的百分比。

      

 

         查看结果  

     

 

 

 

        --ignore-crashes :作用:通常,应用发生崩溃或异常时Monkey会停止运行。如果设置此项,Monkey将继续发送事件给系统,直到事件计数完成。正常操作,不忽略异常

        --ignore-timeouts(ANR):作用:通常,应用程序发生任何超时错误(如“Application Not responding”对话框)Monkey将停止运行,设置此项,Monkey将继续发送事件给系统,直到事件计数完成。adb shell monkey --ignore-timeouts –v 10同上

        monkey实例:monkey -p 包名 -s 23 --throttle 2000 --ignore-crashes --ignore-timeouts -v -v -v 100000>/data/local/tmp/log.txt
monkey是稳定性测试一般在后期才做   crash崩溃   ANR闪退和无响应
下面的100代表事务(点击是事务横屏/竖屏也算是事务)
adb shell monkey 100 执行monkey测试100次(连接的设备中所有的程序)出现Events injected: 100(代表100次事务已经执行完了)

adb shell pm list package -3查询第三方包名的(包名一般都是com.zsyd.reader)

adb shell monkey -p 包名 事务数             指定应用程序执行
adb shell monkey -p 包名 -v 30               显示日志的详细程度(30事务数)
adb shell monkey -p 包名 -v -v 30          显示日志的详细程度
adb shell monkey -p 包名 -v -v -v 30      显示日志的详细程度(最详细的)

事务0~10共11个类型
点击 触屏 划屏

seed(随机种子数)

adb shell monkey 100 >路径

adb shell monkey -s 10 100                                               (10代表事务的类型)
                                                特rua绕
adb shell monkey -p 包名 --throttle 300 100                       (300代表事务每3秒执行一下,延时等待  100代表执行多少下)

adb shell monkey --throttle 300 --tcp-touch 70 -v 100       控制事件的占比(70表示占比为%70)
                                                            一哥唠  科瑞斯
adb shell monkey --throttle 300 --ignore-crashes  -v 100     (忽略奔溃)
adb shell monkey --throttle 300 --ignore-timeouts  -v 100     (忽略超时)

adb shell pm list package -3
adb push 路径\文件名.txt  sdcard/
adb shell monkey --pkg-blacklist-file /sdcard/文件名.txt  1000    加入黑名单不执行
adb shell monkey --pkg-whitelist-file /sdcard/文件名txt  1000    加入白名单只会执行加入的这个文件


monkey事件有哪些:

1、事件简介

monkey所执行的随机事件流中包含11大事件,分别是触摸事件、手势事件、二指缩放事件、轨迹事件、屏幕旋转事件、基本导航事件、系统按键事件、启动Activity事件、键盘事件、其他类型事件

2、触摸事件

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

3、手势事件   

手势事件是指在屏幕某处的按下、随机移动、抬起的操作,即直线滑动操作。可通过--pct-motion参数来配置其事件百分比。该事件是由一个ACTION_DOWN事件、一系列ACTION_MOVE事件和一个ACTION_UP事件组成的,在手机上看到的实际操作是一个没有拐弯的直线滑动操作。

4、轨迹事件    

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

5、屏幕旋转事件

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

6、基本导航事件    

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

7、主要导航事件

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

8、系统按键事件

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

9.启动Activity事件

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

10、键盘事件

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

11、其他类型事件

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


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值