一、android monkey的测试结果怎么分析
http://www.douban.com/note/257030241/
Monkey测试结果分析一.初步分析方法:Monkey测试出现错误后,一般的差错步骤为以下几步:1、找到是monkey里面的哪个地方出错2、查看Monkey里面出错前的一些事件动作,并手动执行该动作3、若以上步骤还不能找出,可以使用之前执行的monkey命令再执行一遍,注意seed值要一样一般的测试结果分析:1、 ANR问题:在日志中搜索“ANR”2、崩溃问题:在日志中搜索“Exception”二.详细分析monkey日志:将执行Monkey生成的log,从手机中导出并打开查看该log;在log的最开始都会显示Monkey执行的seed值、执行次数和测试的包名。首先我们需要查看Monkey测试中是否出现了ANR或者异常,具体方法如上述。然后我们要分析log中的具体信息,方法如下:查
看log中第一个Switch,主要是查看Monkey执行的是那一个Activity,譬如下面的log中,执行的是
com.tencent.**tt.SplashActivity,在下一个swtich之间的,如果出现了崩溃或其他异常,可以在该Activity中
查找问题的所在。:Switch:#Intent;action=android.intent.action.MAIN;category=android.intent.category.LAUNCHER;launchFlags=0x10000000;component=com.tencent.**tt/.SplashActivity;end//
Allowing start of Intent{act=android.intent.action.MAIN
cat=[android.intent.category.LAUNCHER]cmp=com.tencent.**tt/.SplashActivity
} in package com.tencent.**tt在下面的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.0Sleeping for 500 milliseconds:SendKey(ACTION_DOWN): 20//KEYCODE_DPAD_DOWN:SendKey(ACTION_UP): 20//KEYCODE_DPAD_DOWNSleeping 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的最后也能查看到当前已执行的次数。Monkey执行完成的log具体如下:Events injected: 6000:Dropped: keys=0 pointers=9 trackballs=0 flips=0## Network stats: elapsed time=808384ms(0ms mobile, 808384ms wifi, 0msnot connected)// Monkey finished
二、如何进行Monkey Test
一、简介
Monkey是Android中的一个命令行工具,可以运行在模拟器里或实际设备中。它向系统发送伪随机的用户事件流(如按键输入、触摸屏输入、手势输入等),实现对正在开发的应用程序进行压力测试。Monkey包括许多选项,它们大致分为四大类:
基本配置选项,如设置尝试的事件数量
运行约束选项,如设置只对单独的一个包进行测试
事件类型和频率
调试选项
在Monkey运行的时候,它生成事件,并把它们发给系统。同时,Monkey还对测试中的系统进行监测,对下列三种情况进行特殊处理(自动停止):
如果限定了Monkey运行在一个或几个特定的包上,那么它会监测试图转到其它包的操作,并对其进行阻止。
如果应用程序崩溃或接收到任何失控异常,Monkey将停止并报错。
如果应用程序产生了应用程序不响应(application not responding)的错误,Monkey将会停止并报错。
按照选定的不同级别的反馈信息,在Monkey中还可以看到其执行过程报告和生成的事件
二、测试准备
Monkey test前必须先进入android设备的adb shell(Android SDK环境配置不在此描述,网上有很多)步骤如下:
1.开始—>运行—>cmd
2. u**连接手机,输入 adb shell命令,待出现即可输入以下内容
3.进入手机后,输入相应的monkey命令即可测试
三、基本命令格式
adb shell monkey–p程序包–v测试次数
比如“adb shell monkey–p com.htc.Weather–v 20000”意思是对com.htc.Weather这个程序包单独进行一次20000次的monkey测试
其中程序包名称可以在串口终端这句命令获得:ls data/data显示所有程序包
四、测试Log获取
用Monkey test测试,为了方便分析问题,可以在命令monkey命令后面加上“|logcat-v time”,这样就能边测试边打印Log(记得用终端保存Log文本)例如:
adb shell monkey–p com.htc.Weather–v 20000|logcat-v time
但是这个组合在monkey测试完成后,logcat仍然在执行,测试时需要注意。
如果测试monkey碰到crash或者anr(程序强制性退出或不响应)现象时,在抓取log的同时需要提供traces.txt,步骤如下:
1.测试版本需要具备root权限
2.进入data/anr目录下面
3.将traces.txt文件拷贝到TF卡中,然后拷贝出来发给软件分析即可
三、adb命令之monkey压力测试篇
一.首先搭建monkey的运行环境
二.环境搭建成功后可以进行monkey压力测试
1.电脑u**连接手机
2.开始->运行(win+R键),输入cmd,在命令行输入adb shell
3.接下来就可以运行monkey test的命令
如:monkey-p com.test-v 100(com.test为需要测试的包)
三. monkey压力测试命令详解
monkey是sdk中附带的一个工具,该工具进行压力测试,然后开发人员根据monkey打印的日志结局测试中出现的问题
monkey测试中所有的事件都是随机产生的,不带有任何人的主观性
四.标准的monkey命令:
[adb shell] monkey [options]<eventcount>,如:adb shell monkey-v 500
五.在monkey测试中常用的命令组合有:
六. monkey options通常分为四大类——常用选项、时间选项、约束选项、调试选项
1.常用选项如下:
--help:打印帮助信息
-v:指定打印信息的详细级别,一个-v增加一个级别,默认级别为 0。
2.事件选项如下:
-s:指定产生随机事件种子值,相同的种子值产生相同的事件序列。如:-s 200
--throttle:每个事件结束后的间隔时间——降低系统的压力(如不指定,系统会尽快的发送事件序列)。如:--throttle 100
--pct-touch:指定触摸事件的百分比,如:--pct-touch 5%
--pct-motion<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-anyevent<percent>(任意事件)
3.约束选项如下:
-p:指定有效的package(如不指定,则对系统中所有package有效),一个-p对应一个有效package,如:-p com.ckt-p com.ckt.asura;
-c:activity必须至少包含一个指定的category,才能被启动,否则启动不了;
4.调试选项如下:
--dbg-no-events:初始化启动的activity,但是不产生任何事件。
--hprof:指定该项后在事件序列发送前后会立即生成分析报告——一般建议指定该项。
--ignore-crashes:忽略崩溃
--ignore-timeouts:忽略超时
--ignore-security-exceptions:忽略安全异常
--kill-process-after-error:发生错误后直接杀掉进程
--monitor-native-crashes:跟踪本地方法的崩溃问题
--wait-dbg:知道连接了调试器才执行monkey测试。
5.列举一个简单的monkey命令:
adb shell monkey-p com.xy.android.junit-s 500-v 10000
但是,在工作中为了保证测试可以完整进行,为了防止发生错误时立刻退出压力测试。更为了可以方便查看log,monkey测试命令如下:
adb shell monkey-p com.xy.android.junit-s 500--ignore-crashes--ignore-timeouts--monitor-native-crashes-v-v 10000> E:\monkey_log\java_monkey_log.txt
monkey作用的包:com.ckt.android.junit
产生时间序列的种子值:500
忽略程序崩溃、忽略超时、监视本地程序崩溃、详细信息级别为2,产生 10000个事件,log输出到E盘monkey_log文件夹下的java_monkey_log.txt
七. monkey测试结果详细分析
1.事件所占比例分析
4.当有FC(Force Close)错误
5.logcat输出的信息:
如果你还想了解更多这方面的信息,记得收藏关注本站。