Monkey高级参数的应用

一. throttle 参数

问题:当我们执行adb shell monkey 1000这个压力测试的时候,这个动作是非常快的,瞬间就完成了。如果我们需要在每一个执行动作中间加一个延时的话,可以使用throttle参数。

参数解释:指定事件之间的间隔。

命令

adb shell monkey --throttle <millisecond>#毫秒(延时时间)

示例:如果我们要执行计算器10个事件,每个事件中间间隔1s,命令如下:

adb shell monkey -p com.android.calculator2 --throttle 1000 10

动态演示不好截图,大家自己试一下哈。

二. seed参数

问题:我们在做monkey做测试的时候都知道,monkey做的操作都是随机的,那如果我们发现了一个bug,当我们提交给开发后,开发要求我们复现这个bug,那么问题来了,monkey执行的是随机事件,你要我复现,我怎么能让monkey重新按照上次的顺序执行一边呢?

参数解释:执行随机生成数的seed值。

也就是说,monkey所谓的随机操作,是基于seed产生的。每一个seed值都会产生唯一的一个操作序列。只要两次操作的seed值是一样的,那么这两次的操作序列也是一样的,这样我们就能用monkey来复现随机发生的问题了。

命令:

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

示例:仍然以计算器压测10次为例,seed值我们设置为100。第一次执行

C:\Windows\System32>adb shell monkey -p com.android.calculator2 -s 100 10
Events injected: 10
## Network stats: elapsed time=461ms (0ms mobile, 0ms wifi, 461ms not connected)

第二次执行(先把计算器历史记录清空并且推出)

C:\Windows\System32>adb shell monkey -p com.android.calculator2 -s 100 10
Events injected: 10
## Network stats: elapsed time=2996ms (0ms mobile, 0ms wifi, 2996ms not connected)

大家注意模拟器两次输出的数字,会发现两次执行动作是一致的,这样我们就能复现随机事件出现的bug了。

三,触摸事件

问题:如果我们只要求monkey触发点击事件10次,或者只触发滑屏操作,怎么办呢?

参数解释:设定触摸事件半分比。

命令:

adb shell monkey --pct-touch <percent>

示例:让monkey帮我们完成100%的10个点击事件。

adb shell monkey -p com.android.calculator2 --pct-touch 100 10

发现看不出来有什么。这里我们加个参数 -v,列出所有事件的详情。

adb shell monkey -v -p com.android.calculator2 --pct-touch 10 100

执行结果:列出了所有的touch事件。
Event percentages就是完成了100%的点击事件。其余事件占比是0%。

C:\Windows\System32>adb shell monkey -v -p com.android.calculator2 --pct-touch 100 10
:Monkey: seed=1511772164945 count=10
:AllowPackage: com.android.calculator2
:IncludeCategory: android.intent.category.LAUNCHER
:IncludeCategory: android.intent.category.MONKEY
// Event percentages:
//   0: 100.0%
//   1: 0.0%
//   2: 0.0%
//   3: 0.0%
//   4: -0.0%
//   5: 0.0%
//   6: 0.0%
//   7: 0.0%
//   8: 0.0%
//   9: 0.0%
//   10: 0.0%
:Switch: #Intent;action=android.intent.action.MAIN;category=android.intent.category.LAUNCHER;launchFlags=0x10200000;co
onent=com.android.calculator2/.Calculator;end
    // Allowing start of Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] cmp=com.androi
calculator2/.Calculator } in package com.android.calculator2
:Sending Touch (ACTION_DOWN): 0:(177.0,18.0)
:Sending Touch (ACTION_UP): 0:(184.94064,1.9921265)
:Sending Touch (ACTION_DOWN): 0:(343.0,678.0)
:Sending Touch (ACTION_UP): 0:(359.80368,667.6056)
:Sending Touch (ACTION_DOWN): 0:(34.0,664.0)
:Sending Touch (ACTION_UP): 0:(53.356007,662.314)
:Sending Touch (ACTION_DOWN): 0:(175.0,302.0)
:Sending Touch (ACTION_UP): 0:(179.52809,295.46835)
:Sending Touch (ACTION_DOWN): 0:(308.0,308.0)
Events injected: 10
:Sending rotation degree=0, persist=false
:Dropped: keys=0 pointers=0 trackballs=0 flips=0 rotations=0
## Network stats: elapsed time=507ms (0ms mobile, 0ms wifi, 507ms not connected)
// Monkey finished

四,其他事件

1.动作事件

参数解释:设置动作事件的百分比

命令:

adb shell monkey --pct-motion<percent>

示例:如果我们执行100次操作,其中指定touch事件50%,motion事件30%,则命令如下:

adb shell monkey --pct-touch 50 --pct-motion 30 100

这里写图片描述

那剩下的20%会随机进行操作。如果我们不想monkey执行其他事件,只执行touch和motion事件,我们touch和motion的百分比加起来要等于100%才可以。

adb shell monkey --pct-touch 50 --pct-motion 50 100

这里写图片描述

这里我们看到只执行了touch和motion事件。

2.轨迹球事件

参数解释 :设定轨迹球事件百分比。

