monkey命令简单使用

adb  Android  2024年10月30日 pm6:18发布4周前更新 城堡大人
62 0 0

前言

下面介绍一下Monkey的参数意义,以及进场使用的的测试命令。

记录于此,方便自己查阅。

正文

规范类命令

数字
adb shell monkey 100

100表示Monkey事件次数为100

> log.txt
# 保存到当前目录的log.txt种
adb shell monkey 100 > log.txt

# 保持到e盘的log.txt中
adb shell monkey 100 > e:\log.txt
-v

指定打印信息的详细级别,一个-v增加一个级别,总共分3个级别:Level 0、Level 1、Level 2。

Level 0

0级日志打印,除了启动提示、测试完成和最终结果外,提供极少的信息。

# 10000为测试事件次数
adb shell monkey -v 10000
Level 1

1级日志打印,提供较详细的信息,比如,发送到Activity的事件等

adb shell monkey -v -v 10000
Level 2

2级日志打印,提供超级详细的信息,比如,测试中被选中的或为被选中的Activity等

adb shell monkey -v -v -v 10000

约束类命令

-p

后面+包名,指定对该包名进行测试

adb shell monkey -p com.biumall.test 
-c

-c确定一个或多个特定的类别,Monkey就只允许系统去访问这些特定类别下列出的Activity了。

若不指定的话,默认访问Intent.CATEGORY_LAUNCHER 或Intent.CATEGORY_MONKEY下的Activity

主要的category:

1. intent.CATEGORY.ALTERNATIVE
2. intent.CATEGORY.BROWSABLE
3. intent.CATEGORY.DEFAULT
4. intent.CATEGORY.DEVELOPMENT_PREFERENCE
5. intent.CATEGORY.EMBED
6. intent.CATEGORY.HOME
7. intent.CATEGORY.INFO
8. intent.CATEGORY.LAUNCHER
9. intent.CATEGORY.MONKEY
10. intent.CATEGORY.OPENABLE
11. intent.CATEGORY.PREFERENCE
12. intent.CATEGORY.SELECTED_ALTERNATIVE
13. intent.CATEGORY.TAB

调试类命令

--ignore-crashes

于指定当应用程序崩溃时(Force& Close错误),Monkey是否停止运行。

使用此参数,即使应用程序崩溃,Monkey依然会发送事件,直到事件计数完成。

即使程序崩溃,Monkey依然会继续发送事件直到事件数目达到100为止

如果没有,上面参数,一旦有崩溃,就停止Monkey了。

# 忽略崩溃
adb shellmonkey -p com.biumall.test --ignore-crashes 100
# 一旦崩溃就停止
adb shellmonkey -p com.biumall.test  100
--ignore-timeouts

用于指定当应用程序发生ANR错误时,Monkey是否停止运行。

使用此参数,即使应用程序发生ANR错误,Monkey依然会发送事件,直到事件计数完成。

# 忽略ANR
adb shellmonkey -p com.biumall.test --ignore-timeouts 100
# 一旦ANR就停止
adb shellmonkey -p com.biumall.test  100
--ignore-security-exceptions

用于指定当应用程序发生许可错误时(如证书许可,网络许可等),Monkey是否停止运行。

使用此参数,即使应用程序发生许可错误,Monkey依然会发送事件,直到事件计数完成。

--kill-process-after-error

用于指定当应用程序发生错误时,是否停止其运行。如果指定此参数,当应用程序发生错误时,应用程序停止运行并保持在当前状态

(注意:应用程序仅是静止在发生错误时的状态,系统并不会结束该应用程序的进程)。

--monitor-native-crashes

监控本地代码的崩溃。

事件类命令

-s

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

# Monkey 测试1
adb shell monkey -p com.biumall.test -s 10 100
# Monkey 测试2
adb shell monkey -p com.biumall.test –s 10 100

两次测试的效果是相同的,因为模拟的用户操作序列(每次操作按照一定的先后顺序所组成的一系列操作,即一个序列)是一样的。

这个参数不是很理解

--throttle<毫秒>

用于指定用户操作(即事件)间的时延,单位是毫秒;

adb shell monkey -p com.biumall.test --throttle 500 100

其中

--throttle 500

表示延迟500毫秒。

--pct-touch

格式

--pct-touch{+百分比}

用例

# touch事件占10%
adb shell monkey -p com.biumall.test --pct-touch 10 100

调整触摸事件的百分比(触摸事件是一个down-up事件,它发生在屏幕上的某单一位置)

--pct-motion

调整动作事件的百分比(动作事件由屏幕上某处的一个down事件、一系列的伪随件机事和一个up事件组成)

--pct-motion {+百分比}
--pct-trackball

调整轨迹事件的百分比(轨迹事件由一个或几个随机的移动组成,有时还伴随有点击)

--pct-trackball {+百分比}
--pct-nav

调整“基本”导航事件的百分比(导航事件由来自方向输入设备的up/down/left/right组成)

--pct-nav {+百分比}
--pct-majornav

