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

  

  谢谢查看,继续努力。

原文地址:https://www.cnblogs.com/sun-lei/p/11806739.html