android monkey原理_Android Monkey测试与分析要点

Monkey测试的功能

Monkey是内置在Androidshell中的命令行工具。Monkey测试可以模拟用户点击行为,通过脚本的形式不断地执行,然后可以导出到本地日志,进行奔溃分析。模拟方式是系统发送伪随机的用户事件流。

Monkey测试的使用

设置ADB环境

将{android sdk location}\platform-tools加入环境变量,以便使用终端执行adb命令。

编辑Monkey脚本

基本语法:

$ adb shell monkey [options]

monkey脚本格式

脚本示例:

monkey -p com.arisan1000.android --throttle 1000 --ignore-crashes --ignore-timeouts --ignore-security-exceptions --monitor-native-crashes --pct-appswitch 30 --pct-touch 15 --pct-motion 50 --pct-anyevent 5 -s 1000 43200 2>/sdcard/error.txt 1>/sdcard/info.txt

Category

Option

Description

General�

--help

打印简单的使用向导

-v

每个-v表示增加信息的冗余级别。默认是Level 0,打印启动通知、测试结束和最终结果。Level 1,提供了较为详细的测试信息,如逐个发送到Activity的事件信息。Level 2,提供了更多的设置信息,如测试中选中或未选中的Activity信息。

Events

-s

指定伪随机数生成器的seed值,如果seed相同,则两次Monkey测试所产生的事件序列也相同的

--throttle

指定用户操作(即事件)间的时延,单位是毫秒;如果不指定这个参数,monkey会尽可能快的生成和发送消息。

--pct-touch

调整触摸事件的百分比.(触摸事件是指在屏幕中的一个down-up事件,即在屏幕某处按下并抬起的操作)比如一个应用80%的操作都是触摸,那就可以将此参数的百分比设置成相应较高的百分比。如触摸返回、触摸签到等

--pct-motion

调整motion事件百分比。(motion事件是由屏幕上某处一个down事件、一系列伪随机的移动事件和一个up事件组成)也就是直线滑动事件如从左到有滑动解锁

--pct-trackball

作用:调整滚动球事件百分比。(滚动球事件由一个或多个随机的移动事件组成,有时会伴随着点击事件)如不规则滑动解锁

--pct-nav

调整基本的导航事件(上下左右),事件来自直接的输入设备。现在的设备一般没有设置导航按钮了。

--pct-majornav

调整“主要”导航事件的百分比。 (这些是通常会导致您的UI中的操作的导航事件,例如5向按键中的中心按钮,后退键或菜单键。)

--pct-syskeys

按键消息比例,主页、后退、音量增减

--pct-appswitch

启动Activity的事件比例

--pct-anyevent

其他不常用的按键比例的设置,不常用

-p

用此参数指定一个或多个包。指定包之后,monkey将只允许系统启动指定的app。如果不指定包,monkey将允许系统启动设备中的所有app。

-c

指定启动Activity的category。若无指定,monkey会选择带有Intent.CATEGORY_LAUNCHER或Intent.CATEGORY_MONKEY的Activity。使用时,一个-c指定一个category,可以多次使用。

Debugging

--dbg-no-events

指定该选项时,Monkey会执行测试Activity的初始启动,但不会生成进一步的事件。为了获得更好的结果,可以结合 -v选项,一个或多个包限制 和 非0的throttle选项 (为了保持Monkey运行30s或以上)。这提供了一个监控应用调用的包转换的环境。

--hprof

测试完成后生成内存快照,data/misc路径下生成,不常用,比较占空间

--ignore-crashes

在monkey测试的过程中遇到crash不终止monkey进程,直到计数结束。

--ignore-timeouts

在monkey测试的过程中遇到timeout error 或者 ANR 不终止monkey进程,直到计数结束。

--ignore-security-exceptions

忽略权限问题,直到事件计数结束。

--kill-process-after-error

当发生错误时终止monkey进程。

--monitor-native-crashes

监视崩溃时的本地代码。当设置 --kill-process-after-error时,monkey进程会停止。

--wait-dbg

当调试器失去连接时,停止monkey进程。

执行和停止脚本

连接设备并开启调试模式

执行脚本命令:复制脚本到终端

回车执行停止脚本,如下:

// 获取monkey所在的进程id

adb shell top | grep monkey

示例结果:

5447 0 1% S 10 262960K 10328K root com.android.commands.monkey

5447 0 0% S 10 262960K 10324K root com.android.commands.monkey

//彻底停止monkey进程

adb shell kill -9 5447

分析本地日志

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

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

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

参考

附录 A:Linux中的输入输出重定向

n> file 表示将文件描述符为 n 的文件重定向到 file。常见的文件描述符为:

文件描述符

名称

常用缩写

默认值

0

标准输入

stdin

键盘

1

标准输出

stdout

屏幕

2

标准错误输出

stderr

屏幕

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值