android monkey原理_Android测试之Monkey原理及源码分析(一)

monkey测试

Android app想要吃测试稳定性,monkey最佳。而monkey是继承于shell中的一段指令,使用java编写的,所以只要有adb就能使用monkey。

monkey环境搭建

1.安装adb(https://blog..net/weixin_43273051/article/details/88809281)

2.安装Java JDK,并添加到环境变量

3.通过adb连接设备(https://blog..net/weixin_43273051/article/details/88809281)

4.adb shell monkey [options]

event-count

1.event-count是一个蛮关键的参数,省略掉它只会打印monkey的help usage

PS C:\Users\dchen> adb shell monkey

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.那么event-count是啥呢?它是指随机发送事件总数,比如要发送100个随机事件,如下:

PS C:\Users\dchen> adb shell monkey 100

// activityResuming(com.android.documentsui)

Events injected: 100

## Network stats: elapsed time=1553ms (0ms mobile, 0ms wifi, 1553ms not connected)

options

1.options是指monkey的参数

17b6f5b22718ba436eca6063db52f794.png

2.options根据具体需求可分为4类:

·常规类:

[-h]参数帮助信息

[-v]打印日志信息,-v越多日志信息越详细(最多3个):1个-v除启动提示、测试完成、结果以外提供的信息较少;2个-v提供较详细信息,如事件类型、事件比例、逐个发送到activity信息等;3个-v提供更详细的信息。

·事件类:对随机事件进行调控,使其按照设置进行

[-f scriptfile [-f scriptfile] …]用monkey运行指定的脚本,后面要接循环次数

[-s SEED]重复执行之前的随机操作

[–throttle MILLISEC]给每一个事件之间加上一个固定延迟(单位ms),默认是没有延迟的,而响应是需要一定时间的,这个参数很有用

[–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-pinchzoom PERCENT]调整缩放事件的百分比

[–pct-anyevent PERCENT]调整其他类型事件的百分比

注意:百分比总量不能超过100,而且touch和motion肯定是最频繁的,则可以提高这两种事件的比例;根据不同应用场景可以相应调整一些事件比例,比如视频类app,可以适当增加屏幕翻转事件的比例。

·约束类:将随件时间运行的范围约束在某几个包或类中

[-p ALLOWED_PACKAGE [-p ALLOWED_PACKAGE] …]测试一个或者多个包,后接包名

[-c MAIN_CATEGORY [-c MAIN_CATEGORY] …]测试一个类或者多个类,后接类名

·调试类:便于快速定位monkey运行中的问题

[–ignore-crashes]设置之后,当应用程序崩溃或失控异常时,monkey将继续运行直到完成event-count;若不设置,一旦遇到则停止运行。自动长跑过程中还是挺有用的

[–ignore-timeouts]设置之后,当应用程序发生超时错误(像ANR),monkey将继续运行直到完成event-count;若不设置,一旦遇到则停止运行

[–ignore-security-exceptions]设置之后,当应用程序发生任何权限错误(像启动需要权限的应用),monkey将继续运行知道完成event-count;若不设置,一旦遇到则停止运行

[–monitor-native-crashes]设置之后,当应用程序遇到系统级native code的崩溃事件时,将被监视并报告;否则不会监视此类事件

[–ignore-native-crashes]设置之后,当应用程序发生系统级native code崩溃时,monkey将继续运行直到完成event-count;若不设置,一旦遇到则停止运行

[–kill-process-after-error]设置之后,当应用程序发生错误(包括system native code crash)停止时,将会通知系统杀掉发生错误的进程;若不设置,该进程将继续处于运行状态

[–hprof]设置之后,将在monkey事件序列前后立即会在data/misc生成5M左右profiling report

[–wait-dbg]设置之后,将暂停执行中的monkey,直到有调试器与它连接,这样可以在发生崩溃时抓一下log

[–dbg-no-events]设置之后,monkey将进行初始启动,进入到某个测试Activity中不会进一步生成事件,通常与其他参数一起使用(像-v -p --throttle等)

3.TOUCH触摸事件:某个位置的一个按下并抬起的事件

4.MOTION动作事件:从某个位置按下后经过一系列为随机事件后弹起的事件

5.SYSKEYS系统按键事件:仅供系统使用的保留按键:HOME、BACK、拨号键、挂断键、音量键、切换键等

6.NAV基本导航事件:方向输入设备的上、下、左、右事件,手机上很少有这样的键,用得很少

7.MAJORNAV主要导航事件:会引起图形界面的一些动作,像返回键

8.APPSWITCH应用切换事件:随机时间间隔中,启动一个应用,即调用startActivity()最大限度开启该被测包中的所有应用

9.FLIP键盘事件:一些与键盘相关的操作,像点击输入框、键盘弹起、点击输入框以外区域、键盘收回等

10.PINCHZOOM缩放事件:在屏幕上的某两处同时按下,并同时移动,最后同时抬起的事件

11.ANYEVENT其他类事件:除了上面的事件以外的其他事件,像按键、其它不常用的设备按钮等

注意:monkey正常结束后,是不会停止启动的进程的,而是保持结束时间时的那个状态,而不会回到主界面

monkey测试原理

利用socket通讯方式来模拟用户的按键输入、触摸屏输入、手势输入等等,看设备多久出现异常。当monkey在设备上运行时,若用户触发event(如点击、输入等)或一些系统级别事件时,他就会产生随机脉冲,所以可以用monkey进行冒烟测试、随机测试、压力测试、稳定性测试。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值