×

Monkey测试详解_monkey test

前端技术网 前端技术网 发表于2024-01-26 18:33:10 浏览2940 评论0

抢沙发发表评论

一、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中的具体信息,方法如下:查

Monkey测试详解_monkey test

看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测试详解_monkey test

二、如何进行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输出的信息:

如果你还想了解更多这方面的信息,记得收藏关注本站。