美文网首页测试Android知识Android开发
Android Monkey测试与分析要点

Android Monkey测试与分析要点

作者: Lshare_Blog | 来源:发表于2017-05-17 15:57 被阅读151次

    Monkey测试的功能

    Monkey是内置在Androidshell中的命令行工具。Monkey测试可以模拟用户点击行为,通过脚本的形式不断地执行,然后可以导出到本地日志,进行奔溃分析。模拟方式是系统发送伪随机的用户事件流。

    Monkey测试的使用

    设置ADB环境

    {android sdk location}\platform-tools加入环境变量,以便使用终端执行adb命令。

    编辑Monkey脚本

    基本语法:

    $ adb shell monkey [options] <event-count>
    
    monkey脚本格式

    脚本示例:

    monkey -p com.arisan1000.android  --throttle 1000 --ignore-crashes --ignore-timeouts --ignore-security-exceptions --monitor-native-crashes --pct-appswitch 30 --pct-touch 15 --pct-motion 50 --pct-anyevent 5 -s 1000 43200 2>/sdcard/error.txt 1>/sdcard/info.txt 
    
    Category Option Description
    General� --help 打印简单的使用向导
    -v 每个-v表示增加信息的冗余级别。默认是Level 0,打印启动通知、测试结束和最终结果。Level 1,提供了较为详细的测试信息,如逐个发送到Activity的事件信息。Level 2,提供了更多的设置信息,如测试中选中或未选中的Activity信息。
    Events -s <seed> 指定伪随机数生成器的seed值,如果seed相同,则两次Monkey测试所产生的事件序列也相同的
    --throttle <milliseconds> 指定用户操作(即事件)间的时延,单位是毫秒;如果不指定这个参数,monkey会尽可能快的生成和发送消息。
    --pct-touch <percent> 调整触摸事件的百分比.(触摸事件是指在屏幕中的一个down-up事件,即在屏幕某处按下并抬起的操作)比如一个应用80%的操作都是触摸,那就可以将此参数的百分比设置成相应较高的百分比。如触摸返回、触摸签到等
    --pct-motion <percent> 调整motion事件百分比。(motion事件是由屏幕上某处一个down事件、一系列伪随机的移动事件和一个up事件组成)也就是直线滑动事件如从左到有滑动解锁
    --pct-trackball <percent> 作用:调整滚动球事件百分比。(滚动球事件由一个或多个随机的移动事件组成,有时会伴随着点击事件)如不规则滑动解锁
    --pct-nav <percent> 调整基本的导航事件(上下左右),事件来自直接的输入设备。现在的设备一般没有设置导航按钮了。
    --pct-majornav <percent> 调整“主要”导航事件的百分比。 (这些是通常会导致您的UI中的操作的导航事件,例如5向按键中的中心按钮,后退键或菜单键。)
    --pct-syskeys <percent> 按键消息比例,主页、后退、音量增减
    --pct-appswitch <percent> 启动Activity的事件比例
    --pct-anyevent <percent> 其他不常用的按键比例的设置,不常用
    -p <allowed-package-name> 用此参数指定一个或多个包。指定包之后,monkey将只允许系统启动指定的app。如果不指定包,monkey将允许系统启动设备中的所有app。
    -c <main-category> 指定启动Activity的category。若无指定,monkey会选择带有Intent.CATEGORY_LAUNCHER或Intent.CATEGORY_MONKEY的Activity。使用时,一个-c指定一个category,可以多次使用。
    Debugging --dbg-no-events 指定该选项时,Monkey会执行测试Activity的初始启动,但不会生成进一步的事件。为了获得更好的结果,可以结合 -v选项,一个或多个包限制 和 非0的throttle选项 (为了保持Monkey运行30s或以上)。这提供了一个监控应用调用的包转换的环境。
    --hprof 测试完成后生成内存快照,data/misc路径下生成,不常用,比较占空间
    --ignore-crashes 在monkey测试的过程中遇到crash不终止monkey进程,直到计数结束。
    --ignore-timeouts 在monkey测试的过程中遇到timeout error 或者 ANR 不终止monkey进程,直到计数结束。
    --ignore-security-exceptions 忽略权限问题,直到事件计数结束。
    --kill-process-after-error 当发生错误时终止monkey进程。
    --monitor-native-crashes 监视崩溃时的本地代码。当设置 --kill-process-after-error时,monkey进程会停止。
    --wait-dbg 当调试器失去连接时,停止monkey进程。

    执行和停止脚本

    1. 连接设备并开启调试模式
    2. 执行脚本命令:复制脚本到终端
    3. 回车执行停止脚本,如下:
    // 获取monkey所在的进程id
    adb shell top | grep monkey
    示例结果:
     5447  0   1% S 10 262960K  10328K  root    com.android.commands.monkey
     5447  0   0% S 10 262960K  10324K  root    com.android.commands.monkey
    //彻底停止monkey进程
    adb shell kill -9 5447
    

    分析本地日志

    1. 找到是monkey里面的哪个地方出错。
    2. 查看Monkey里面出错前的一些事件动作,并手动执行该动作。
    3. 若以上步骤还不能找出,可以使用之前执行的monkey命令再执行一遍,注意seed值要一样。

    详情参考Monkey测试3——Monkey测试结果分析

    参考

    1. UI/Application Exerciser Monkey

    2. monkey实战--测试步骤、常用参数、常规monkey命令

    附录 A:Linux中的输入输出重定向

    n> file 表示将文件描述符为 n 的文件重定向到 file。常见的文件描述符为:

    文件描述符 名称 常用缩写 默认值
    0 标准输入 stdin 键盘
    1 标准输出 stdout 屏幕
    2 标准错误输出 stderr 屏幕

    点击链接了解更多

    相关文章

      网友评论

      • 爱红旗渠:……系统发送伪随机的用户事件流。 Monkey测试的使用 设置ADB环境 将{android sdk location}\platform-tools加入环境变量,以便使用终端执行adb命令。 编辑……Monkey测试的功能 Monkey是内置在Androidshell中的命令行工具。Monkey测试可以模拟用户点击行为,通过脚本的形式不断地执行,然后可以导出到本地日志,进行奔溃分析。模拟方式是……Monkey脚本 基本语法: 脚本示例: 执行和停止脚本 连接设备并开启调试模式 执行脚本命令:复制脚本到终端 回车执行停止脚本,如下: 分析本地日志 找到是monkey里面的哪个地方出错。 查看Monkey…… - 爱红旗渠不知道是否是沙发

      本文标题:Android Monkey测试与分析要点

      本文链接:https://www.haomeiwen.com/subject/iuvdxxtx.html