• Android稳定性测试工具Monkey的使用


    综述

       Monkey是一个命令行工具,它可以运行在我们的模拟器或者设备当中。它可以发送一些伪随机的用户事件流,例如点击、触摸、手势等。我们能够使用Monkey工具来对我们所开发的应用进行压力测试。Monkey测试是一种为了测试软件的稳定性,健壮性的快速有效的方法。

    Monkey程序介绍

              MonkeyAndroid自带的系统工具,是由java语言编写。它在Android文件系统存放的路径是:/system/framework/monkey.jar,启动monkey.jarshell脚本文件在Android文件系统存放的路径为:/system/bin/monkey。打开这个monkey文件我们可以看一下这个脚本文件很简单。

     

    我们可以看到它调用的是com.android.commands.monkey.Monkey包。

    Monkey常用命令

           下面我们就来执行这个monkey脚本。

    我们执行如下命令:

     

    这时候,monkey将义无反顾的模式进行启动,并把事件任意发送到安装在目标环境下的全部包。运行结果如下所示:

    这时候可以看到monkey并没有运行起来,只是显示了usage,这是因为少了一个重要的参数,这是指发送的事件数。如果我们需要发送50个随机事件,执行如下命令:

     

    这时候我们可以看到手机已经疯狂的运行起来了。monkey的基本语法为:

     

    Monkeyoption操作都是根据具体需求设定的,主要分为常规类,事件类,约束类和调试类。下面就对这些命令进行说明:

    常规类:

    --help

    显示monkey参数帮助信息usage

    -v

    打印日志信息,每个-v将增加反馈信息的级别。-v越多日志信息将会越详细,不过目前最多支持三个-v

    Level0:一个-v,除启动提示、测试完成和最终结果之外,提供较少信息。

    Level1:两个人-v,提供较为详细的测试信息,如逐个发送到Activity的时间。

    Level2:三个-v,提供更加详细的设置信息,如测试中被选中的或未被选中的Activity

    事件类:

    -s <seed>

    伪随机数生成器的seed值。如果用相同的seed值再次运行monkey,它将生成相同的时间序列。

    --throttle <milliseconds>

    后面接时间,单位为毫秒,表示时间之间的固定延时(即执行每一个指令的间隔时间),若不接这个选项,monkey则不会延时。

    --pcttouch<percent>

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

    --pctmotion<percent>

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

    --pcttracball<percent>

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

    --pctnav<percent>

    后面接“基本”导航事件百分比(导航事件主要来自方向输入设备的上、下、左、右事件)。

    --pctmajornav<percent>

    后面接“主要”导航事件的百分比(这些导航事件通常引发图形界面中的动作,如:5way键盘中的中间按键、回退按键、菜单按键)。

    --pctsyskeys<percent>

    后面接“系统”按键事件的百分比(这些按键通常被保留,由系统使用,如HomeBackStarCallEndCall及音量控制键)。

    --pctappswitch<percent>

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

    --pctanyevent<percent>

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

    p<allowedpackagename>

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

    -c<maincategory>

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

    调试类

    --dbg-no-events

    设置此选项,Monkey将执行初始启动,进入到一个测试Activity,然后不会再进一步生成事件。为了得到最佳结果,把它与-v、一个或几个包约束、以及一个保持Monkey运行30秒或更长时间的非零值联合起来,从而提供一个环境,可以监视应用程序所调用的包之间的转换。

    --hprof

    设置此选项,将在Monkey事件序列之前和之后立即生成profiling报告。这将会在data/misc中生成大文件(~5Mb,所以要小心使用它。

    --ignore-crashes

    通常,当应用程序崩溃或发生任何失控异常时,Monkey将停止运行。如果设置此选项,Monkey将继续向系统发送事件,直到计数完成。

    --ignore-timeouts

    通常,当应用程序发生任何超时错误

    (如Application Responding”对话框)时,Monkey将停止运行。如果设置此选项,Monkey将继续向系统发送事件,直到计数完成)

    --ignore-security-exceptions

    一条常用的Monkey命令

    adb shell monkey -v -v -v -p [PackageName] --ignore-crashes --ignore-timeouts --ignore-security-exceptions --monitor-native-crashes --ignore-native-crashes --throttle 1000 100000 > monkey.txt

    执行这条命令后会在当前文件下面生成一个名为monkey.txt的日志文件,我们可以通过搜索exceptionANR来找到monkey测试中所出现的CrashANR。

    总结

    在这里介绍了Monkey的使用,对于我们的应用通过monkey进行压力测试,也能够发现众多的ANR以及Crash。对于Monkey也有一定缺点的,它是不支持截屏、录制、回放等操作的。

  • 相关阅读:
    USACOZero Sum
    USACOControlling Companies
    USACOParty Lamps
    USACOMoney Systems
    UVa11292
    USACOLongest Prefix
    USACOThe Tamworth Two
    USACORunaround Numbers
    业内常见电子病历编辑器简单比较(1)编辑控件来源比较
    GB(国标)字典大全
  • 原文地址:https://www.cnblogs.com/zqq521/p/6383373.html
Copyright © 2020-2023  润新知