monkey常用命令和怎么杀死monkey进程

Monkey是Android平台上的命令行工具,用于向系统发送伪随机用户事件流,实现应用程序的压力测试。本文介绍了Monkey的基本概念、常用命令及参数详解,并提供了调试选项和停止Monkey测试的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

monkey什么时候用?

等我们的产品处于稳定状态,没有太多BUG后,一般用monkey去测试产品的稳定性、健壮性(是否会发生闪退、崩溃和无响应等问题)

什么是Monkey?

Monkey是Android中的一个命令行工具,可以运行在模拟器里或者真机设备中。它向系统发送伪随机的用户事件流(如滑动Trackball、触摸屏幕、按键等)实现对待测应用程序进行压力测试,所有的事件都是随机生成的,不带任何主观性。

Monkey常用命令行

基本参数:

adb shell monkey -p tv.danmaku.bili -s 110 --throttle 500 -v 1000 >/Users/mac/Desktop/test_monkey.txt

这条命令的作用是:打开哔哩哔哩应用,操作序列号为110,每个事件之间延迟500毫秒(就是0.5S),日志级别为一个V ,随机执行1000个事件,该日志保存到桌面的test_monkey.txt文件中。

1、-p<包名>:-p 的作用是指定打开哪个APP,实例中打开的是哔哩哔哩;命令是:-p tv.danmaku.bili(哔哩哔哩包名)。包名怎么得到,不要慌,下面告诉你怎么用命令行查询和怎么用自己手机系统查询。

  •  adb 命令查看当前打开的应用包名和activity:  
adb shell dumpsys activity | grep -i run

网上可以找到其他命令查找包名,可能我手机是安卓8.0版本,运行其他的都找不出来,上面这一条是在我手机能够成功查出当前打开应用的包名和activity的名称的命令。

  • 由包名获取该应用的apk路径:
adb shell pm path </包名>

通过手机系统设置来查看包名:

  • 我这里介绍查看B站包名,其他的一些小米、魅族等自己定制后的系统的查看方法也大同小异。操作步骤:“设置” -> “应用” -> 选择要查看的应用->点击右上角的详情。这个时候就能看到了(如下图)

                         

  • 打开手机 文件管理 —— 存储 —— Android / data / 目录,手机上所安装的软件都会在该目录下创建一个文件夹(com.android.browser),文件夹名即是软件包名,也就是我们要找的包名。拓展一下查看包名的方法,我还是喜欢去应用里面看包名。

2、-s 伪随机数生成器的seed值

当测试人员发现了问题,怎么进行复现。monkey所谓的随机操作,是基于seed产生的。每一个seed值都会产生唯一的一个操作序列。只要两次操作的seed值是一样的,那么这两次的操作序列也是一样的,这样我们就能用monkey来复现随机发生的bug了。

3、--throttle </时间(毫秒)>   :每个事件之间的延迟

当希望事件操作不宜过快或者有特定时间进行交互,就可以使用 --throttle 来延迟事件之间的操作。

补充:--randomize-throttle :用于指定用户操作(即事件)间的随机时延

示例:adb shell monkey -p  tv.danmaku.bili –throttle 200  --randomize-throttle  100

表示随机延时在0~200ms之间

4、-v 设置日志的级别

 -v 日志级别 Level0 :  缺省值,仅提供启动提示、测试完成和最终结果等少量信息;

 -v -v (或者-vv)日志级别 Level 1: 提供较为详细的日志,包括每个发送到Activity的事件信息;

 -v -v -v (或者-vvv)日志级别 Level 2 : 3个 v 是最详细的日志,包括了测试中选中/未选中的Activity信息。

5、” >“ </文件目录+文件名称+"."+"文件属性“> :重定向,将日志打印到指定位置。


指定发生事件的类型

