monkey命令简单使用

adb  Android  2024年10月30日 pm6:18发布3周前更新 91es.com站长
57 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、 本站网址: 91es.com
3、 本站内容: 部分来源于网络,仅供学习和参考,若侵权请留言
3、 本站申明: 个人流水账日记,内容并不保证有效

暂无评论

暂无评论...

随机推荐

android13添加SELinux权限时踩的坑

前言在配置Android 13 SELinux权限时出现如下坑,记录一下,方便自己查阅。正文坑一:ERROR: end of file in comment编译时提示service.te有如下错误prebuilts/build-tools/linux-x86/bin/m4:device/...

付志勇:我的秋天没有忧伤

我喜欢秋天胜过任何一个季节,我喜欢那弹指可破的空气、橙色明亮的阳光甚至草枯、花落、风吹过大地 我喜欢在秋天里写诗写我三十年一晃而过的光阴写我尘世里的清欢写窗外飘落的叶子渐渐覆盖住旧事 秋天让我回望过去但更多的思索将来一场繁华的凋敝是不是意味着另一场繁华...

C语言之链接属性

前言对于C语言的链接属性,比较模糊,因此今天回归一下课本上的知识,并记录一下,方便自己回顾。正文链接属性链接属性用于认定不同文件的标识符(比如变量名、函数名)是否是同一个实体。通俗地说,就是在两个不同文件中的变量、函数声明是否指向同一个实体。比如:a、b文件同时声明了变量c,链接属性就指...

Kotlin数组简介

前言简单记录一下Kotlin中数组的使用。正文数组是指一组数据的集合,数组中的每个数据被称作元素。在数组中可以存放任意类型的元素,但同一个数组中存放的元素类型必须一致。数组可分为一维数组和多维数组。一维数组在Kotlin中,数组使用Array表示,其中数值类型、布尔类型、字符类型、字符...

SQLiteBlobTooBigException

前言记录一下查询数据库时的异常Caused by: android.database.sqlite.SQLiteBlobTooBigException: Row too big to fit into CursorWindow requiredPos=0, totalRows=1at and...

自定义垂直Seekbar之添加事件监听

前言本文是《自定义垂直Seekbar简介》基础上进行修改的,参考Android原生的SeekBar的setOnSeekBarChangeListener新增的。后面新增的,重新开一片文章记录一下。正文本文跟《自定义垂直Seekbar简介》内容差不多,就是新增了setOnSeekBarCha...