APP稳定性测试利器 Monkey介绍、实战使用、日志分析

article/2025/10/6 22:56:57

第一、Monkey简介
Monkey是什么?

Monkey 是安卓官方提供的一个命令行工具,可以运行在Android模拟器和实体手机上。通过Monkey 来模拟用户的触摸、点击、滑动、系统按键的操作,来对APP进行压力测试、稳定性测试。换句话说,就是在乱点一通的情况下,来验证APP程序的稳定性。

Monkey主要作用

通过发送伪随机的用户事件流,在压力情况下来验证app的稳定性。Monkey主要用来发现崩溃、无响应等影响用户使用的问题。

Monkey执行原理

软件测试工程师必知必会—APP稳定性测试Monkey(一)

Monkey 的局限

1、一般只适用于Android 的app;

2、执行的操作随机,只能控制比例;

第二、Monkey命令及参数
本文给大伙介绍Monkey的详细命令和使用参数。

Monkey命令主要分为基本参数、事件类、调试类。

Monkey基本参数

-h:打印帮助信息。如下图,把monkey支持的所有命令及参数都打印出来了,在你一时想不起命令的时候可以参考。

-v:指定打印信息的详细级别,一个 -v增加一个级别 , 默认级别为 0 。最多支持-v -v -v,也就是最详细的日志输出。

-p:指定运行的包名。指定包之后,monkey将只允许系统启动指定的app。如果指定多个包,需要使用多个-P。

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

--throttle:每个事件结束后的间隔时间。如:--throttle 100

Monkey 命令大全如下图:

软件测试工程师必知必会—APP稳定性测试Monkey(二)

Monkey事件类命令

事件类命令是Monkey最重要的命令,共11个事件类命令。

--pct-touch:指定触摸事件的百分比,如:--pct-touch 5%

--pct-motion <percent> 滑动事件

--pct-trackball <percent> 轨迹球事件

--pct-nav <percent> 导航事件 up/down/left/right

--pct-majornav <percent> 主要导航事件 back key 、 menu key

--pct-syskeys <percent> 系统按键事件 Home 、Back 、startCall 、 endCall 、 volumeControl

--pct-appswitch <percent> app间切换

--pct-anyevent <percent>任意事件

--pct-flip <percent>键盘轻弹百分比,如点击输入框,键盘弹 起,点击输入框以外区域,键盘收回

--pct-pinchzoom <percent> 放大、缩小事件

--pct-rotation <percent> 屏幕旋转

备注:轨迹球事件、导航事件、主要导航事件这三个事件已经很少用了。

Monkey调试类命令

--dbg-no-events:初始化启动的activity,但是不产生任何事件。

--ignore-crashes:忽略崩溃

--ignore-timeouts:忽略超时

--ignore-security-exceptions:忽略安全异常

--kill-process-after-error:发生错误后直接杀掉进程

--monitor-native-crashes:跟踪本地方法的崩溃问题

--wait-dbg:知道连接了调试器才执行monkey测试

第三、Monkey实例执行
简单命令实例:

adb shell monkey -p com.netease.cloudmusic -v 10 对指定应用跑10条事件

软件测试工程师必知必会—APP稳定性测试Monkey(三)

简单命令

复杂命令实例:

该命令也是对指定应用跑10条事件,只不过我自己指定了一系列的参数(参数记不住,可以去我的山一篇文章)

软件测试工程师必知必会—APP稳定性测试Monkey(三)

复杂命令

指定保存路径:

软件测试工程师必知必会—APP稳定性测试Monkey(三)

保存路径

注意点:

1、命令不是写的越复杂越好,需要根据自己的需要来设计;

2、实际跑monkey的事件数肯定时巨大的(我这里做参考只用了10条事件做例子);

3、事件的时间间隔尽量设置在300-500ms ,这个比较贴近实际使用;

4、跑monkey时,手机上尽量不要有购物、支付之类的软件,不然你会后悔的,哈哈

结果分析

adb shell monkey -p com.netease.cloudmusic -v 10 运行结果如下图,我们对着结果图来分析。

软件测试工程师必知必会—APP稳定性测试Monkey(三)

monkey执行结果

第一个框就是我们发出的指令 adb shell monkey -p com.netease.cloudmusic -v 10 。

第二个框seed就是时间序列的种子值,可以通过 -s参数指定,count就是执行的事件多少,也是我们指定的。

第三个框AllowPackage 我们运行的包名。 这是网易云音乐的包名。

第四个框是允许跑的Category,通过-c参数指定,没有指定的话默认是
android.intent.category.LAUNCHER和android.intent.category.Monkey。

