zoukankan      html  css  js  c++  java
  • monkey命令大全

    一、认识monkey

    Monkey 就是SDK中附带的一个工具。Monkey是Android中的一个命令行工具,可以运行在模拟器里或实际设备中;

    它向系统发送伪随机的用户事件流(如按键输入、触摸屏输入、手势输入等),实现对正在开发的应用程序进行压力测试;

    Monkey测试是一种为了测试软件的稳定性、健壮性的快速有效的方法。

    Monkey特点:

    1、测试的对象仅为应用程序包,有一定的局限性。

    2、Monky测试使用的事件数据流是随机的,不能进行自定义。

    3、可对MonkeyTest的对象,事件数量,类型,频率等进行设置。

     

    二、Monkey的基本用法

    1.查看帮助

    adb shell monkey  或者adb shell monkey -help

    usage: monkey [-p ALLOWED_PACKAGE [-p ALLOWED_PACKAGE] ...]
    [-c MAIN_CATEGORY [-c MAIN_CATEGORY] ...]
    [--ignore-crashes] [--ignore-timeouts]
    [--ignore-security-exceptions]
    [--monitor-native-crashes] [--ignore-native-crashes]
    [--kill-process-after-error] [--hprof]
    [--pct-touch PERCENT] [--pct-motion PERCENT]
    [--pct-trackball PERCENT] [--pct-syskeys PERCENT]
    [--pct-nav PERCENT] [--pct-majornav PERCENT]
    [--pct-appswitch PERCENT] [--pct-flip PERCENT]
    [--pct-anyevent PERCENT] [--pct-pinchzoom PERCENT]
    [--pkg-blacklist-file PACKAGE_BLACKLIST_FILE]
    [--pkg-whitelist-file PACKAGE_WHITELIST_FILE]
    [--wait-dbg] [--dbg-no-events]
    [--setup scriptfile] [-f scriptfile [-f scriptfile] ...]
    [--port port]
    [-s SEED] [-v [-v] ...]
    [--throttle MILLISEC] [--randomize-throttle]
    [--profile-wait MILLISEC]
    [--device-sleep-time MILLISEC]
    [--randomize-script]
    [--script-log]
    [--bugreport]
    [--periodic-bugreport]
    COUNT

    2.参数 -p ,比如:

    adb shell monkey -p 包名 -v 500

    -p参数后面写上需要测试的包名,则可轻松跑通一条实例

    3.参数: -v

    adb shell monkey -p 包名 -v 500

    -v 是描述日志级别,用于跑monkey输出日志

    日志级别共有三级,Level0:-v 、Level1:-v -v、Level2:-v -v -v

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

    Monkey 1:adb shell monkey -p 包名 -s 10  100

    Monkey 2:adb shell monkey -p 包名 –s 10 100

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

     

    5.参数: --throttle<毫秒>,操作事件间的时延,单位是毫秒;

    adb shell monkey -p cn.emoney.acg --throttle 5000 100

     

    6.忽略报错参数,一般来说,不设置参数的话,monkey遇到报错就会停止,所以加上一些忽略参数,monkey遇到报错时可继续运行。

    --ignore-crashes(应用程序崩溃或异常时(crash、exception),继续发送事件信息)     

    adb shell  monkey -p 包名 --ignore-crashes 1000

    --ignore-timeouts(在应用程序超时(ANR)的时候,继续发送事件)     

    adb shell  monkey -p 包名 --ignore-timeouts 1000

     –ignore-security-exceptions(在应用程序发生许可证错误的时候(认证或证书异常),继续发送事件)

    adb shell  monkey -p 包名  –ignore-security-exceptions 1000

    –ignore-native-carshes(忽略本地代码导致的崩溃)

    adb shell  monkey -p 包名 –ignore-native-carshes 1000

     

    7.–pct调整事件的百分比,具体如下: 
    –pct-touch 触摸事件百分比,就是log中down-up事件,发生在屏幕的某一个单一的位置,比如:adb shell monkey -p com.xxxx.xxxx–pct-touch 30 -v 500

    –pct-motion 动作事件的百分比 

    –pct-trackball 轨迹事件的百分比,拖动屏幕

    –pct-nav 基本导航事件的百分比,如上下左右键 

    –pct-majornav 主要导航事件的百分比,如中间键,取消、确定或菜单引发的图形接口的动作 

    –pct-syskeys 系统按键事件,如Home、Back、StartCall、Endcall及音量控制键等

    –pct-appswitch 启动Activity的百分比,在随机间隔中,执行一个startActivity()方法调用

    –pct-flip 点击事件的百分比

     

     8.输出monkey日志

    跑monkey的时候或者想抓程序log导出时,有时会提示:cannot create D:monkeytest.txt: read-only file system

    后来发现跟使用使用习惯不一样,一会是先进入adb shell 再用命令,一会是直接命令进入。

    进入adb shell后再用命令就会失败~正确方法:退出shell或者执行命令时先不要进shell

     adb shell monkey -p com.xxxx.xxxx --ignore-crashes  --ignore-timeouts -s 10 -v -v -v   50000 >e:log.txt

    Monkey测试出现错误后,一般的查错步骤为以下几步:

    ①、找到是monkey里面的哪个地方出错

    ②、查看Monkey里面出错前的一些事件动作,并手动执行该动作

    ③、若以上步骤还不能找出,可以使用之前执行的monkey命令再执行一遍,注意seed值要一样--复现

    一般的测试结果分析:

    ①、 ANR问题:在日志中搜索“ANR”

    ②、崩溃问题:在日志中搜索“Exception”  Force Close

     

     9.Monkey测试中的黑名单和白名单

     在测试中,因为手机中的一些其他操作可能影响测试结果(例如下拉通知栏),我们可以进行设置一个类似黑名单的东西去屏蔽它,具体命令如下:

    adb shell monkey --pkg-blacklist-file /data/ blacklist.txt -v -v--throttle 200 1000000

    具体的实现方式是,首先在电脑上建立一个blacklist.txt文件,在这个文件中将要屏蔽的包名一一写进去,然后将这个文件push到手机的data目录下: adb push blacklist.txt /data/,这样就会屏蔽掉这几个包,不去执行它。

     

    和黑名单类似,我们也可以建立一个类似于白名单一样的文件whitelist.txt,只去执行在白名单列表中的包名,详细步骤和黑名单一样。具体命令如下:

    adb shell monkey --pkg-whitelist-file /data/whitelist.txt -v -v --throttle 500  100000

     

     10.停止monkey

    跑monkey的过程中,如果想停止monkey时,可以删除pid

    adb shell

    # ps | grep monkey

    #kill pid

     

     

     

     

    转载请附上原文链接。
  • 相关阅读:
    重构的信号
    枚举类返回Map键值对,绑定到下拉框
    js onclick函数中传字符串参数的问题
    python opencv3 矩形 圆形边框
    python opencv3 轮廓检测
    python opencv3 滤波器 卷积核
    python opencv3 窗口显示摄像头的帧
    python opencv3 显示一张图片
    python opencv3 获取摄像头视频
    python opencv3 视频文件的读写
  • 原文地址:https://www.cnblogs.com/bugbreak/p/11959347.html
Copyright © 2011-2022 走看看