• App稳定性测试Monkey


      

    1.$ adb shell monkey <event-count>                <event-count>是随机发送事件数

       例:adb shell monkeyn 1000   发送1000个随机事件

    2.$ adb shell monkey [options] <event-count>    [options]是monkey可传入的参数

       Monkey的option主要分为:常规类、事件类、约束类和调试类4种

        2.1 常规类命令:

        adb shell monkey -v <event-count>

        -v:打印出日志信息,每个-v将增加反馈信息的级别。-v越多日志信息越详情,最多支持3个-v

        

        2.2 事件类命令:

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

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

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

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

        如果希望重复执行之前的随机操作,需要加-s命令,可指定随机数生成器seed值

        $ adb shell monkey -s <seed> <event-count>

        -s:后接随机数生成器的seed值,如果使用相同的seed值再次运行monkey,将生成相同的事件序列(也就是说,重复执行刚才的随机操作)

        如: $ adb shell monkey -s 100 1000

        $ adb shell monkey --throttle <milliseconds> 

        --throttle:后面接时间,单位为ms,表示事件之间的固定延迟(即执行每一个指令间隔的时间),如果不接该项,monkey将不会延迟

        $ adb shell monkey --pct-touch <percent>

        --pct-touch:后面接触摸事件百分比,触摸事件泛指发生在某一位置的一个down-up事件,点击

        $ adb shell monkey --pct-montion <percent>

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

       $ adb shell monkey --pct-trackball <percent>

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

       $ adb shell monkey --pct-nav <percent>

       --pct-nav:后面接基本导航事件百分比,基本导航事件主要来自方向输入设备的上、下、左、右事件

       $ adb shell monkey --pct-majornav <percent>

       --pct-marjornav:后面接主要导航事件百分比,主要导航事件通常指引发图形界面的一些动作,如键盘中间按键、返回按键、菜单按键等

      $ adb shell monkey --pct-syskeys <percent>

       --pct-syskeys:后面接系统按键事件百分比,系统按键事件通常指仅供系统使用的保留按键,如HOME键、BACK键、拨号键、挂断键、音量键等

      $ adb shell monkey --pct-appswtich <percent>

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

      $ adb shell monkey --pct-anyevent <percent>

      --pct-anyevent:后面接其他类型事件百分比,其他类型事件指上文中未涉及的所有其他事件,如keypress、不常用的button等

      

       2.3约束类命令

       约束类命令可以让随机事件运行的范围限制在某几个包或类中。

       $ adb shell monkey -p <allowed-package-name>  <event-count>

       -p:后面接一个或多个包名,如果不指定任何包,monkey将允许系统启动全部包里的Activity。每个-p对应一个包,指定多个包时每个包名前都需要加上-p

       如:$ adb shell monkey -p com.agent.tao  1000       运行com.agent.tao 包里的Activity并发送1000个随机事件

       $ adb shell monkey -c <main-category>  <event-count>

       -c:后面接一个或多个类别名,monkey将只允许系统启动这些类别中某个类别列出的Activity,如果不指定任何类别,monkey将选择Intent.CATEGORY_LAUNCHER和Intent.CATEGORY_monkey里的Activity

       每个-c对应一个类别,指定多个类别时每个类别名前面都需要加上-c

       如:$ adb shell monkey -c Intent.CATEGORY_LAUNCHER 1000

       运行Inter.CATEGORY_LAUNCHER类别的Activity并发送1000个随机事件

       2.4调试类命令

       通过调试类命令可以对monkey进行简单的调试,这样可以快速定位monkey运行中的问题

       $ adb shell monkey --dbg-no-events  <event-count>

       --dbg-no-events:设置此项后,monkey将进行初始启动,进入到某个测试Activity中不会进一步生成事件,可以监视应用程序所调用的包之间的转换,为了更好的跟踪,一般该项

       会与-v(日志)、-p<allowed-package-name> (包约束) 和 --throttle<milliseconds> (延迟)等联合使用

       $ adb shell monkey --hprof  <event-count>

       --hprof:设置此项后,将在monkey事件序列前后立即生成profilfing report,将在data/misc中生成5MB左右大小的文件

       $ adb shell monkey --ignore-crashes  <event-count>

       --ignore-crashes:设置此项后,当应用程序崩溃或发生失控异常时,monkey将继续运行直到计数完成。如果不设置此项,monkey遇到上述崩溃或异常将停止运行。

       $ adb shell monkey --ignore-timeouts  <event-count>

       --ignore-timeouts:设置此项后,当应用程序发生任何超时错误(如ANR,即Application Not Responding)时,monkey将继续运行直到计数完成。如果不设置此项,monkey

       遇到此类超时将停止运行

       $ adb shell monkey --kill-process-after-error  <event-count>

       --kill-process-after-error:设置此项后,当monkey因为应用程序发生错误而停止时,将会通知系统停止发生错误的进程。如果不设置此项,monkey停止时发生错误的应用程度将

       继续处于运行状态。

       $ adb shell monkey --ignore-security-exceptions <event-count>

       --ignore-security-exceptions:设置此项后,当应用程序发生任何权限错误(如启动一个需要某些权限的Activity)时,monkey将继续运行直到计数完成。如果不设置此项,

      monkey遇到此类权限错误将停止运行。

       $ adb shell monkey --monitor-native-crashes  <event-count>

       --monitor-native-crashes:设置此项后,monkey运行时native code的崩溃事件将被监视并报告。如果不设置此选项,将不会监视此类事件。

       $ adb shell monkey --wait-dbg  <event-count>

       --wait-dbg:在设置此项后,将暂停执行中的monkey,直到有调试器与它连接。

    结果检查与分析

    测试结束后,需要将手机连接PC,拷贝以下文件:

    • info.txt:此文件在手机上的SDCARD中,主要记录了MONKEY测试时发送的各种事件,如触摸事件的位置等等。
    • error.txt:此文件在手机上的SDCARD中,主要记录了MONKEY测试时产生的一些ANR、强制关闭等异常。
    • LOG文件:此文件在手机上的LOG文件夹中中,主要主要记录程序对MONKEY测试时的响应情况。

    我们需要对这3个文件进行分析整理,以便提交开发人员处理。

    检查测试是否完成

    通过info.txt文件,可以查看Monkey是否执行成功。如下图

    结果分析整理

    我们目前执行Monkey测试的目的是为了检查是否有内存泄露,而这类问题主要是通过Log文件来体现的。

    Error文件也记录了部分异常,考虑到这部分文件格式已经很规范,因此不需要再次整理。

    Log文件记录了所有信息,因此我们需要进行初步分析整理后再提交研发,以减少研发工作量。

    Monkey测试后在Mobilelog文件中会产生多个main_log文件,里面含有详细的log执行记录。通过main_log文件,我们可以查看可能存在内存泄露代码所在具体位置。是否该行代码存在泄露需要开发人员进一步验证。我们只提供可能存在代码泄露的信息。

    含有mian_log的文件都需要进行查看。搜索关键字“leak”,在搜索结果中,查看与Ideafreiend相关的代码。如下图:

     

    注:com.lenovo.ideafriend:Ideafriend包名;CursorLeakDetecter: 游标泄露检查器

    1. 程序无响应的问题: 在日志中搜索 “ANR”
    2. 崩溃问题:在日志中搜索 “Exception”   (如果出现空指针, NullPointerException)  肯定是有bug

  • 相关阅读:
    Java vs Python
    Compiled Language vs Scripting Language
    445. Add Two Numbers II
    213. House Robber II
    198. House Robber
    276. Paint Fence
    77. Combinations
    54. Spiral Matrix
    82. Remove Duplicates from Sorted List II
    80. Remove Duplicates from Sorted Array II
  • 原文地址:https://www.cnblogs.com/test_home_c/p/10087781.html
Copyright © 2020-2023  润新知