虽然monkey测试是随机事件,但是我们可以指定事件的类型,注意:所有指定事件的数值加起来不能超过100。不做任何指定时,默认为--pct-anyevent <percent> 类型。

 --pct-touch <percent>:指定触摸事件的百分比。

 --pct-motion <percent>:指定滑动事件的百分比。

 --pct-trackball <percent>:指定轨迹球事件的百分比。

 --pct-nav <percent>:指定导航事件中,up、down、left、right等事件的百分比。

 --pct-majornav <percent>:指定导航事件中,back、menu等事件的百分比。

 --pct-syskeys <percent>:指定系统按键的百分比,包括HOME、Back、音量等。

 --pct-appswitch <percent>:指定Activity之间切换的比例。

 --pct-anyevent <percent>:指定任意事件的百分比。

 

调试选项

一般情况下,APP在操作过程中会存在崩溃、超时、异常等情况,按照前面所提到的,这会导致monkey直接停止测试。如果想要忽略掉这些情况,直接配置忽略设置就可以了。

--dbg-no-events:初始化启动的activity,但是不产生任何事件。
--hprof:指定该项后在事件序列发送前后会立即生成分析报告  —— 一般建议指定该项。
--ignore-crashes:忽略崩溃
--ignore-timeouts:忽略超时
--ignore-security-exceptions:忽略安全异常
--kill-process-after-error:发生错误后直接杀掉进程
--monitor-native-crashes:跟踪本地方法的崩溃问题
--wait-dbg:知道连接了调试器才执行monkey测试。

实例:

adb shell monkey -p tv.danmaku.bili --ignore-crashes --ignore-timeouts --ignore-security-exceptions-v 1000 


运行的时候我的哔哩哔哩在唱卡路里,要努力减肥。

不在多做介绍,要是用到别的命令,可以输入下面命令查看

adb shell monkey help

强制退出monkey

退出应用和拔掉数据线,都无法停止monkey测试,试图用control+C 命令,控制台虽然能再次输入命令,可是手机还是在继续monkey命令。网上大部分人认为monkey开始测试之后,就不能停止,除非时间数执行完成,或者在cmd窗口执行adb reboot来进行手机重启操作。如需停止monkey测试,输入如下命令(用B站举列子):

adb shell monkey -p tv.danmaku.bili --throttle 1000 500(创造一个持续的monkey命令);

输入control+C,控制台不再输出执行的信息,可以再次输入命令(但是手机还在跑monkey命令);

输入adb shell ps | grep monkey 查看monkey进程号,返回来的数字,即是monkey的进程号

如图 17390 就是我们找的进程号,我们可以运行kill 命令来杀死该进程:

adb shell kill 17390

然后可以看到手机进程中的monkey进程被杀死了,再执行adb shell ps | grep monkey,就会发现没有monkey进程。当然,手机也不再执行monkey测试了。

如何跑多个apk的monkey?

黑白名单只能二选一,不能同时使用。

黑名单:--pkg-blacklist-file (执行黑名单以外的apk)

白名单:--pkg-whitelist-file(只执行白名单里有的apk)

白名单的设置方法:
1、创建一个名称为whitelist的txt文档,在文件中输入应用程序的包名,如哔哩哔哩,则在文件中输入tv.danmaku.bili;如果有多个应用程序则在文件中添加多个包名,注意包名与包名之间均用回车键。
2、将whitelist.txt的文件导入到手机的/data目录下,然后在执行monkey测试的时候使用--pkg-whitelist-file参数再加上whitelist文件的存储路径,其他的参数设置则和测试单一apk没有区别。

adb push /Users/mac/Desktop/whitelist.txt /data(把白名单放入手机目录)

adb shell monkey --pkg-whitelist-file /data/whitelist.txt -s 110 -v -v -v 100 >/Users/mac/Desktop/white_test.txt 

黑名单的使用方法同白名单

参考链接:https://www.jianshu.com/p/97268b83dc1d(常用命令);https://blog.csdn.net/liuweiweiwei/article/details/50913792(如何停止monkey运行)。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值