monkey

1. monkey基础知识

monkey概况、常用参数、11大事件、环境搭建,以及monkey命令行使用方法
money是Google提供的稳定性测试小工具,可运行在模拟器或真机。他项系统发送伪随机的用户事件,模拟用户的按键输入、触摸屏输入、手势输入等,从而对正在运行的应用程序进行压力测试。
目的是看设备多长时间会出现异常,并观察系统的稳定性和容错性能
monkey是Android系统自带的,其启动脚本是位于Android系统的/system/bin目录下的monkey文件,其jar包是位于Android系统的/system/framework目录的Monkey.jar,
查看monkey文件

whyred:/system/bin $ ls -l monkey                                                                                                                  
-rwxr-xr-x 1 root shell 268 2009-01-01 00:00 monkey
whyred:/system/bin $ cat monkey

启动文件的代码

# Script to start "monkey" on the device, which has a very rudimentary
# shell.
#
base=/system
export CLASSPATH=$base/framework/monkey.jar
trap "" HUP
for a in "$@"; do    #打印命令行参数
    echo "  bash arg:" $a
done
#根据命令行参数的配置,生成伪随机的事件流,并在Android设备上执行对应的事件
exec app_process $base/bin com.android.commands.monkey.Monkey "$@" 

2. monkey测试的基本方法

常规的稳定性测试、自定义脚本的稳定性测试、结合常用辅助命令的monkey测试,以及monkey日志的分析方法

3. 介绍monkey的原理,包括代码框架和代码逻辑分析

4. monkey使用的进阶篇

通过截图改造和Wi-Fi监控改造2个实际案例,介绍了如何通过修改monkey源码达到优化monkey工具的目的

adb shell monkey -help

1. COUNT 不可为空

adb shell monkey 10

2.[-p ALLOWED_PACKAGE [-p ALLOWED_PACKAGE] ...]

这个参数是设定一个或几个包,Monkey将只允许系统启动这些包的活动。指定多个包时,需要使用多个-p,每个-p选项只能用于一个包。如果不指定,monkey将随机启动app。

#指定一个应用
adb shell monkey -p com.cubic.autohome  1000
#指定多个应用,汽车之家和UC浏览器
adb shell monkey -p com.cubic.autohome -p com.UCMobile 1000

如果应用隐藏了启动Activity,可以使用monkey -p启动。uiautomator2的就是这么做的

3. [-c MAIN_CATEGORY [-c MAIN_CATEGORY] ...]

指定意图的分类,这样monkey只会启动可以处理这些种类的意图的活动。如果没有设置用于指定某个类,Monkey就默认执行Intent.Category_LAUNCHER和Intent.Category_MONKEY。可以使用多个-c选项,但是每个-c命令选项只能用于一个类。

4.-v 打印信息的详细级别

-v 0级:打印测试时执行的一些发送给被测试的Activity的事件
-v -v 1级:增加了那些Activity被选中,将在信息被输出出来
-v -v -v 2级:那些应用已经安装了但是却没有被选中的信息也被输出出来

5.-s SEED]

伪随机数生成器的种子值,如果用相同的随机种子值,前后两次执行将会生成相同的时间序列.
注意:如果要得到seed值,需要加-v参数查看

6. --throttle MILLISEC 毫秒

这个参数是设定在两个事件之间插入一个固定延时,它可以减缓Monkey的执行速度。如果不指定,Monkey将不会被延迟,事件将尽可能快的被执行

adb shell monkey -p com.UCMobile --throttle 3000 100

7.--pct-touch PERCENT

设定触屏事件生成的百分比,触屏事件是一个手指按下、抬起的手势。

adb shell monkey --pct-touch 50 -p com.cubic.autohome --throttle 3000  100

8.--pct-motion PERCENT

设定滑动事件生成的百分比,滑动事件是从一个坐标按下到另一个坐标抬起的手势

adb shell monkey --pct-motion 50 -p com.cubic.autohome --throttle 3000  100

9.--pct-trackball PERCENT

设定轨迹球事件生成的百分比。轨迹球是包含一系列随机移动和单机事件的事件

10.--pct-nav PERCENT

设置基本的导航事件的百分比,基本导航事件包括模拟方向性设备输入向上、向下、向左、向右的事件

11.--pct-majornav PERCENT

设定主要导航事件的百分比,主要导航事件如back键、home键、menu键

12.--pct-syskeys PERCENT

设定系统按键事件的百分比,系统按键是指这些按键通常被保留,由系统使用,如home、back、拨号、挂断、音量控制键。

13.--pct-appswitch PERCENT

这个参数是设定启动活动事件的百分比。在随机的一定间隔后,monkey就会执行一个startActivity()函数尽可能多的覆盖包中全部活动

14.--pct-anyevent PERCENT

设定其他类型事件的百分比,如普通的按键消息,不常用的设备按钮事件等。

15.--dbg-no-events

若指定了该参数,monkey将会执行初始启动,进入到一个测试Activity,不会再进一步生成事件。

16.--hprof

monkey会在发送事件序列的前后,生成性能分析报告。通常会在/data/misc/目录下生成一个文件

17.--ignore-crashes

通常情况下,monkey会在待测应用程序崩溃或发生任何异常后停止运行。若指定了该参数,则monkey将会在产生异常后,继续向系统发送事件,直到事件全部完成

adb shell monkey -p com.UCMobile --ingore-crashes 100

18.--ignore-timeouts

--ignore-timeouts|通常情况下,当应用程序发生任何超时错误(应用ANR)时,monkey将会停止运行。若指定了该参数,monkey将会在产生错误信息后,继续向系统发送事件,直到指定的事件全部完成

19.--ignore-security-exceptions

通常情况下,monkey会在被测应用程序发生权限方面的错误时停止运行。若指定了该参数,则monkey将继续想系统发送事件,直到指定的事件全部完成

20.--kill-process-after-error

通常情况下,monkey由于一个错误而停止时,出错的应用程序将继续处于运行状态。当设置了此选项,它将会通知系统停止发生错误的进程。

adb shell monkey -p com.UCMobile --kill-process-after-error 100 -v

21.--monitor-native-crashes

监视由Android系统本地代码部分引起的崩溃,若同时指定了--kill-process-after-error参数,则整个系统将会关机

22.--wait-dbg

启动monkey后,先中断其运行,等待调试器和它相连接

23.--ignore-native-crashes

24.--match-description TEXT

25.--pct-flip PERCENT

26.--pct-pinchzoom PERCENT

27.--pct-permission PERCENT

28.--pkg-blacklist-file PACKAGE_BLACKLIST_FILE

29.--pkg-whitelist-file PACKAGE_WHITELIST_FILE

30.--setup scriptfile

31.[-f scriptfile [-f scriptfile] ...]

32.--port port

33.--randomize-throttle

34.--profile-wait MILLISEC

35.--device-sleep-time MILLISEC

36.--randomize-script

37.--script-log

38.--bugreport

39.--periodic-bugreport

40.--permission-target-system

 monkey -p com.UCMobile--ignore-timeouts --ignore-security-exceptions --pct-trackball 0 --pct-nav 0 --pct-majornav 0 --pct-anyevent 0  -v -v -v --throttle 500 1200000000 > /data/local/tmp/monkeySC.log 2>&1 &
原文地址:https://www.cnblogs.com/csj2018/p/10611388.html