Android中monkey测试

来源:互联网 发布:淘宝店铺名搜索不到 编辑:程序博客网 时间:2024/05/18 23:16
#1 Monkey 是什么?

    Monkey 就是SDK中附带的一个工具。Android中的一个命令行工具,可以运行在模拟器里或实际设备中。它向系统发送伪随机的用户事件流(如按键输入、触摸屏输入、手势输入等),实现对正在开发的应用程序进行压力测试。Monkey测试是一种为了测试软件的稳定性、健壮性的快速有效的方法。


#2 Monkey 测试的目的?
:该工具用于进行压力测试。 然后开发人员结合monkey 打印的日志 和系统打印的日志,结局测试中出现的问题。


#3 Monkey 测试的特点?

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

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

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



#4 Monkey 命令详解

1. 常见的adb命令

    $ adb shell monkey p(包) your.package.name v(频率) 500

   如果使用的是Genymotion模拟器,则要保证其adb的目录和Eclipse的一样;
    1. adb shell 进入手机的根目录:
    2. adb shell monkey -p 包名 -v 5000 --monitor-native-crashes --kill-process-after-error 

    将logcat打印到本地的文件中去,进入一个本地路径如C:\ 
    adb logcat>1.txt 则locat打印到本地;再开一个cmd,adb shell monkey -p 包名 -v 次数 --monitor-native-crashes --kill-process-after-error (有错误停止)

2.标准的monkey 命令
    [adb shell] monkey [options] <eventcount> , 例如:
    adb shell monkey -v 500    --------产生500次随机事件,作用在系统中所有activity(其实也不是所有的activity,而是包含            Intent.CATEGORY_LAUNCHER 或Intent.CATEGORY_MONKEY 的activity)。
  上面只是一个简单的例子,实际情况中通常会有很多的options 选项
options 四大类—— 常用选项 、 事件选项 、 约束选项 、 调试选项
1)常用选项

代码如下:
--help:打印帮助信息
-v:指定打印信息的详细级别,一个 -v增加一个级别 , 默认级别为 0 。

2)事件选项
代码如下:
-s:指定产生随机事件种子值,相同的种子值产生相同的事件序列。如: -s 200
--throttle:每个事件结束后的间隔时间——降低系统的压力(如不指定,系统会尽快的发送事件序列)。如:--throttle 100
--pct-touch:指定触摸事件的百分比,如:--pct-touch 5% , 相关的还有以下option:
--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测试。


3. 一个简单的monkey命令:

代码如下:
adb shell monkey -p com.xy.android.junit -s 500 -v 10000

但是,工作中为了保证测试数量的完整进行,我们一般不会在发生错误时立刻退出压力测试。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


4、monkey作用的包:com.ckt.android.junit
产生时间序列的种子值:500
忽略程序崩溃 、 忽略超时 、 监视本地程序崩溃 、 详细信息级别为2 , 产生 10000个事件 。


5Monkey测试的停止条件

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

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

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

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

使用Monkey流程



#5 简单使用
    总的来说使用monkey进行测试是比较简单的,只是需要做一些比较复杂的准备工作。下面详解测试步骤(很简单的哦),所讲内容是建立在已经配置好ADB环境的基础上(如果这部分不清楚请先google一下先配置好环境,这里不做描述)。

步骤详解

    1ADB连接Android测试设备。

    如果你用的是模拟器,那么启动后通常是已经连在ADB上了。对于真机来说两种方式都可以:

方式一:使用USBAndroid设备接到PC上,然后装上驱动(不好找驱动的话就用豌豆荚吧)。

方式二:首先得确保你的Android已经成功root了,那么可以使用wifi无线连接。下载一个wifi adb应用装在你的android设备上;android上打开wifi adbpc上的命令行中输入wifi adb中显示的那部分内容:adb connect 192.168.x.x,命令行中显示connected 192.168.x.x那么说明连接好了。

我比较喜欢方式二,这样可以不用去下载驱动(主要是驱动很多都不稳定),而且不伤害电池。长时间插在USB上对电池始终是不好的。只不过这种方式设备一旦休眠那么就可能需要重连。

    2、确定你要测试的应用的PackageName

先说明一下这里讲的方法是通用的,而网上其他方法获取PackageName不然不通用(因为他是建立在root的基础上的,我不敢保证你的设备已经root)。

    ①android设备上点击一下你要测试的设备,然后就不用操作设备了。

    ②PC上的命令行输入:adb logcat>D:/log.txt *:I 

在这里的D:/log.txt你可以改成其他的路径,但是一定要先确保路径下没有这个文件,不然的话你以前的文件就被改掉了,一定要小心。

    ③按下Ctrl+c先停掉(为了避免过多的新信息)。打开刚刚的那个文件D:/log.txt。从文件最下面开始找下面格式的信息

I/ActivityManager( 数字): Displayed 包名/类名: +数字ms

例如我的信息如下:

I/ActivityManager(  272): Displayed com.vane/.act.ActLauncher: +315ms

不过你可能会发现有很多这种格式的信息,到底哪个才是你需要的呢,如果你严格按照刚刚的步骤做的话,那么很可能是最下面那条信息,即使不是那么也肯定是最下面几条信息中的某一条,这需要你根据应用进行辨别。

    ④记下你刚刚得到的包名,例子中的包名为“com.vane”。马上就会用。  

    3、使用Monkey发一条测试命令。

    直接在pc上的命令行输入:adb shell monkey -p com.vane -v 50

  备注:上面命令中的com.vane就是之前获得的包名;命令中的参数你可以自己根据需要参考上面的参数文档进行修改。

    4、观察android设备,直到Monkey停止。

    5、如果应用崩溃的话就好分析一下Monkey中的信息。

 


0 0
原创粉丝点击