monkey的基本使用

一、Monkey基础知识

1、Monkey是什么

Monkey是一款通过命令行对APP进行自动化测试的小工具,可以运行在模拟器里或真机上。它向系统发送伪随机的用户事件流,对应用程序进行压力测试,主要目的是为了测试app是否会crash。

顾名思义,Monkey就是猴子, Monkey测试,就像一只猴子, 在电脑面前,乱敲键盘在测试。 猴子什么都不懂, 只知道乱敲。通过Monkey程序模拟用户触摸屏幕、滑动Trackball、 按键等操作来对设备上的程序进行压力测试,检测程序多久的时间会发生异常。

 

2、Monkey的介绍

  • Monkey程序由Android系统自带,使用Java语言写成,在Android文件系统中的存放路径是:/system/framework/monkey.jar
  • Monkey.jar程序是由一个名为“monkey”的Shell脚本来启动执行,shell脚本在Android文件系统中的存放路径是:/system/bin/monkey


3、Monkey架构

 

 

二、Monkey运行相关

1、运行Monkey步骤

分三步:

第一步:搭建环境:主要是安装和搭建java和sdk环境。

第二步:准备好要测试的apk。

第三步:连接上Android测试设备,可以是模拟器,也可以是手机。(注意:monkey命令运行前手机先解锁,win8 以上要用管理员身份打开cmd)

2、Monkey 命令启动方式 

 a. 可以通过PC机CMD窗口中执行: adb shell monkey {+命令参数}来进行Monkey测试

b. 在PC上adb shell 进入Android系统,通过执行monkey {+命令参数} 来进行Monkey 测试

c. 在Android机或者模拟器上直接执行monkey 命令,可以在手机设备上安装一个模拟器手机执行monkey+参数(手机模拟器可以通过百度搜索或360手机助手搜android terminal,安装即可,可以在模拟器的命令行中输入mokey +参数

3、Monkey停止的条件

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

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

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

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

通过多次并且不同设定下的Monkey测试才算它是一个稳定性足够的程序。

三、Monkey命令相关

1、Monkey的测试参数

 

 

  • -v     命令行的每一个-v将增加反馈信息的级别。
  • -v:Level 0(缺省值)除 启动提示、测试完成和最终结果之外,提供较少信息。
  • -v -v :Level 1提供较为详细的测试信息,如逐个发送到Activity的 事件。
  • -v -v -v :Level 2提供更加详细的设置信息,如测试中被选中的或未被选中的Activity。
  • adb shell monkey -p com.tencent.mobileqq -v -v -v 100

  • -s (随机数种子) 
    用于指定伪随机数生成器的 seed 值 , 如果 seed 相同 , 则两次 Monkey 测试所产生的事件序列也相同的 ,为了恢复上一次的操作。 示例: 
    monkey测试1 : adb shell monkey -p fishjoy.control.menu –s 10 100 
    monkey测试2 : adb shell monkey -p fishjoy.control.menu –s 10 100
  • –throttle <毫秒> 
    用于指定用户操作(即事件)间的时延 ,单位是毫秒,如果指定这个参数,monkey 会尽可能快的生成和发送消息 
    示例: adb shell monkey -p fishjoy.control.menu –throttle 3000 100

  • -p <允许的包名列表> 
    用此参数指定一个或多个包。指定包之后,monkey将只允许系统启动指定的app 。多个包,加多个-p参数。 
    指定一个包: adb shell monkey -p com.tpnet.hlquery 100 
    指定多个包: adb shell monkey -p com.tpnet.hlquery –p com.htc.pdfreader 100

  • 1

 

 

2、Monkey命令行操作步骤:

命令1:adb devices   查看连接到本地计算机上的Android设备列表

命令2:adb install xx.apk   把指定的安装包apk文件安装到测试设备中

如果是将apk安装到手机中,手机需要开启开发者选项-usb安装,否则安装不成功;

命令3:adb shell   进入shell界面,在此界面中可以查看到设备中的安装包,也可以执行shell命令

应用程序的安装包名在 /data/data下,命令如下:

退出shell,命令如下:

命令4:adb shell monkey Count   给指定的设备发送压力测试,其中Count为要测试的次数

执行此命令的效果就相当于有个手指在设备上乱点Count次。

以上为简单操作,接下来就可以按照monkey命令实例等来进行更高级的操作了

 

3、一些Monkey命令:

1)adb uninstall apk包名  卸载apk

 

2)app包名查看

a.手机安装包名查看器'

b.aapt命令  aapt dump badging *.apk

c、源码下的AndroidManifest.xml文件查看

d.adb logcat抓取当前Android机运行的app的包名(  I/ActivityManager(数字): Displayed 包名/类名: +ms )

命令行输入 adb logcat >e:\bag.txt;手机操控app,ctrl+c停止;去e:\bag.txt这个文件下搜索关键字如Displayed ,一般都能找到

 

3)杀monkey进程

如果想中断运行中的monkey CTRL+C

adb shell ps | grep monkey  返回进程号

adb shell kill [刚才查到的进程号]

 

4、Monkey命令实例

实例1:adb shell monkey -p com.rexen.zxapplication -s 23  --throttle 2000 --ignore-crashes --ignore-timeouts -v -v -v 100>D:\android-sdk\log\log.txt 2>&1 &

        1.   -p后面接着的对应的包名,如果是整机测试,就不需要 -ppackage_name

        2.   -s后面是对应的种子数,好像就是操作步骤,根据她们测试的经验,一般种子数在23,同步她们测试的结果,一般种子的个数固定为23,和她们选择的操作步骤就是同步的。

        3.   --ignore-crashes --ignore-timeouts 这里是在monkey测试的过程中遇到carash或者timeout的情况时忽略掉,一般不设置时,出现carash或者timeout时,Monkey测试会终止。这里是防止Monkey测试终止。

        4.   -v 指的是Monkey测试时打印log级别。

        5.   100000 这里是指点击的次数,根据她们测试的经验,对于单个应用程序这个次数设置在100000次就可以了;如果是整机,一般设置在500000次。

/data/local/tmp/log.txt测试的log记录在手机上/data/local/tmp/ 下面的log.txt里面,这个名字可以自己写。

        6.   2>&1 固定的写法,这个也很重要,代表的意思是中间忽略的东东的日志一并输入到指定的文件中。

        7.   最后单独的一个"&" 是一旦Monkey测试开始了,之后可以拔掉数据线,不会影响Monkey测试。

        8.   测试所有模块  monkey  -s 23 --ignore-crashes --ignore-timeouts -v-v -v 100000> /data/local/tmp/log.txt 2>&1 &

 

实例2:adb shell monkey -p com.tpnet.hlquery --throttle 100 --pct-touch 50 --pct-motion 50 -v -v -v 1000 >c:\monkeytest.txt

测试com.tpnet.hlquery这个app,间隔100毫秒,50%的触摸事件,50% 的滑动事件,三个-v输出详细的日志,执行1000个事件,日志输出到c:\monkeytest.txt

 

四、Monkey日志分析

在log的最开始都会显示Monkey执行的seed值、执行次数和测试的包名。如果Monkey测试顺利执行完成, 在log的最后, 会打印出当前执行事件的次数和所花费的时间;

// Monkey finished 代表执行完成。Monkey 执行中断, 在log最后也能看到当前执行次数。

1、分析步骤:

1、ANR问题:在日志中搜索“ANR ”(此处有空格)

2、崩溃问题:在日志中搜索“Exception”,快速定位到关键事件信息 。

3、查看Monkey中出错前的一些事件动作,并手动执行该动作,找出重现步骤,给开发。

注意:使用monkey命令重现问题时,seed值要一摸一样。

tip:

1、虽然Monkey测试有部分缺陷,但我们无法准确地得知重现步骤;如果出现空指针, NullPointerException肯定是有bug(用户使用时问题必现, 何时出现只是时间问题)。

2、理论上来说,  Monkey所有的Crash 都需要在发布前修复掉;

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值