快捷搜索:  汽车  科技

monkey脚本怎么更新(高级用法你都知道吗)

monkey脚本怎么更新(高级用法你都知道吗)Adb shell monkey -p com.mipay.wallet -v <event-count>但是这种随机的输入其实也是没什么作用的,通常我们会需要制定在某一个 App 内做随机事件。那么,可以再增加-p参数,完整命令如下:二、简单的使用 MonkeyMonkey 主要是借助 adb 命令来让 PC 与 Android 设备连接,adb 是一种 Android 调试工具,在 PC 上配置好环境即可使用。上面的命令表示向设备输入 100 个随机事件,如果正确输出,可以在设备上看到各种点击效果一闪而过。

monkey脚本怎么更新(高级用法你都知道吗)(1)

我准备了一些我整理的学习资料,包含:Android反编译、算法、设计模式、Java并发编程、Web项目源码。如果有兴趣可以私信我。

一、什么是 Monkey

Monkey 是Android 自身提供的,可以通过 adb shell 模拟用户行为,发送一些伪随机用户事件到目标设备上。

Monkey 和它的直接意思一样,可以像一个猴子,疯狂的输入各种随机事件到设备上,像是一个猴子不停的疯狂的点击设备。

既然 Monkey 有这样的功能,我们就可以利用它来对 Android App 做压力测试,可以在规定的范围内,任意随机触发各种事件,来验证 App 的抗压性和稳定性。这些随机事件包括:点击屏幕、滑动屏幕、各种无力按键等。

二、简单的使用 Monkey

Monkey 主要是借助 adb 命令来让 PC 与 Android 设备连接,adb 是一种 Android 调试工具,在 PC 上配置好环境即可使用。

上面的命令表示向设备输入 100 个随机事件,如果正确输出,可以在设备上看到各种点击效果一闪而过。

但是这种随机的输入其实也是没什么作用的,通常我们会需要制定在某一个 App 内做随机事件。那么,可以再增加-p参数,完整命令如下:

Adb shell monkey -p com.mipay.wallet -v <event-count>

更多其它高级的命令,可以通过adb shell monkey -h进行查看。

monkey脚本怎么更新(高级用法你都知道吗)(2)

三、Monkey的高级用法

1、设置事件间隔

上面给出的例子,基本上 100 次点击会在瞬间被完成,肉眼可能可以感受到被点击,但是无法明显的感觉到有那么多次。所以设定每次事件的间隔时常,是有必要的。为 Monkey 设定事件的间隔,使用--throttle参数。

adb shell monkey —throttle <milliseconds>

2、复现随机点击的事件

Monkey 虽然是随机点击的,但是我们主要是用它来做压力测试。所以如果在碰到崩溃的时候,可以通过一种方式,重复之前的随机事件,再来一次,看看崩溃的问题。Monkey 也提供了这样的参数 -s

adb shell monkey -s <seed> <event-count>

monkey脚本怎么更新(高级用法你都知道吗)(3)

可以看到,在每次执行完 Monkey 之后,从输出里可以看到当前的 seed 值,只要通过-s参数指定相同的 seed,就可以重复刚才的操作。

例如如果需要重复上面的操作,就需要在 Terminal 中输入:

adb shell monkey -s 1487572980979 -v 1000

3、忽略崩溃

正常来说,如果在 Monkey 执行的阶段,出现了崩溃,会立即停止接下去的执行。但是有时候,我们在执行 Monkey 的时候,是在无人员干涉的情况下,例如想要它执行一夜,等等情况。那么如果出现崩溃就停止执行,明显不是我们需要的。在 Monkey 中,可以通过—ignore-crashes来忽略掉异常崩溃。

adb shell monkey —ignore-crashes <event-count>

如果用此参数忽略了崩溃,在发生崩溃的时候,会继续执行,表现是又重新开始执行 Monkey 命令了,而同时,用-s设定的 seed 值将不会生效。

4、忽略ANR

ANR 是 Android 的一个错误,在页面无法响应事件的时候会报出来。一般遇到这样的情况,表示当前有耗时操作在 UI 线程中执行,导致 UI 卡顿了,此时就会弹出那个经典的 ANR 弹窗。

在 Monkey 中,如果遇上 ANR,同样会停止继续执行。如果想要忽略 ANR ,让其触发的之后依然执行下去,可以使用—ignore-timeouts参数。

adb shell monkey —ignore-timeouts <event-count>

同样它也会导致-s失效。

四、指定Monkey事件

在 Monkey 中,虽然输入的事件是随机产生的,但是可以指定输入事件类型的百分比,让其控制在我们需要的范围内。

在 Monkey 中,可以设定的事件类型有:

  • --pct-touch <percent>:指定触摸事件的百分比。

  • --pct-motion <percent>:指定滑动事件的百分比。

  • --pct-trackball <percent>:指定轨迹球事件的百分比。

  • --pct-nav <percent>:指定导航事件中,up、down、left、right 等事件的百分比。

  • --pct-majornav <percent>:指定导航事件中,back、menu 等事件的百分比。

  • --pct-syskeys <percent>:指定系统按键的百分比,包括 HOME、Back、音量等。

  • --pct-appswitch <percent>:指定 Activity 之间切换的比例。

  • --pct-anyevent <percent>:指定任意事件的百分比。

默认情况下,如果不设置,会是--pct-anyevent为百分之百,也就是纯随机事件。如果通过其他的参数配置了之后,如果相加的百分比不为百分百,余下的百分比部分也会生成随机事件。

从 Monkey 的输出 Log 中,可以看出指定事件的百分比。

monkey脚本怎么更新(高级用法你都知道吗)(4)

例如这里输入触摸事件为百分百,Event percentages 的 0 表示的就是触摸事件,为100%。

五、举个栗子

到这里基本上就介绍为 Monkey 中一些主要的参数含义了,更多的可以通过 -h 查看帮助文档。

基本上配置事件百分比,有一些事件已经随着 Android 发展被消失掉了,例如轨迹球,在现在主流的设备上,已经看不见轨迹球的影子了。

那么就本文介绍的一些命令,简单配置一个可以直接使用的例子:

adb shell monkey -p com.miui.cal —throttle 100 —-ignore-crashes —-ignore-timeouts --pct-touch 50 --pct-majornav 10 --pct-syskeys 20 --pct-appswitch 20 -v 1000 > ./monket_log.txt

我准备了一些我整理的学习资料,包含:Android反编译、算法、设计模式、Java并发编程、Web项目源码。如果有兴趣可以私信我。

猜您喜欢: