一、认识monkey

Monkey 就是SDK中附带的一个工具。Monkey是Android中的一个命令行工具,可以运行在模拟器里或实际设备中;

它向系统发送伪随机的用户事件流(如按键输入、触摸屏输入、手势输入等),实现对正在开发的应用程序进行压力测试;

Monkey测试是一种为了测试软件的稳定性、健壮性的快速有效的方法。

Monkey特点:

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

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

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

二、Monkey的基本用法

1.查看帮助

adb shell monkey  或者adb shell monkey -help

usage: monkey [-p ALLOWED_PACKAGE [-p ALLOWED_PACKAGE] ...]
[-c MAIN_CATEGORY [-c MAIN_CATEGORY] ...]
[--ignore-crashes] [--ignore-timeouts]
[--ignore-security-exceptions]
[--monitor-native-crashes] [--ignore-native-crashes]
[--kill-process-after-error] [--hprof]
[--pct-touch PERCENT] [--pct-motion PERCENT]
[--pct-trackball PERCENT] [--pct-syskeys PERCENT]
[--pct-nav PERCENT] [--pct-majornav PERCENT]
[--pct-appswitch PERCENT] [--pct-flip PERCENT]
[--pct-anyevent PERCENT] [--pct-pinchzoom PERCENT]
[--pkg-blacklist-file PACKAGE_BLACKLIST_FILE]
[--pkg-whitelist-file PACKAGE_WHITELIST_FILE]
[--wait-dbg] [--dbg-no-events]
[--setup scriptfile] [-f scriptfile [-f scriptfile] ...]
[--port port]
[-s SEED] [-v [-v] ...]
[--throttle MILLISEC] [--randomize-throttle]
[--profile-wait MILLISEC]
[--device-sleep-time MILLISEC]
[--randomize-script]
[--script-log]
[--bugreport]
[--periodic-bugreport]
COUNT

2.参数 -p ,比如:

adb shell monkey -p 包名 -v 500

-p参数后面写上需要测试的包名,则可轻松跑通一条实例

3.参数: -v

adb shell monkey -p 包名 -v 500

-v 是描述日志级别,用于跑monkey输出日志

日志级别共有三级,Level0:-v 、Level1:-v -v、Level2:-v -v -v

4.参数: -s,用于指定伪随机数生成器的seed值,如果seed相同,则两次Monkey测试所产生的事件序列也相同的。

Monkey 1:adb shell monkey -p 包名 -s 10  100

Monkey 2:adb shell monkey -p 包名 –s 10 100

两次测试的效果是相同的,因为模拟的用户操作序列(每次操作按照一定的先后顺序所组成的一系列操作,即一个序列)是一样的。

5.参数: --throttle<毫秒>,操作事件间的时延,单位是毫秒;

adb shell monkey -p cn.emoney.acg --throttle 5000 100

6.忽略报错参数,一般来说,不设置参数的话,monkey遇到报错就会停止,所以加上一些忽略参数,monkey遇到报错时可继续运行。

--ignore-crashes(应用程序崩溃或异常时(crash、exception),继续发送事件信息)

adb shell  monkey -p 包名 --ignore-crashes 1000

--ignore-timeouts(在应用程序超时(ANR)的时候,继续发送事件)

adb shell  monkey -p 包名 --ignore-timeouts 1000

–ignore-security-exceptions(在应用程序发生许可证错误的时候(认证或证书异常),继续发送事件)

adb shell  monkey -p 包名  –ignore-security-exceptions 1000

–ignore-native-carshes(忽略本地代码导致的崩溃)

adb shell  monkey -p 包名 –ignore-native-carshes 1000

7.–pct调整事件的百分比,具体如下: 
–pct-touch 触摸事件百分比,就是log中down-up事件,发生在屏幕的某一个单一的位置,比如:adb shell monkey -p com.xxxx.xxxx–pct-touch 30 -v 500

–pct-motion 动作事件的百分比

–pct-trackball 轨迹事件的百分比,拖动屏幕