命令:

adb shell monkey --pct-trackball <percent>
3.基本导航事件

参数解释:设定基本导航事件的百分比,输入设备的上、下、左、右。

命令

adb shell monkey --pct-nav <percent>
4.主要导航事件

参数解释:设定主要导航事件百分比,兼容中间键,返回键,菜单按键。

命令

adb shell monkey --pct-majornav <percent>
5.系统导航事件

参数解释:设定系统导航事件百分比,HOME、BACK及拨号音量键。

命令

adb shell monkey --pct-syskeys <percent>
6.启动Activity事件

设定启动Activity的事件百分比。

命令:

adb shell monkey --pct-appswitch <percent>
7.不常用事件

设定不常用事件百分比。

命令:

adb shell monkey --pct-anyevent <percnet>
8.崩溃事件(CRASH)

当我们执行monkey操作的时候,如果遇到系统应用崩溃怎么办呢?monkey这时候就会停止,后面的操作不会继续执行。所以我们需要一个参数来让monkey忽略在压力测试遇到的崩溃事件,继续执行后面的操作。

命令:

adb shell monkey --ignore-crashes <event-count>
9.超时事件(ANR)

与崩溃事件一样,遇到超时时,忽略,继续进行操作,直到完成指定的操作数。

命令:

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

示例:我要执行计算器100次压测,忽略超时和崩溃事件。

adb shell monkey -p com.android.calculator2 --ignore-crashes --ignore-timeouts 100
  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
测试准备: Monkey压力测试时除了添加测试APP,还可另外添加2-3个第三方app进行对比测试。 1.在D盘新建一个txt文件,添加APP包名,命名为whitelist.txt 2.用cmd命令把whitelist.txt文件push到手机 adb push d:\whitelist.txt /data/local/tmp/ 3.压力测试指令monkey -p 包名 [参数] -v (-v -v) 执行次数 >导出log文件 l 对白名单包进行测试 l monkey --pkg-whitelist-file /data/local/tmp/whitelist.txt --throttle 500 -s 100 --ignore-crashes --ignore-timeouts --ignore-security-exceptions --ignore-native-crashes --monitor-native-crashes -v -v -v 1000 1> /mnt/sdcard/monkey_test.txt 2>&1 & 黑名单:不测试应用 白名单:只测试这部分应用 注意:不能同时设置黑名单和白名单 设置黑名单: --pkg-blacklist-file PACKAGE_BLACKLIST_FILE 设置白名单: --pkg-whitelist-file PACKAGE_WHITELIST_FILE l 对单独的APP进行测试 l monkey-p com.hst.che --throttle 500 -s 100 --ignore-crashes --ignore-timeouts --ignore-security-exceptions --ignore-native-crashes --monitor-native-crashes -v -v -v 1000 >/mnt/sdcard/monkey1.txt 说明: --throttle(毫秒)事件之间插入的固定延迟。通过这个选项可以减缓Monkey的执行速度。如果不指定,Monkey将尽可能快的产生并执行事件。 -s 用于指定伪随机数生成器的seed值,如果seed相同,则两次Monkey测试所产生的事件序列也相同的。 --ignore-crashes 忽略程序崩溃。设置此选项后,Monkey会执行完所有的事件,不会因crash而停止。 --ignore-timeouts 忽略程序无响应。设置此选项后,Monkey会执行完所有的事件,不会因ANR而停止。 --ignore-security-exceptions 忽略证书或认证异常。设置此选项后,Monkey会执行完所有的事件,不会因认证或证书异常而停止。 --ignore-native-crashes 监视系统中本地代码发生的崩溃 --monitor-native-crashes 忽略本地代码导致的崩溃。设置忽略后,Monkey将执行完所有的事件,不会因此停止。 -v -v –v 提供最详细的设置信息 4.导出log到电脑:pull /mnt/sdcard/monkey.txt d:monkey.txt 分析log l 日志开头:显示本次测试seed值,执行次数,测试包, l 日志结尾: 如果Monkey测试顺利执行完成,在log的最后,会打印出当前执行事件的次数和所花费的时间;Monkey finished代表执行完成。 (如果Monkey执行中断,在log的最后也能查看到当前已执行的次数。) l 日志内容分析 一般测试结果分析-搜索关键字: 1.程序无响应,ANR问题:在日志中搜索“ANR” 2.崩溃问题:在日志中搜索“CRASH” 3.其他问题:在日志中搜索”Exception” 详细分析monkey日志 Switch--查看log中的Switch,主要是查看Monkey执行的是那一个Activity,两个swtich之间如果出现了崩溃或其他异常,可以在该Activity中查找问题的所在。 Sleeping--Sleeping for 500 milliseconds这是执行Monkey测试时,throttle设定的间隔时间,每出现一次,就代表一个事件。 重现问题 Monkey测试出现错误后,一般的查错步骤为以下几步: 1.找到是monkey里面的哪个地方出错 2.查看Monkey里面出错前的一些事件动作,并手动执行该动作 3.若以上步骤还不能找出,可以使用之前执行的monkey命令再执行一遍,注意seed值要一致

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值