一. 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
附下载链接
下载截图(针对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命令的使用
快乐风男灬 2018-03-15 16:31:53
13838
收藏 29
分类专栏: Android monkey 文章标签: Android 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中查找问题的所在。
: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代表当前执行了一个单击的操作;
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具体如下:
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执行典型崩溃日志情况如下:
// 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
谢谢查看,继续努力。