–pct-nav 基本导航事件的百分比,如上下左右键

–pct-majornav 主要导航事件的百分比,如中间键,取消、确定或菜单引发的图形接口的动作

–pct-syskeys 系统按键事件,如Home、Back、StartCall、Endcall及音量控制键等

–pct-appswitch 启动Activity的百分比,在随机间隔中,执行一个startActivity()方法调用

–pct-flip 点击事件的百分比

8.输出monkey日志

跑monkey的时候或者想抓程序log导出时,有时会提示:cannot create D:monkeytest.txt: read-only file system

后来发现跟使用使用习惯不一样,一会是先进入adb shell 再用命令,一会是直接命令进入。

进入adb shell后再用命令就会失败~正确方法:退出shell或者执行命令时先不要进shell

adb shell monkey -p com.xxxx.xxxx --ignore-crashes  --ignore-timeouts -s 10 -v -v -v   50000 >e:\log.txt

Monkey测试出现错误后,一般的查错步骤为以下几步:

①、找到是monkey里面的哪个地方出错

②、查看Monkey里面出错前的一些事件动作,并手动执行该动作

③、若以上步骤还不能找出,可以使用之前执行的monkey命令再执行一遍,注意seed值要一样--复现

一般的测试结果分析:

①、 ANR问题:在日志中搜索“ANR”

②、崩溃问题:在日志中搜索“Exception”  Force Close

9.Monkey测试中的黑名单和白名单

在测试中,因为手机中的一些其他操作可能影响测试结果(例如下拉通知栏),我们可以进行设置一个类似黑名单的东西去屏蔽它,具体命令如下:

adb shell monkey --pkg-blacklist-file /data/ blacklist.txt -v -v--throttle 200 1000000

具体的实现方式是,首先在电脑上建立一个blacklist.txt文件,在这个文件中将要屏蔽的包名一一写进去,然后将这个文件push到手机的data目录下: adb push blacklist.txt /data/,这样就会屏蔽掉这几个包,不去执行它。

和黑名单类似,我们也可以建立一个类似于白名单一样的文件whitelist.txt,只去执行在白名单列表中的包名,详细步骤和黑名单一样。具体命令如下:

adb shell monkey --pkg-whitelist-file /data/whitelist.txt -v -v --throttle 500  100000

10.停止monkey

跑monkey的过程中,如果想停止monkey时,可以删除pid

adb shell

# ps | grep monkey

#kill pid

最新文章

  1. java实现全排列
  2. MyEclipse之无法连接到MySQL数据库
  3. 如何制定tomcat部署时自己定义的docBase路径
  4. MySql解决插入中文乱码问题
  5. Python之list添加新元素、删除元素、替换元素
  6. 加密解密(6)RSA算法过程图解
  7. RabbitMQ (四) 路由选择 (Routing) -摘自网络
  8. 乐在其中设计模式(C#) - 单例模式(Singleton Pattern)【转】
  9. iss 防火墙
  10. 【cogs247】售票系统
  11. Android 操作系统的内存回收机制[转]
  12. MySQL查询优化之explain
  13. [cocos2d-x] 让精灵响应触摸 并把方向旋转到相对应的角度
  14. Miller_Rabin、 Pollard_rho Template
  15. POJ 1470 Closest Common Ancestors (模板题)(Tarjan离线)【LCA】
  16. 单点登录(SSO)原理与案例
  17. SQL Server 限定删除一行
  18. Py中map与np.rival学习
  19. linux在线中文手册
  20. 洛谷P3599 Koishi Loves Construction 构造

热门文章

  1. Asp.Net Core 反向工程
  2. git 参考手册-简明指南
  3. 继承以及Super
  4. Java ——类型转换 向args传递参数
  5. 【学习笔记】python3中csv文件使用
  6. Python3 Selenium自动化web测试 ==&gt; 第二节 页面元素的定位方法 &lt;上&gt;
  7. python网络应用篇
  8. HDU 1260 Tickets (动态规划)
  9. 小记---------spark优化之更优分配资源
  10. GC垃圾回收理解