mokey的介绍和使用

左心房为你撑大大i 提交于 2020-01-01 00:08:26

一、monkey介绍

       monkey是Android  SDK提供的一个命令行工具,可以简单方便的发送伪随机的用户时间流,对Android APP做压力(稳定性、健壮性)测试。主要是为了测试APP是否存在无响应和崩溃的情况。

二、monkey的使用

1、前提条件:配置JDK和java环境;配置sdk和测试环境

2、测试adb是否安装成功:在dos窗口的命令行工具输入adb会出来adb的一些命令就说明成功了。如下图

3、连接手机: adb devices   了解成功的话会显示连接成功。如下图

4、查看手机安装的第三方apk包:adb shell pm list packages -3 。如下图

5、此时已经知道你要操作的包名了。然后就是从以下命令选择你要对APP进行哪些操作,一般是根据APP的特点来选取。

常用选项

      -v:指定打印信息的详细级别,一个 -v增加一个级别 , 默认级别为 0

            Level 0  :  adb shell monkey  -p com.tencent.qqmusic  -v 100  

                            最简单(默认),除了启动、测试完成和最终结果外只提供较少的信息。

            Level 1  :  adb shell monkey  -p com.tencent.qqmusic  -v  -v 100 

                            提供了较为详细的测试信息,如逐个发送到Activity的事件信息

            Level 2  :  adb shell monkey  -p com.tencent.qqmusic  -v  -v  -v 100

                            提供了更多的设置信息,如测试中选中或未选中的Activity信息

      -help:打印帮助信息

事件选项

      -s:指定产生随机事件种子值,相同的种子值产生相同的事件序列。如: -s 200

      --throttle:每个事件结束后的间隔时间——降低系统的压力(如不指定,系统会尽快的发送事件序列)

                        如:--throttle 100(毫秒)

      --pct-touch:指定触摸事件的百分比

                        如:--pct-touch 5% ,

                        相关的还有以下option:

                               --pct-motion <percent> (滑动事件)

                               --pct-pinchzoom <percent>(缩放事件)

                               --pct-trackball <percent> (轨迹球事件)

                               --pct-nav <percent> (导航事件 up/down/left/right)

                               --pct-majornav <percent> (主要导航事件 back key 、 menu key)

                               --pct-syskeys <percent> (系统按键事件 Home 、Back 、startCall 、 endCall 、 volumeControl)、

                               --pct-appswitch <percent> (activity之间的切换)

                               --pct-flip <percent>(键盘翻转事件)

                               --pct-anyevent <percent>(任意事件)

约束选项

      -p:指定有效的package(如不指定,则对系统中所有package有效),一个-p 对应一个有效package

      -c:activity必须至少包含一个指定的category,才能被启动,否则启动不了

调试选项

      --dbg-no-events:初始化启动的activity,但是不产生任何事件

      --hprof:指定该项后在事件序列发送前后会立即生成分析报告  —— 一般建议指定该项。

      --ignore-crashes:忽略崩溃

      --ignore-timeouts:忽略超时

      --ignore-security-exceptions:忽略安全异常

      --kill-process-after-error:发生错误后直接杀掉进程

      --monitor-native-crashes:跟踪本地方法的崩溃问题

      --wait-dbg:知道连接了调试器才执行monkey测试

比如我的命令是:adb shell monkey -p **(包名)  -v -v -v --pct-touch 40 --pct-motion 50 --pct- appswitch 10 --throttle 200 --ignore-crashes --ignore-timeouts 100> D:\monkey\test02.log 

6、命令结束完去相应的路径下查看log就可以啦

三、日志分析

1、日志开头(注意seed值很重要,当出现问题想重现的时候牢记这个seed就可)

显示本次测试seed值,执行次数,测试包

:Monkey: seed=1559424502489 count=10

:AllowPackage: com.tencent.qqmusic

:IncludeCategory: android.intent.category.LAUNCHER

:IncludeCategory: android.intent.category.MONKEY

2、日志中间

各类型事件的百分比、发送到Activity的事件信息、错误信息等,根据指定的详细级别显示相应的信息

3、日志结尾

如果Monkey测试顺利执行完成,在log的最后,会打印出当前执行事件的次数和所花费的时间;Monkey finished代表执行完成。

(如果Monkey执行中断,在log的最后也能查看到当前已执行的次数。)

Events injected: 10

:Sending rotation degree=0, persist=false

:Dropped: keys=0 pointers=0 trackballs=0 flips=0 rotations=0

## Network stats: elapsed time=2794ms (0ms mobile, 0ms wifi, 2794ms not connected)

// Monkey finished

四、如果有崩溃、无响应等可在日志中搜索crash。或直接把日志给开发同事查看就可以啦。

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!