首页 > 编程知识 正文

monkey命令参数说明,完整的monkey指令

时间:2023-05-06 09:00:49 阅读:179086 作者:72

Monkey 简介

Monkey在英语中是“猴子”的意思,在测试行业中对应着“猴子测试”这个术语。 “猴子测试”是什么呢

Android附带命令行工具,它在模拟器或实际设备上运行,将伪随机事件流(如按钮、触摸板和手势)发送到被测试的APP应用程序。 monkey通过随机重复方法测试APP扩展的稳定性、鲁棒性。Monkey 原理

socket通信(Android客户端和服务器采用TCP/UDP方式)使用的事件流的数据流是随机的,monkey用Java语言编写,Monkey.jar由名为monkey的shell脚本启动

adb shell monkey [“命令参数”“命令计数”的最简单示例:

adb shell monkey 100 #发送了100个随机命令上面的monkey命令发送了100个随机命令,因为没有指定特定的APP应用程序软件包名称。 在整个系统中随机执行。

注:命令数,即发送的随机数的数值,请务必放在所有参数的末尾。

Monkey 命令

-p用于约束,此参数指定一个或多个软件包。 指定包后,将对该APP应用操作所有随机命令。 (有关如何查找包名称的信息,请参阅文章末尾的示例:

向adbshellmonkey-pcom.huomaotv.mobile 100 #“火猫TV”发送100个随机命令,接下来的100个命令在火猫TV APP内进行。 但是,100个命令会在非常快的时间内完成。

-v用于指定反馈信息的级别。 信息级别是日志的详细级别。 级别共分为三个级别,级别由命令中-v参数的数量决定,-v参数的数量越多,日志越详细。 Level 1:默认值。 仅提供少量信息,如启动提示、测试完成、最终结果和Crash日志

adbshellmonkey-pcom.huomaotv.mobile-v100 level2:提供更详细的日志,其中包含发送到activity的每个事件信息

adbshellmonkey-pcom.huomaotv.mobile-v-v100 level3:最详细的日志,包括测试中选择/未选择的Activity信息

ADB shell monkey-pcom.huomaotv.mobile-v-v-v100-- throttle中每个事件结束后的间隔时间。 用于减轻系统的压力。 如果未指定,事件序列adbshellmonkey-pcom.huomaotv.mobile-- throttle 300100 #每个命令之间的延迟时间300毫秒-s将指定测试种子值(编号)。 如果两次种子值相同,则两次测试的随机命令完全相同。 主要用于回归并再现发生的错误。 这里有点难理解,monkey命令的指令每次都是完全随机的,如果在测试中发现问题,就无法再现。 结果,在开发修复问题之后,也不知道以前的问题是否被修复了。 为了重现问题,如果在运行monkey命令时添加种子值,而后续命令具有该种子值,则执行两次的随机命令将完全匹配。 adbshellmonkey-pcom.huomaotv.mobile-s 5555-v100可以更改命令的其他参数,-s5555可以查看随机命令。 修改数量后,百分比应该与上一个指令一致。 例如,如果将数量从100更改为200,则上一个百分比与上一个随机指令一致

Monkey 参数

以下命令主要用于控制运行monkey命令时的调试选项。 其中--ignore-crashes和--ignoretimeouts长时间运行,如下班后运行数小时,保证运行中出现崩溃等问题时,仍能执行剩余指令。 在执行开始后立即遇到Crash和ANR,以避免执行后续命令。

参数说明注释--ignorecrashes指定Monkey是否在APP应用程序崩溃时停止。 使用此参数时,即使APP应用程序崩溃,Monkey也会在事件计数完成之前发送事件。 长时间开车一定要防备

--ignoretimeouts指定当APP应用程序发生应用程序侦听(anr )错误时Monkey是否停止。 如果使用此参数,Monkey将在事件计数完成之前发送事件,即使APP应用程序发生ANR错误也是如此。 长时间开车一定要防备

--ignoresecurityexceptions用于指定当APP应用程序发生许可证错误(如证书许可证或网络许可证)时Monkey是否停止。 如果使用此参数,Monkey将发送事件直到事件计数完成,即使在APP应用程序中发生许可证错误---

killprocessafter-erro用于指定当应用程序发生错误时,是否停止其运行。如果指定此参数,当应用程序发 生错误时,应用程序停止运行并保持在当前状态(注意:应用程序仅是静止在发生错 误时的状态,系统并不会结束该应用程序的进程)。 --monitornativecrashes用于指定是否监视并报告应用程序发生崩溃的本地代码。 -wait-dbg停止执行中的Monkey,直到有调试器和它相连接。 -dbg-noevents设置此选项,Monkey将执行初始启动,进入到一个测试Activity,然后不会再进一步 生成事件。为了得到最佳结果,把它与-v、一个或几个包约束、以及一个保持Monkey 运行30秒或更长时间的非零值联合起来,从而提供一个环境,可以监视应用程序所调 用的包之间的转换 

示例:

adb shell monkey -p com.huomaotv.mobile --ignore-crashes --ignore-timeouts --monitornative-crashes -v 100000

指定时间类型百分比参数
monkey 随机发送的命令中包含各种随机事件,各种类型的事件按照某种比例产生。如果想要指定某种类型的事件 更多一些,可以指定该事件的百分比。
比如当前测试的应用中主要支持的操作就是 触摸和滑动 等常规操作,那么就可以提高这两种类型的随机事件的比 例。

事件类别

调整事件说明

--pct-touch

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

--pctmotion

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

--pctpinchzoom

调整缩放事件的百分比(缩放事件即智能机上的放大缩小手势)

--pcttrackball

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

--pctrotation

调整横竖屏切换事件的比例

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

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

--pct-flip

调整键盘事件的百分比(键盘事件如点击输入框、键盘弹起、点击输入框以外区域、键盘收 回等)

--pctsyskeys

调整“系统”按键事件的百分比(这些按键通常被保留,由系统使用,如Home、Back、Start Call、End Call及音量控制键)

--pctappswitch

调整启动Activity的百分比。在随机间隔里,Monkey将执行一个startActivity()调用,作为最 大程度覆盖包中全部Activity的一种方法--pctanyevent调整其它类型事件的百分比。它包罗了所有其它类型的事件,如:按键、其它不常用的设备 按钮、等等

示例:

# 单个参数设置百分比 adb shell monkey -p com.huomaotv.mobile --pct-appswitch 20 10000# 多个参数设置百分比 adb shell monkey -p com.huomaotv.mobile --pct-appswitch 20 --pct-rotation 20 --pcttouch 30 --pct-motion 20 10000注意: 参数后面紧接百分比 ,百分比的总量不能大于 100%

日志分析

在命令的最后,加上 > 重定向到本地文件。 d:/monkey.log 放在 d 盘的根目录

示例:

adb shell monkey -p com.huomaotv.mobile --pct-appswitch 20 --pct-rotation 20 --pcttouch 30 --pct-motion 20 --ignore-crashes --ignore-timeouts --monitor-native-crashes 10000 > d:/monkey.log

那么对于 monkey 跑完之后,我们要如何去确认有没有出现 bug 呢? 最直观简单的方式就是通过搜索以下关键字:

1. 程序无响应的情况:搜索关键字“ANR in”2. 崩溃的情况1:搜索关键字“CRASH”3. 崩溃的情况2:搜索关键字“Exception”4. 内存溢出的情况:搜索关键字“OOM”5. 测试成功的情况:搜索关键字“Monkey finished”6. 如果出现空指针 NullPointerException ,就一定是 bug

 

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。