调整“主要”导航事件的百分比(这些导航事件通常引发图形界面中的动作,如:5-way键盘的中间按键、回退按键、菜单按键)

--pct-majornav {+百分比}
--pct-syskeys

设置系统按键事件的百分比(如Home键、Back键)

--pct-appswitch

设置启动Activity的百分比

--pct-anyevent

设置其他类型事件的百分比

monkey测试命令

下面是简单的测试

不过滤
adb shell monkey -v -v -v --throttle 300 --ignore-crashes --ignore-timeouts --ignore-security-exceptions --ignore-native-crashes --monitor-native-crashes 1000000
白名单

白名单就是只测试白名单中的包名。

下面是白名单内容,一行一个包名,

com.biumall.music
com.biumall.radio
com.biumall.files
com.biumall.settings

然后push到/data目录下

adb shell monkey --pkg-whitelist-file /data/whitelist.txt -v -v -v --throttle 300 --ignore-crashes --ignore-timeouts --ignore-security-exceptions --ignore-native-crashes --monitor-native-crashes 1000000
黑名单

黑名单就是不测试黑名单中的包名。

下面是白名单内容,一行一个包名,下面是不测试的包名:

com.biumall.speech
com.biumall.vr
adb shell monkey --pkg-blacklist-file /data/blacklist.txt -v -v -v --throttle 300 --ignore-crashes --ignore-timeouts --ignore-security-exceptions --ignore-native-crashes --monitor-native-crashes 1000000

抓取日志脚本

这部分来自参考文2,觉得不错,记录于此。

adb devices
@echo off
set serial=
set /p serial=Enter device serial or only enter:

if "%serial%"=="" (
    set cmd_adb=adb
    set cmd_fastboot=fastboot
) else (
    set cmd_adb=adb -s %serial%
    set cmd_fastboot=fastboot -s %serial%
)

:again
echo get root right
%cmd_adb% root
echo wait for device
%cmd_adb% wait-for-device
echo capture system log start at %date%_%time%
%cmd_adb% logcat tag:V -v time > system_%date:~0,4%%date:~5,2%%date:~8,2%%time:~0,2%%time:~3,2%%time:~6,2%%time:~9,2%.txt
echo device disappeared, wait for device again
%cmd_adb% wait-for-device
goto again
pause

参考文章

  1. Android稳定性测试利器-Monkey参数及实例介绍

  2. monkey测试详解

  3. monkey命令参数的详解

  4. Android自动化测试入门工具-Monkey

 历史上的今天

  1. 2021: 纪伯伦:我曾有七次鄙视自己的灵魂(0条评论)
  2. 2019: 史铁生:我与地坛[节选](0条评论)
  3. 2017: adb shell input的使用(0条评论)
版权声明 1、 本站名称: 91易搜
2、 本站网址: https://www.91es.com/
3、 本站部分文章来源于网络,仅供学习与参考,如有侵权,请留言

暂无评论

暂无评论...

随机推荐

Android startActivity去掉自带的动画效果

Android中startActivity系统自带动画效果,如果需要取消动效,可以考虑如下两种方式。使用overridePendingTransition在启动Activity后添加此代码Intent intent = new Intent(mContext, MainActivity.cl...

梁漱溟:花点心思活着,人生才有意义

一人们常常爱问:人生有没有目的?有没有意义?不知同学们对于这一类的问题想过没有?如果想过,其答案为何?要是大家曾用过一番心思,我来讲这问题就比较容易了,你们就可以比较容易地了解我的话。我以为人生不好说目的,因为目的是后来才有的事。我们先要晓得什么叫做目的。比如,我们这次来兴安,是想看灵渠,如果我...

SQLite Expert的注册记录

前言SQLite Expert软件很不错,在使用数据库时,这个软件是查看数据库的号帮手,当然,这个也是偶尔使用。这里分析一下网上的注册方法。正文这里介绍下载和注册。下载官方下载对应的位数的SQLite Expert:http://www.sqliteexpert.com/downlo...

Android修改原生电话铃声

前言简单记录一下,修改Android原生默认的铃声。推荐看参考文章,这里只是个人随笔记录。正文隐藏内容!付费阅读后才能查看!¥1 ¥3多个隐藏块只需支付一次付费阅读参考文章《Android 设置铃声》《Android 设置来电铃声、通知铃声、闹钟铃声中的坑》

林徽因:一片阳光

放了假,春初的日子松弛下来。将午未午时候的阳光,澄黄的一片,由窗棂横浸到室内,晶莹地四处射。我有点发怔,习惯地在沉寂中惊讶我的周围。我望着太阳那湛明的体质,像要辨别它那交织绚烂的色泽,追逐它那不着痕迹的流动。看它洁净地映到书桌上时,我感到桌面上平铺着一种恬静,一种精神上的豪兴,情趣上的闲逸;即或所谓...

ServiceManager反射

前言反射是很常用的一种方式。今天就记录一下,反射ServiceManager的addService()和getService()。如果不反射,需要引入framework_classes.jar正常情况下,如果没有系统源码的编译,不太可能拿到framework_classes.jar。正...