zoukankan      html  css  js  c++  java
  • app稳定性测试-monkey测试

    一. monkey测试简介

      monkey工具是Android自动化测试工具的一种,主要对Android app稳定性和健壮性进行测试。  

      Monkey是Android系统中的一个命令行工具,可以运行在模拟器里或实际设备中。它向系统发送伪随机的用户事件流(如按键输入、触摸屏输入、手势输入等)模拟用户操作,实现对设备上的程序的压力测试,检测程序多久时间会发生异常。Monkey测试是一种为了测试软件的稳定性、健壮性的快速有效的方法。

    二. monkey的特征  

      1.  测试的对象仅为应用程序包,有一定的局限性。

      2.  Monky测试使用的事件流数据流是随机的,不能进行自定义。

      3. 可对MonkeyTest的对象,事件数量,类型,频率等进行设置。

      适用情况:ANR和CRASH异常情况;低概率很难复现的异常。

    三. 安装monkey工具

      1. 下载安装JDK

      附JDK官网下载链接http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html  

      下载截图(其中需要同意许可证,同时针对mac下载和window下载(x86是32位,x64是64位)已标注)

      

      安装成功后可验证是否安装成功,mac打开终端,输入java -version回车,出现版本信息则安装成功  

      

      2.下载Android开发环境的Adt Bundle

      附下载链接http://www.cnblogs.com/tc310/p/3938353.html

      下载截图(针对mac下载和window下载(x86是32位,x64是64位)已标注) 

      

      安装成功后可验证是否安装成功,mac打开终端,输入adb version回车,出现版本信息则安装成功

        此时打开终端输入adb会提示-bash: abd: command not found。需要解决Android SDK的adb命令添加到环境变量的问题。

      1. 启动终端,进入到当前用户的Home目录(命令在下一行)

      cd $HOME

      2. 创建 .bash_profile文件

      touch .bash_profile

      3. 打开 .bash_profile 文件,对其内容进行编辑

      open -e .bash_profile 

      4. 此时文本编辑器会打开一个文本,编辑内容如下:

      export PATH=${PATH}:此处粘贴adb中platform-tools文件夹所在的目录路径地址

      编辑完成后,可直接关闭,此时已保存

      5.更新此文件

      source .bash_profile

      此时的adb环境配置好,可以检验一下

      6.检验是否成功(终端输入)

      adb/adb devices

      adb组成

        客户端client:运行在pc端上,可以通过shell来调起一个客户端,其他android工具

        服务器server:运行在pc端后台,负责管理client和daemon进行通信

        守护进程daemon:运行在模拟器或者android设备的后台 

      adb常见命令

        adb --help 查看帮助手册

        adb devices 检测连接到电脑的安卓设备

        adb pull <手机路径><本机路径>从手机中拉取信息放到本地电脑上

          adb shell ;ls ;cd sdcard ; exit ; 手机路径 /sdcard/kwsecurity-crash.txt 本机路径 /Users/mac/Desktop/

        adb push <本机路径><手机路径>从本地推送信息到手机上去

          adb push /Users/mac/Desktop/yiwei  /sdcard/

        adb shell 登录设备 shell(命令行的人机界面)进入linux环境了。(相当于执行远程命令)

          pm list packages  查看应用安装的包

          $ pm list packages | grep mockuai  根据某个关键字查找包

        adb logcat 打印日志

          control+c 停止

          adb logcat > 目录文件保存日志文件

          ps:查看当前运行程序

        adb install xxx.apk apk所在路径

        adb uninstall 应用包名

        adb shell dumpsys activity | find "mFocusedActivity" --查看前台应用包名 

          adb shell dumpsys activity | grep "Focus"   com.mockuai.mkselleros

        adb connect/disconnect 通过wifi进行远程连接手机进行调试

          adb tcpip 5555

      3. 打开usb调试

        若使用真机,用USB将手机和Mac连接,在手机端进行操作:

        1. 选择USB连接方式为传输文件;  

        2. 设置->其他设置->开发者选项->开启开发者选项和usb调试(真机和模拟器上皆需进行);

        检测是否连接了设备:adb devices

        部分真机可能存在检测不到的情况,可进行创建、修改adb_usb.ini文件,操作如下:

        a、在终端中输入‘system_profiler SPUSBDataType’,找到手机的Vendor ID并记录;
        b、在终端中输入‘vi ~/.android/adb_usb.ini’,创建并打开文本,按‘I’键可对文本进行编辑,向文本中添加记录的Vendor ID

         (若添加多个,需确保每个id占一行且文本中无空行),完成后按‘esc’键,然后键入‘:wq!’,即可保存并退出文本。完

           成此步后将发现路径/Users/xxx/.android下存在adb_usb.ini文件;
        c、将手机拔掉重新接入Mac,重复1.2,在终端中输入‘adb kill-server’,然后输入‘adb start-server’,再次输入‘adb devices’查看是否识别到设备。

    四. monkey常见命令

      monkey命令格式:

      adb shell monkey {+命令参数} 次数

      adb shell monkey -help/-h

      -v 用于指定反馈信息级别(信息级别就是日志的详细程度,总共分三个级别)

      -p 后面接着的对应的包名,此参数指定一个或多个包

      -s 用于指定伪随机数生成器的seed值,如果seed值相同,则两次monkey测试所产生的事件序列也相同的。(用于问题重现)

      --throttle<毫秒> 用于指定用户操作(事件)间的时延,单位是毫秒

      -ignore-crashes-ignore-timeouts 在monkey测试的过程中遇到crash或者timeout的情况忽略掉,一般不设置时,出现crash或者timeout时,monkey测试会终止

      设置这个是为了防止monkey测试终止

      次数 指点击的次数,一般设置100000

    附:

    Adb命令的使用以及monkey命令的使用

     之前对安卓手机上的APP做了monkey测试,今天来总结一下如何使用安卓自带的monkey命令去做测试。

    首先,PC端要对安卓手机进行monkey测试的话,必须要有以下条件:

    1.电脑中必须配有ADB的环境才能进行操作。

    2.手机连接电脑时要开启USB调试模式,否则ADB命令进行检测连接设备时是无法检测到的。

     

    其次是adb插件的安装,adb安装包在网上有很多资源,随便找一个网站下载即可,但是下载后我们怎么才能安装呢?

    首先将下载的压缩包进行解压,解压后,我们需要将它放置如图目录下。

    在我的电脑中,我的cmd命令进入后默认是AZ这个文件夹,所以将其放入AZ目录下,为什么要这样做,因为放在其他目录中我们执行ADB命令是找不到命令的,所以我们需要将其放置在这个目录下。

    然后我们就可以开始操作了(前提是手机已经连接好)

    怎么判断我们的手机已经连接了呢?

    输入:adb devices

    就可以查看我们的设备是否连接了。这里注意一个问题,如果命令输入后报

    * daemon not running. starting it now on port 5037 *

    这样一个错,那就是adb命令使用的是5037端口,而5037被占用了,我们需要查出来是谁占用了这个程序,并且KILL掉这个程序,具体操作如下:

    先输入:netstat -ano

    找出占用了端口的程序和它的PID,然后

    输入:Taskkill /f/pid xxx

    就可以关掉占用5307端口的程序,就可以使用adb了

     

     

    判断手机连接成功后,我们就可以进行操作了,但是又一个问题来了,我们如何确定我们要执行的程序在手机内部叫什么名字呢?

    如果手机中文件不多,我们可以

    输入:adb shell pm list package -f

    这个命令可以查看手机中包的名字和路径,但是他有个局限性就是我们文件太多,不知道路径的情况下是无法得知我们需要执行程序的包名的。

    这时候我们只需要打开我们需要执行的APP,然后

    输入:adb shell dumpsyswindow w | findstr / | findstr name=

    就可以查看我们要执行程序的包名了。

     

    得知包名后,我们就可以对APP进行monkey测试了

    Monkey命令参数介绍

    1) 参数:  -p

    参数-p用于约束限制,用此参数指定一个或多个包(Package,即App)。指定

    包之后,Monkey将只允许系统启动指定的APP。如果不指定包,Monkey将允许系统启动设备中的所有APP。

    * 指定一个包: adb shell monkey -pcom.htc.Weather 100

    说明:com.htc.Weather为包名,100是事件计数(即让Monkey程序模拟100次随机用户事件)。

    * 指定多个包:adb shell monkey -pcom.htc.Weather –p com.htc.pdfreader  -pcom.htc.photo.widgets 100

    * 不指定包:adb shell monkey 100

     说明:Monkey随机启动APP并发送100个随机事件。

    * 要查看设备中所有的包,在CMD窗口中执行以下命令:

     >adbshell

     #cddata/data

      #ls

    2) 参数:  -v

    用于指定反馈信息级别(信息级别就是日志的详细程度),总共分3个级别,分别对应的参数如下表所示:

    日志级别Level0 

    示例adb shellmonkey -p com.htc.Weather –v 100

    说明 缺省值,仅提供启动提示、测试完成和最终结果等少量信息

    日志级别Level 1

    示例adb shellmonkey -p com.htc.Weather –v -v 100

    说明 提供较为详细的日志,包括每个发送到Activity的事件信息

    日志级别Level 2

    示例adb shellmonkey -p com.htc.Weather –v -v –v 100

    说明 最详细的日志,包括了测试中选中/未选中的Activity信息

    3)参数:  -s

    用于指定伪随机数生成器的seed值,如果seed相同,则两次Monkey测试所产生的事件序列也相同的。

    * 示例:

     Monkey测试1:adb shell monkey -p com.htc.Weather –s 10 100

      Monkey测试2:adbshell monkey -p com.htc.Weather–s 10 100

       两次测试的效果是相同的,因为模拟的用户操作序列(每次操作按照一定的先后顺序所组成的一系列操作,即一个序列)是一样的。操作序列虽然是随机生成的,但是只要我们指定了相同的Seed值,就可以保证两次测试产生的随机操作序列是完全相同的,所以这个操作序列伪随机的;

    4) 参数:  --throttle <毫秒>

    用于指定用户操作(即事件)间的时延,单位是毫秒;

    * 示例:adb shell monkey -pcom.htc.Weather –throttle 3000 100

    5) 参数: --ignore-crashes

    用于指定当应用程序崩溃时(Force& Close错误),Monkey是否停止运行。如果使用此参数,即使应用程序崩溃,Monkey依然会发送事件,直到事件计数完成。

    * 示例1:adbshellmonkey -p com.htc.Weather --ignore-crashes 1000

      测试过程中即使Weather程序崩溃,Monkey依然会继续发送事件直到事件数目达到1000为止;

    * 示例2:adbshellmonkey -p com.htc.Weather 1000

      测试过程中,如果Weather程序崩溃,Monkey将会停止运行。

     6)参数: --ignore-timeouts

    用于指定当应用程序发生ANR(Application No Responding)错误时,Monkey是否停止运行。如果使用此参数,即使应用程序发生ANR错误,

    Monkey依然会发送事件,直到事件计数完成。

    7) 参数: --ignore-security-exceptions

    用于指定当应用程序发生许可错误时(如证书许可,网络许可等),Monkey是否停止运行。如果使用此参数,即使应用程序发生许可错误,

    Monkey依然会发送事件,直到事件计数完成。

    8) 参数: --kill-process-after-error

    用于指定当应用程序发生错误时,是否停止其运行。如果指定此参数,当应用程序发生错误时,应用程序停止运行并保持在当前状态(注意:应用程序仅是静止在发生错误时的状态,系统并不会结束该应用程序的进程)。

    9) 参数: --monitor-native-crashes

    用于指定是否监视并报告应用程序发生崩溃的本地代码。

    10) 参数:  --pct-{+事件类别}{+事件类别百分比}

    用于指定每种类别事件的数目百分比(在Monkey事件序列中,该类事件数目占总事件数目的百分比)

    这些是我们进行操作时一般会用到的参数。执行过程中,在dos命令里日志显示只有一小部分,我们就需要在我们编写的命令行后再加上>log.txt就可以在我们保存adb路径中自动生成日志,方便我们进行查看。

    比如:

    Adb shell -p com.htc.xxx -v -v -v -s 2505000>log.txt

    上面语句的意思就是,对com.htc.xxx随机操作5000次,send值为250,并且打印level 2日志,并且将日志保存到log.txt。

     

    命令讲完后,我们来讲一讲如何查看日志。

    当日志生成后,我们需要进入日志当中查看是否有APP崩溃记录或者无响应记录。崩溃记录查找”CRASH”,无响应记录查找”ANR”,内存泄露问题搜索"GC"(需进一步分析),异常问题搜索“Exception”(如果出现空指针,NullPointerException,需格外重视)。

    为了进一步分析问题的来源,可以找到Log中出现问题处的前一次Switch,随后根据Log主要是查看相关的Activity。

    下面我就把我昨天执行后的日志拿出来:

    进入日志后,会显示

    :Monkey: seed=250count=3500

    :AllowPackage:com.text.app.hospitalassistant

    上面表示了点击了3500次,执行seed值为250,对甘肃妇幼这个APP进行了操作。

    // Eventpercentages:

    //   0: 15.0% 0:触摸事件百分比,即参数–pct-touch

    //   1: 10.0% 1:滑动事件百分比,即参数–pct-motion

    //   2: 2.0%  2:缩放事件百分比,即参数–pct-pinchzoom

    //   3: 15.0%  3:轨迹球事件百分比,即参数–pct-trackball

    //   4: -0.0% 4:屏幕旋转事件百分比,即参数–pct-rotation

    //   5: 25.0% 5:基本导航事件百分比,即参数–pct-nav

    //   6: 15.0% 6:主要导航事件百分比,即参数–pct-majornav

    //   7: 2.0% 7:系统事件百分比,即参数–pct-syskeys

    //   8: 2.0% 8:Activity启动事件百分比,即参数–pct-appswitch

    //   9: 1.0% 9:键盘翻转事件百分比,即参数–pct-flip

    //   10: 13.0% 10:其他事件百分比,即参数–pct-anyevent

    后面我用中文翻译写了出来,这样可以看出在点击这么多下后,自动执行操作的各种比例。

    以上就是我这几天总结的adb与monkeyAPP自动化测试的使用方法与问题。测试是可以执行的,但是在执行过程中,总是会点击手机顶部的下拉框,有时候会影响测试结果,比如把wifi关了,然后软件是依赖于wifi环境的,关掉wifi之后直接崩溃。这个问题暂时还没有解决,但是只要在过程中不关闭wifi那就不会影响测试结果。

    还有一个问题就是对日志的查看还是比较难看懂,就是知道错误,也不知道是哪个地方出了错误。虽然有操作记录,但是并不知道点击的哪个地方,所以还在查阅资料中,日后如果解决了这个问题,我会继续把文档补全。

     

     

     

     

     

     

    Monkey测试结果分析

    一、什么是monkey

      Monkey 测试是 Android 自动化测试的手段之一,它通过模拟用户的按键输入、触摸屏输入等,测试设备多长时间出现异常。Monkey 是一个命令行工具,可以运行在模拟器或实际设备中,通过向系统发送伪随机的用户事件流,实现对全系统或某个应用程序进行压力测试。

    二、操作

      真机连接电脑,启动cmd执行命令:

      (如果是复制下面的命令,容易出错,命令是不能换行的。可以先复制到QQ对话框,修改后复制到adb中运行)

    三、指定测试的约束选项

    1、指定测试的包

      对某一个具体的应用进行测试,可指定具体的包名。可以在系统目录/data/data下查找对应的包名:

      查找到对应的包名后,使用 monkey 时可用“-p”参数进行指定,此外还可以使用“-v”参数指定测试中反馈的信息。常用格式如下:

      monkey –p (指定的包名) –v 50

      注意:每个“-p”只能指定一个包,若需指定对多个包进行测试,则要用多个“-p”参数进行指定。

    2、指定测试的类

      若需对某个具体类进行测试,可以使用“-c”参数指定,若需指定多个类别,则要用多个“-c”参数选项分别指定,每个“-c”只能指定一个类别。其使用的命令格式为:

      monkey –c (类名) -v 50

      注意:想要查看手机中所有包名及类名,需要有root权限。

    3、指定测试的时间类型和频率

      Monkey 命令提供了众多选项用于指定事件的类型和发生频率, 例如触摸事件、 导航事件、轨迹事件(由一个或多个随机的移动组成,有时还伴随有点击)。有时为了测试某个具体应用,需要通过“事件”的反复发生来进行专项的功能测试,此时即可通过 monkey 的“--pct”选项来进行指定具体事件及其发生的频率。

    1)命令使用格式如下示例:

      monkey --pct-syskeys 18 –v 1000

      以上命令表示系统按键事件的发生率为 18%,共测试 1000 次。

      注意:“pct”前面是英文输入状态下两个杠“-”。

    2)还可以分别指定两个事件的发生频率,命令使用方式如下所示:

      monkey --pct-touch 18 --pct-trackball 18 –v 1000

      以上命令表示触摸事件和轨迹事件发生概率分别为 18%和 18%,共测试 1000 次。

    3)通过“--throttle”指定事件间的间隔,可以延缓事件的发生,如:

      monkey --pct-nav 80 --throttle 1000 1000

      指定导航事件发生概率为 80%,每次事件相隔 1 秒中发生,共测试 1000 次。

    Monkey运行结果中对应的事件为:

    0:--pct-touch

    //touch events percentage触摸事件百分比(触摸事件是一个在屏幕单一位置的按下-抬起事件)

    1:--pct-motion

    //motion events percentage手势事件百分比

    (手势事件是由一个在屏幕某处的按下事件、一系列的伪随机移动、一个抬起事件组成)即一个滑动操作,但是是直线的,不能拐弯

    2:--pct-pinchzoom

    //pinch zoom events percentage二指缩放百分比,即智能机上的放大缩小手势操作

    3:--pct-trackball

    //trackball events percentage轨迹球事件百分比

    (轨迹球事件包括一个或多个随机移动,有时还伴有点击。轨迹球现在智能手机上已经没有了,就是类似手柄的方向键一样)

    4:--pct-rotation

    //screen rotation events percentage屏幕旋转百分比,横屏竖屏

    5:--pct-nav

    //nav events percentage”基本”导航事件百分比

    (导航事件包括上下左右,如方向输入设备的输入)老手机的上下左右键,智能机上没有

    6:--pct-majornav

    //major nav events percentage”主要”导航事件百分比

    (这些导航事件通常会引发UI的事件,例如5-way pad的中间键、回退键、菜单键)

    7:--pct-syskeys

    //system(key) operations percentage”系统”按钮事件百分比

    (这些按钮一般专供系统使用,如Home, Back, Start Call, End Call,音量控制)

    8:--pct-appswitch

    //app switch events percentage启动activity事件百分比。在随机的间隔里,Monkey会执行一个startActivity()调用,作为最大程度覆盖包中全部Activity的一种方法

    9:--pct-flip

    //keyboard flip percentage键盘轻弹百分比,如点击输入框,键盘弹起,点击输入框以外区域,键盘收回

    10:--pct-anyevent

    //anyevents percentage其他类型事件百分比。包括了其他所有的类型事件,如按键、其他不常用的设备上的按钮等等。

    4、指定测试的调试选项

      Monkey 命令提供了若干用于控制测试过程的调试选项。例如参数“--ignore-crashes” ,将忽略应用程序崩溃或发生的任何异常,继续向系统发送事件,直到计数完成。使用命令格式如下:

      monkey --ignore-crashes -v 5000

    常用的调试选项及说明如下:

    --dbg-no-events

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

    --ignore-crashes

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

    --ignore-timeouts

    通常,当应用程序发生任何超时错误(如“Application Not Responding”对话框)时,Monkey将停止运行。如果设置此选项,Monkey将继 续向系统发送事件,直到计数完成。

    --ignore-security-exceptions

    通常,当应用程序发生许可错误(如启动一个需要某些许可的Activity)时,Monkey将停止运行。如果设置了此选项,Monkey将继续向系统发送事件,直到计数完成。

    --kill-process-after-error

    通常,当Monkey由于一个错误而停止时,出错的应用程序将继续处于运行状态。当设置了此选项时,将会通知系统停止发生错误的进程。注意,正常的(成功的)结束,并没有停止启动的进程,设备只是在结束事件之后,简单地保持在最后的状态。

    --monitor-native-crashes

    监视并报告Android系统中本地代码的崩溃事件。如果设置了--kill-process-after-error,系统将停止运行。

    --wait-dbg

    停止执行中的Monkey,直到有调试器和它相连接。

    5、monkey测试的停止条件

      Monkey Test执行过程中在下列三种情况下会自动停止:

      1)如果限定了Monkey运行在一个或几个特定的包上,那么它会监测试图转到其它包的操作,并对其进行阻止。

      2)如果应用程序崩溃或接收到任何失控异常,Monkey将停止并报错。

      3)如果应用程序产生了应用程序不响应(applicationnot responding)的错误,Monkey将会停止并报错。

      通过多次并且不同设定下的Monkey测试才算它是一个稳定性足够的程序。

      强制停止monkey测试的方法:

    • adb shell
    • ps | grep monkey(找到monkey对应的进程ID)
    • kill pid (返回的第一个数字就是pid)

    6、执行monkey测试的关注点

      1)monkey只支持activity。App项目工程的manifest.xml中可以看到所有的activity,service。

      2)在跑的过程中,绝对不要使用两个不同版本的sdk、adb。绝对不要去使用阿德巴deivces,killserver。如果使用,会将服务终止。手机的monkey不会停止,但是log就没有了

      3)monkey本身虽然是一个random压力,性能测试工具,但是我们在做测试之前也需要做一些准备。

      4)monkey test和logcat是同步的。一般来讲,跑monkey的时间,RC版本之后,relaease之前,每天都需要去跑,一般一个应用上线前25w次。0 null point exception。

    四、Monkey测试结果分析

    1、日志保存操作

    日志保存的操作方法:

    2、Monkey测试出现错误后,一般的差错步骤为以下几步:

      (1) 找到是monkey里面的哪个地方出错

      (2) 查看Monkey里面出错前的一些事件动作,并手动执行该动作

      (3) 若以上步骤还不能找出,可以使用之前执行的monkey命令再执行一遍,注意seed值要一样

    3、一般的测试结果分析:

      搜索关键词:ANR、 Exception、 Null、 Error、 crash(Fatal)

      (1) ANR问题:在日志中搜索“ANR”

      ANR=Application Not Responding
      在Android上,如果你的应用程序有一段时间响应不够灵敏(5秒内没有输入响应事件),系统会向用户显示一个对话框,这个对话框称作应用程序无响应(ANR:Application Not Responding)对话框。

      (2) 崩溃问题:在日志中搜索“Exception”

      Null 指针异常:空指针异常主要是有 NullPointerException 异常提示
      debug 异常:出现的是 IllegalStateException 异常
      低内存异常:出现的是 OutOfMemoryError 异常
      操作无响应异常:TimerOut(KeyDispatchingTimedOut 提示)
      RuntimeException 异常(操作无响应或应用的服务无法启动或连接)
      StaleDataException/readException 异常(android 数据库出现异常)
      IllegalArgumentException 异常(向函数传递了一个不正确或不合法的参数)

    4、详细分析monkey日志

      将执行Monkey生成的log,从手机中导出并打开查看该log;在log的最开始都会显示Monkey执行的seed值、执行次数和测试的包名。

      首先我们需要查看Monkey测试中是否出现了ANR或者异常,具体方法如上述。

      然后我们要分析log中的具体信息,方法如下:

      查看log中第一个Switch,主要是查看Monkey执行的是那一个Activity,譬如下面的log中,执行的是com.tencent.smtt.SplashActivity,在下一个swtich之间的,如果出现了崩溃或其他异常,可以在该Activity中查找问题的所在。

    1
    2
    3
    4
    5
    6
    7
    :Switch:#Intent;
    action=android.intent.action.MAIN;
    category=android.intent.category.LAUNCHER;
    launchFlags=0x10000000;component=com.tencent.smtt/.SplashActivity;end
      // Allowing start of Intent {act=android.intent.action.MAIN
    cat=[android.intent.category.LAUNCHER]
    cmp=com.tencent.smtt/.SplashActivity } in package com.tencent.smtt

      在下面的log中,Sending Pointer ACTION_DOWN和Sending Pointer ACTION_UP代表当前执行了一个单击的操作;

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    Sleeping for 500 milliseconds
    //这句log是执行Monkey测试时,throttle设定的间隔时间,每出现一次,就代表一个事件。
      SendKey(ACTION_DOWN)
    //KEYCODE_DPAD_DOWN   代表当前执行了一个点击下导航键的操作;
      Sending Pointer ACTION_MOVE     //代表当前执行了一个滑动界面的操作。
      :Sending Pointer ACTION_DOWN x=47.0 y=438.0
      :Sending Pointer ACTION_UP x=47.0 y=438.0
      Sleeping for 500 milliseconds
      :SendKey (ACTION_DOWN): 20   //KEYCODE_DPAD_DOWN
      :SendKey (ACTION_UP): 20   //KEYCODE_DPAD_DOWN
      Sleeping for 500 milliseconds
      :Sending Pointer ACTION_MOVE x=-2.0 y=3.0
      :Sending Pointer ACTION_MOVE x=4.0 y=-3.0
      :Sending Pointer ACTION_MOVE x=-5.0 y=-3.0
      :Sending Pointer ACTION_MOVE x=3.0 y=4.0
      :Sending Pointer ACTION_MOVE x=-4.0 y=1.0
      :Sending Pointer ACTION_MOVE x=-1.0 y=-1.0
      :Sending Pointer ACTION_MOVE x=-2.0 y=-4.0

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

      1)Monkey执行完成的log具体如下:

    1
    2
    3
    4
    5
    6
    7
    Events injected: 5000
    :Sending rotation degree=0, persist=false
    // Generated profiling reports in /data/misc
    :Dropped: keys=0 pointers=0 trackballs=0 flips=0 rotations=0
    ## Network stats: elapsed time=805050ms
    (0ms mobile, 0ms wifi, 805050ms not connected)
    // Monkey finished

      2)Monkey执行典型崩溃日志情况如下:

    1
    2
    3
    4
    5
    6
    7
    8
    9
        // Injection Failed
    ** Monkey aborted due to error.
    Events injected: 101
    :Sending rotation degree=0, persist=false
    // Generated profiling reports in /data/misc
    :Dropped: keys=0 pointers=1 trackballs=0 flips=0 rotations=0
    ## Network stats: elapsed time=14710ms
    (0ms mobile, 0ms wifi, 14710ms not connected)
    ** System appears to have crashed at event 101 of 3000 using seed 3156

      注:如果出现monkey崩溃,可以抓取手机系统日志分析:adb logcat -v time >D:/test_log.txt

      

      谢谢查看,继续努力。

  • 相关阅读:
    HDU 2883 kebab
    CSUOJ 1635 Restaurant Ratings
    CSUOJ 1638 Continued Fraction
    POJ 1852 Ants
    ZOJ 3471 Most Powerful
    CSUOJ 1637 Yet Satisfiability Again!
    如何生成CA证书
    Keepalived实现双机热备
    Nginx负载均衡的优缺点
    负载均衡之 nginx
  • 原文地址:https://www.cnblogs.com/sun-lei/p/11806739.html
Copyright © 2011-2022 走看看