• monkey命令行测试


    一、 什么是Monkey

    monkey是google提供的一个用于稳定性与压力测试的命令行工具。monkey程序由android系统自带,位于/sdcard/system/framework/monkey.jar中。 Monkey tools在Android内只能针对Activity做测试,不能对service做测试。可以运行在模拟器里或实际设备中。它向系统发送伪随机的用户事件流(如按键输入、触摸屏输入、手势输入等),实现对正在开发的应用程序进行压力测试。Monkey测试是一种为了测试软件的稳定性、健壮性的快速有效的方法。

    二、 Monkey的特征

    1、 测试的对象仅为应用程序包,有一定的局限性。
    2、 Monky测试使用的事件流数据流是随机的,不能进行自定义。
    3、 可对MonkeyTest的对象,事件数量,类型,频率等进行设置。

    三、Monkey的基本用法

    基本语法如下:

    $ adb shell monkey [options]

    如果不指定options,Monkey将以无反馈模式启动,并把事件任意发送到安装在目标环境中的全部包。下面是一个更为典型的命令行示例,它启动指定的应用程序,并向其发送500个伪随机事件:

    1.monkey在pc端测试的方法:

    >adb shell monkey [option] <count>

    /* [option] 测试条件(下面会做详细说明)
    * <count> 测试次数
    */

    eg:adb shell monkey  -v -v -v 500

    -v 指定Log的详细程度,共有三个级别:
     -v 日志级别为level 0
     -v -v 日志级别为level 1

    -v -v -v 日志级别为level 2     日志的详细程度越来越详细

    最高可添加3个 -v,500为测试的次数

    2.保存monkey运行的日志

    adb shell monkey 后边不带测试条件时默认指定所有包即所有应用程序。

    2.1 保存在手机上
    eg:adb shell monkey   > /sdcard/monkey.txt

    这里的sdcard指的是存储路径即手机内部存储。> 是追加符,即将打印的log追加到monkey.txt文本中

    2.2 保存在电脑上
    adb shell monkey  > monkey.txt

     monkey.txt保存在PC的当前目录下。

    3.monkey查看包名

    方法1: adb shell pm list package  

    方法1:adb shell ls /data/data/

    两者区别在于前者不需要root,后者需要root.

    4.monkey可指定应用包进行测试。

    eg:adb shell monkey -p com.android.camera  500

    -p 后边跟包名,这里可指定一个包或多个包,要指定多个包需要使用多个-p选项,每个-p选项只能用于一个包。

    eg:adb shell monkey -p com.android.camera   -p com.android.mms  500

    Monkey test中只能指定activity属性的应用包进行测试,当出现指定的应用程序不是activity的时候,monkey会出现log提示如下并终止运行:

    这里只显示最后一行

    log:

    **No activities found to run,monkey abortd.

    备注:activity和service的区别,activity是android应用的核心概念,简而言之activity为用户交互管理者,有一个可视界面呈现,而service是在后台运行,没有界面呈现。

    5.monkey的log分析 (android中常见的错误)

    查找关键字crash,anr。

    anr:

    >在5秒内没有相应的事件(例如,按键按下,屏幕触摸);

    >BroadcastReciever在10秒内没有执行完毕。

    crash:

    >异常停止

    >异常退出

     6.查看monkey进程

    monkey 进程:adb shell ps | grep monkey

    杀死monkey进程:adb shell  kill monkey  

    eg:

    sue@suepc:~$ adb shell ps  | grep monkey

    shell     23444 537   2029252 49604 futex_wait 7fb2834170 S com.android.commands.monkey

    sue@suepc:~$ adb shell kill 23444

    sue@suepc:~$ 

    7、Monkey发送的事件类型和频率

    --pct-appswitch <percent>   

    调整启动Activity的百分比。在随机间隔里,Monkey将执行一个startActivity()调用,作为最大程度覆盖包中全部Activity的一种方法

    --pct-anyevent <percent>

    调整其它类型事件的百分比。它包罗了所有其它类型的事件,如:按键、其它不常用的设备按钮、等等

    --pct-touch <percent>

    调整触摸事件的百分比(触摸事件是一个down-up事件,它发生在屏幕上的某单一位置)。

    --pct-motion <percent>

    调整动作事件的百分比(动作事件由屏幕上某处的一个down事件、一系列的伪随机事件和一个up事件组成)

    --pct-trackball <percent>

    整轨迹事件的百分比(轨迹事件由一个或几个随机的移动组成,有时还伴随有点击)

    --pct-nav <percent>

    调整“基本”导航事件的百分比(导航事件由来自方向输入设备的up/down/left/right组成)

    --pct-syskeys <percent>

    调整“系统”按键事件的百分比(这些按键通常被保留,由系统使用,如Home、Back、Start Call、End Call及音量控制键)

    -p <允许执行的包名列表>

    如果用此参数指定了一个或几个包,Monkey将只允许系统启动这些包里的Activity。如果你的应用程序还需要访问其它包里的Activity(如选择取一个联系人),那些包也需要在此同时指定。如果不指定任何包,Monkey将允许系统启动全部包里的Activity。要指定多个包,需要使用多个 -p选项,每个-p选项只能用于一个包

    -c <意图的种类>

    如果用此参数指定了一个或几个类别,Monkey将只允许系统启动被这些类别中的某个类别列出的Activity。如果不指定任何类别,Monkey将选 择下列类别中列出的Activity: Intent.CATEGORY_LAUNCHER或Intent.CATEGORY_MONKEY。要指定多个类别,需要使用多个-c选项,每个-c选 项只能用于一个类别。

    8.monkey常见的测试策略

    8.1.对设置进行旋转压力测试

    adb shell monkey -p com.android.settings  --pct-rotation  50  --ignore-crashes --ignore-timeouts --ignore-native-crashes --ignore-security-exceptions -v -v -v  20000

    8.2.对整机的应用开启测试

    adb shell monkey --pct-appswitch 100 --throttle 5000  -v -v -v 100000

    8.3.测试设置,触摸事件30%,其他按键50%,错误停止20%,延时200

    adb shell  monkey   -p com.android.settings   --pct-touch  30  --throttle 200 --pct-anyevent 50  -v -v 10000

    8.4..测试设置,随机种子数为100,延时10 秒 ,忽略所有错误

    adb shell monkey   -p com.android.settings  -s 100  --throttle 10 --randomize-throttle   -ignore-crashes --ignore-timeouts --ignore-native-crashes --ignore-security-exceptions -v -v -v  20000

    9.monkey 无activity启动

    -p com.android.phone   -c android.intent.category.DEFAULT

  • 相关阅读:
    程序输出小学四则运算表达式,支持真分数四则运算
    自我介绍
    一维数组求最大子数组的和(首位相邻32位)
    一维数组子数组求最大和
    第三周进度条
    第三周总结PSP日志文件
    四则运算<3>单元测试
    四则运算<3>
    30道四则运算<2>单元测试
    构建之法阅读笔记02
  • 原文地址:https://www.cnblogs.com/suesky/p/8620267.html
Copyright © 2020-2023  润新知