monkey命令简单使用

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

暂无评论

暂无评论...

随机推荐

apache开启gzip压缩

我的买的是阿里云的服务器,或许不同服务商的路径不同,所以我的路径仅供参考。/alidata/server/httpd/conf/httpd.confA.开启模块:LoadModule deflate_module modules/mod_deflate.soLoadModule h...

Android xml中selector配置选中按下等状态的透明度值

前言偶然项目中UI只提供一张图,需要程序员根据View的不同状态对图片透明度处理。Android中对View透明度处理还是很容,但对不同状态设置不同透明度就稍微复杂。经过多次的尝试,发现Android中xml也可以对不同状态配置不同透明度值,既方便又简单,因此记录于此,方便查阅。正文下面是...

反射之获取类的构造函数等

前言记录一下反射相关内容,摘抄于此,方便自己查阅。反射技术包括如下内容:根据一个字符串得到一个类的对象获取一个类的所有公用或私有、静态或实例的字段,方法,属性对泛类型的反射正文本文介绍反射之获取类的构造函数以及其属性,方法。在反射前,需要新增一个类用于测试,这创建一...

刘瑜:过去的怎样让它过去

都赫提先生,31岁。听到枪声,他慌乱中趴下,向街边的建筑匍匐,但是还没来得及抵达安全的地方,一颗子弹向他飞来,打中了他的后背。麦克吉干先生,41岁。看到中弹的都赫提跑过去施救,同时挥舞着手中的一块白手帕,以示他的救援意图,但是他还没抵达伤者,后脑门上也中了一弹,立刻倒地身亡。这是1972年1月30...

Android 13之MediaProvider的优化

前言记录一下Android 13的MediaProvider的优化。随着Android发展,Android10 扫描器的的主要功能就放MediaProvider中了,MediaScannner类的作用就淡化了。记录一下,对MediaProvider的优化,方便自己查阅。正文这里只是简单记...

SQLite Expert的注册记录

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