第五个框是11个事件类型的比例,没有指定的话就随机分配。如果记不住的话可以看我上一篇的文章,有详细解释。

第六个框就是执行的日志,发送的事件的记录。

第七个框就是monkey正常结束。

第四、Monkey日志分析
通过上面的描述,大伙应该有一个初步的理解了。可能有小伙伴会说了解是了解了,但是最重要的是我怎么知道这个monkey跑出了问题呢。我们一起来看戏对结果日志中的问题分析。

Monkey测试结果的异常分类:

1、crash 闪退崩溃

2、exception 异常

3、anr无响应

4、force close强制退出

过滤方法:

跑一晚上的Monkey跑出来的测试结果日志可能有几十M的文件,要一条一条看过去肯定会疯掉的。最简单直接的方法就是过滤关键字,比如我想看下测试结果里有没有崩溃,那就直接在测试结果里过滤关键字 crash ;我想看下测试结果里有没有ANR,就直接过滤下关键字ANR。

crash日志:

软件测试工程师必知必会—APP稳定性测试Monkey(四)

crash日志

ANR日志:

软件测试工程师必知必会—APP稳定性测试Monkey(四)

问题提交和回归

问题发现了,问题日志也有了,就可以直接提问题单给开发修改问题啦。这里要注意下,跑monkey的seed值,一定要记住。在问题回归的时候,这个参数要和之前的一致,才能保证monkey执行的操作和之前的一致,才有回归的意义。

欢迎大家共同探讨学习,共同进步。
————————————————
版权声明:本文为CSDN博主「好好求fly」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_33435769/article/details/116861752


http://chatgpt.dhexx.cn/article/KRfSD16p.shtml

相关文章

Clumsy弱网、丢包测试工具

一、下载clumsy安装包&#xff0c;解压后打开clumsy.exe 二、ping www.baidu.com查看是否模拟成功 三、pc端模拟丢包和网络延迟 四、APP端模拟丢包和网络延迟 1.手机连接抓包工具charles 2.打开clumsy&#xff0c;在过滤器filtering中输入outbound and ip.DstAddr 192.168.…

【弱网】clumsy的filter语法设置

clumsy 官方说明 jagt WinDivert 的语法 https://github.com/basil00/Divert/wiki/WinDivert-Documentation#7-filter-languageDivert大神们的改版 clumsy-regoutbound 发送 inbound

弱网测试工具clumsy

clumsy 能在 Windows 平台下人工造成不稳定的网络状况&#xff0c;方便你调试应用程序在极端网络状况下的表现。 简介 利用封装 Winodws Filtering Platform 的WinDivert 库, clumsy 能实时的将系统接收和发出的网络数据包拦截下来&#xff0c;人工的造成延迟&#xff0c;掉包…

使用clumsy模拟网络延迟

为何模拟网络延迟 由于最近打算做及时对战类的游戏&#xff0c;对于及时对战类的游戏&#xff0c;首先要解决的问题就是网络延迟的问题。网络延迟对于游戏的体验至关重要。那么开发一款网络游戏要怎么解决这一问题呢。想要解决网络延迟&#xff0c;首先就要模拟网络延迟。那么…

[测试]Clumsy网络模拟工具

笔者最近因为需要在局域网内模拟一个实际情况&#xff08;即存在丢包、延迟等情况&#xff09;。网上搜了很多工具&#xff0c;大多基于linux。后来好不容易在网上搜索到一款2014年出现的网络模拟工具----Clumsy。 &#xff08;参考了http://jagt.github.io/clumsy/&#xff09…

curle(curley)

Queen Elizabeth is afraid of Mary. Bess Curle wrote the story. 这两句什么意思&#xff1f; 伊丽莎白女王害怕玛丽&#xff0c;Bess Curle写(说)出了这个道理。(这里的story成为道理&#xff0c;事实意义&#xff0c;不再只是故事的意思)&#xff0c;希望对你有帮助&#x…

网络抖动工具clumsy

网络抖动工具clumsy 下载与安装 下载地址&#xff1a;https://download.csdn.net/download/Asia1752/85192646 使用 说明&#xff1a; 1、Lag(延迟)&#xff0c;把数据包缓存一段时间后再发出&#xff0c;这样能够模拟网络延迟的状况。 2、Drop(掉包)&#xff0c;随机丢弃一…

网络丢包工具clumsy

以webrtc为例&#xff0c;未开始前 设置丢包率10%后&#xff0c;丢包会增加&#xff0c;如下图&#xff1a; Lag是延迟。设置后&#xff0c;增加网络延迟

Windows下网络环境模拟工具-Clumsy

