monkey

一、Monkey 简介

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

该工具用于进行压力测试。然后开发人员结合monkey 打印的日志和系统打印的日志,分析测试中的问题

Monkey 测试的特点:

Monkey 测试,所有的事件都是随机产生的,不带任何人的主观性。

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

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

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

二、具体操作:

adb devices

adb -s HJB117748HJB shell monkey #查看monkey命令操作

 

-p <allowed-package-name>:指定包
# 如果用此参数指定了一个或几个包,Monkey将只允许系统启动这些包里的Activity。 如果你的应用程序还需要访问其它包里的Activity(如选择取一个联系人),那些包也需要在此 同时指定。如果不指定任何包,Monkey将允许系统启动全部包里的Activity。要指定多个 包,需要使用多个 -p选项,每个-p选项只能用于一个包。
#事件:-s <seed>--伪随机数生成器的seed值。如果用相同的seed值再次运行Monkey, 它将生成相同的事件序列。
# -v:命令行的每一个-v将增加反馈信息的级别。Level 0(缺省值)除 启动提示、测试完成和最终结果之外,提供较少信息。Level 1提供较为详细的测试信息,如逐个发送到Activity的 事件。Level 2提供更加详细的设置信息,如测试中被选中的或未被选中的Activity。
 –throttle:间隔时间
--hprof
设置此选项,将在Monkey事件序列之前和之后立即生成profiling报告。 这将会在data / misc中生成大文件(~5Mb),所以要小心使用它。

--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,直到有调试器和它相连接。

通过 –v 参数。

通过-v参数可以指定打印信息的详细级别,多一个-v多一个级别!

级别

表示

描述

0

-v

打印最基本的事件

1

-v-v

更全面的信息,如增加了那些Activity被选中

2

-v-v-v

最全面的信息

 

5.      Switch

 

表示跳转到com.android.calendar里的AllInOneActivity里。

 

6.      //Allowing start of Intent

 

表示允许启动这个活动意图。

 

7.      Sleeping

 

允许在发送各种随机事件时有一个延时。如果没有表示立即执行,不停顿。

                  

8.      Sending:

 

具体执行的随机事件。

 

9.      injected

 

执行100次具体事件

 

10.  rotation

 

屏幕旋转信息,角度和是否保持旋转状态。

 

11.  Dropped

 

丢弃的事件。

 

12.  网络耗时

 

包括:手机占用的,wifi占用的,连接占用的。

 

aapt dump badging +package  # package:即包名

]

adb -s HJB117748HJB shell monkey -v -p com.android.calendar -s 404 100

adb -s HJB117748HJB shell monkey --throttle 100 --ignore-crashes --ignore-timeouts --ignore-security-exceptions --ignore-native-crashes --monitor-native-crashes -v -p com.android.calendar -s 404 100 >> monkey_calendar.txt

 

  1. 分析测试报告:

    分析测试报告时,需要注意以下内容。

    ​ 注意报告中的seed值:我们刚才执行monkey时,没有指定seed,在报告一开始,可以看到其自动生成的seed值,见下图红色部分。如果我们指定了seed,则可以使用相同的seed来生成相同的序列。
    image

    ​ 注意查找日志中的无响应问题和崩溃问题。无响应问题可以在日志中搜索 “ANR” ,崩溃问题搜索 “CRASH” ,内存泄露问题搜索"GC"(需进一步分析),异常问题搜索 “Exception”(如果出现空指针, NullPointerException,需格外重视)。

    ​ 为了进一步分析问题的来源,可以找到Log中出现问题处的前一次Switch,随后根据Log主要是查看相关的Activity,下面的Log执行的就是LaunchActivity。

    Switch: #Intent;action=android.intent.action.MAIN;category=android.intent.category.LAUNCHER;launchFlags=0x10200000;component=android.zhibo8/.ui.contollers.main.LaunchActivity;end

补充问题

  1. 如何将测试报告记录在本地:

    将命令改为

    adb shell monkey –p android.zhibo8 –-throttle 100 –-pct-touch 50 –-pct-motion 50 –v –v 10 >c:\monkeylog.txt

    待Monkey运行结束后,会在指定目录下生成指定文件。

  2. Event percentage分析:

    在上述过程中,使用了percent相关命令控制了事件类型,如果我们不指定事件类型。生成的报告中,事件占比大致如下:

    // Event percentages:

    // 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:屏幕旋转事件百分比,

    // 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

     

https://www.cnblogs.com/aland-1415/p/6949964.html

https://blog.csdn.net/qq_18456543/article/details/76209139

https://blog.csdn.net/u013947002/article/details/49024587

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值