公司设备需要模拟在弱网(如&#xff1a;延迟、丢包)环境下进行数据的传输&#xff0c;网上看资料找到一款工具Clumsy( 文章出处&#xff1a;Clumsy-Windows下网络环境模拟工具_clumsy工具_Hello&#xff0c;C&#xff01;的博客-CSDN博客),安装进行模拟&#xff0c;基本可以满足…

弱网测试工具 clumsy

clumsy工具介绍 clumsy 能在 Windows 平台下人工造成不稳定的网络状况&#xff0c;方便你调试应用程序在极端网络状况下的表现。下面根据工作中遇到过的实际场景介绍一下clumsy工具的使用方法。 下载安装&#xff1a;clumsy下载链接 场景&#xff1a;测试客户端下载文件失败&…

Clumsy的使用方法

Clumsy的使用方法&#xff1a; 1、 解压clumsy-0.2-win64.zip&#xff08;下载地址&#xff1a;https://files-cdn.cnblogs.com/files/nimq/clumsy-0.2-win64.zip&#xff09;注&#xff1a;只适用于Windows 64位电脑&#xff0c;其他系统版本需要下载适配的版本 2、 打开clu…

Clumsy-Windows下网络环境模拟工具

下载页 http://jagt.github.io/clumsy/cn/download 项目的代码可以在github上获取&#xff0c;在下载页面有编译好的版本。强烈建议在使用前花点时间阅读一下文档&#xff0c;来 了解 clumsy 的功能和限制。 目前的实现中有一些难以绕过的限制和问题&#xff0c;列表如下&…

Clumsy

笔者最近因为需要在局域网内模拟一个实际情况&#xff08;即存在丢包、延迟等情况&#xff09;。网上搜了很多工具&#xff0c;大多基于linux。后来好不容易在网上搜索到一款2014年出现的网络模拟工具----Clumsy。 &#xff08;参考了http://jagt.github.io/clumsy/&#xff09…

clumsy使用简介(模拟弱网)

前提&#xff1a;使用过Fiddler弱网模式的小伙伴&#xff0c;应该都体会过&#xff0c;模拟弱网的时候&#xff0c;只是均匀的慢&#xff0c;但是实际场景可能是网络会波动的&#xff0c;而clumsy不但能设置延迟&#xff0c;还能设置节流、重发、乱序等模式&#xff0c;有助于我…

使用 clumsy 模拟极端网络状况

clumsy 能在 Windows 平台下人工造成不稳定的网络状况&#xff0c;方便你调试应用程序在极端网络状况下的表现。 简介 利用封装 Winodws Filtering Platform 的WinDivert 库, clumsy 能实时的将系统接收和发出的网络数据包拦截下来&#xff0c;人工的造成延迟&#xff0c;掉包…

clumsy使用简介

前提&#xff1a;使用过Fiddler弱网模式的小伙伴&#xff0c;应该都体会过&#xff0c;模拟弱网的时候&#xff0c;只是均匀的慢&#xff0c;但是实际场景可能是网络会波动的&#xff0c;而clumsy不但能设置延迟&#xff0c;还能设置节流、重发、乱序等模式&#xff0c;有助于我…

clumsy 弱网测试工具

clumsy工具介绍 clumsy 能在 Windows 平台下人工造成不稳定的网络状况&#xff0c;方便你调试应用程序在极端网络状况下的表现。下面根据工作中遇到过的实际场景介绍一下clumsy工具的使用方法 场景&#xff1a;测试客户端下载文件失败&#xff0c;客户端对这种异常情况做出的处…

弱网测试工具—— clumsy

clumsy 能在 Windows 平台下人工造成不稳定的网络状况&#xff0c;方便你调试应用程序在极端网络状况下的表现。 简介 利用封装 Winodws Filtering Platform 的WinDivert 库, clumsy 能实时的将系统接收和发出的网络数据包拦截下来&#xff0c;人工的造成延迟&#xff0c;掉包…

ClickOnce是什么?如何使用?

ClickOnce是一种部署方式&#xff0c;主要解决C/S软件版本更新后&#xff0c;所有客户端都要重新安装的问题。 场景&#xff1a;假如&#xff0c;你的客户有1000个&#xff0c;你的服务端更新后&#xff0c;这1000个客户都要重新安装&#xff0c;难道要员工一个一个的电话通知客…

@click与V-on:click

问题&#xff1a;为什么click是V-on&#xff1a;click的简写&#xff0c;两个效果却不同&#xff0c;click不能打印触发的事件&#xff1f; 原因&#xff1a;语法糖 链接&#xff1a;https://segmentfault.com/a/1190000010159725