和monkey的相处日记


**Happy Weekends~ **

随着测试产品功能的增加,产品的体验优化,性能提升等问题亟待解决。Monkey作为衡量软件稳定性指标的工具,相信大家也都十分熟悉。在此做一个简单的梳理,如有疏漏之处,望及时指出

01

Monkey测试简介

Monkey是Android中的一个可以运行在模拟器或者实际设备中的命令行工具。通过向系统发送伪随机的用户事件流(如触摸屏点击,拖动,缩放等操作),并记录被测应用的运行状态来对应用进行压力测试。其优点是它可以快速有效地测试软件稳定性和健壮性,并且可以脱离PC运行;缺点自然是不能自定义设置事件流的权重,测试随机性较大。

02

Monkey一般使用步骤

1.确定设备(模拟器或真机)是否连接成功。Monkey命令通过安卓调试桥(adb)来连接设备并运行,使用前需要通过adb devices确定设备的连接性。adb服务需要搭建Android SDK环境并设置环境变量,此处一带而过。


2.确定待测应用的包名。包名是应用的标识,打开待测应用后,我们可以通过如下命令获取应用包名。

image
image


如上图,选框中内容即为当前打开应用的包名。Windows环境下adb中过滤关键字命令用“findstr“替换”grep”即可。


3.执行monkey命令

image

monkey测试时,其运行日志重定向到我们自定义的ex_path.txt文件中。相同的seed值产生的事件序列也相同,如果测试过程中出现崩溃,完全可以用相同的seed值进行复现。为了防止测试过程中第三方apk影响测试结果,可以在电脑上建立黑名单文件blacklist.txt,将要屏蔽的应用包名写进去,对于测试指定应用的场景,也可以通过monkey白名单来实现。

image

03

Monkey测试日志分析

在进行monkey测试时,我们可以通过adb logcat命令记录当前手机上的应用运行日志,以便如有问题可以更快地定位。 伪随机事件流执行完毕后,可以对ex_path.txt文件进行简要的分析或者问题的重现

1)搜索关键字。如果日志中存在”ANR || CRASH || Exception”关键字,说明测试过程中应用出现了无响应||崩溃||其他异常问题。


2)ANR:应用程序无响应。出现此类问题时,我们可使用adb pull命令从设备的/data/anr目录中导出名为traces.txt的文件进行问题定位和分析


3)CRASH:出现CRASH问题时可以结合logcat的log文件一起分析。毕竟logcat的日志文件会更加详细。


4)在Monkey的输出日志中经常可见的是Switch字段。该字段出现在activity切换的时候,如果出现了Exception或者CRASH问题,我们都可以用Switch辅助定位问题出现在哪个activity中。


如下为通过Python对Monkey输出日志中关键字的简单过滤实现。
image

Monkey测试在一定程度上可以帮助我们在产品上线前暴露一些潜在的问题。其简单的实现可以通过在服务器上设置定时任务,每隔固定时间自动进行monkey测试。后续添加测试日志的简单过滤分析,错误日志的归档可以通过邮件提醒发送给相关同学。对于我们测试产品的稳定性来说,还是相当有帮助的。

Q


本文转载自 360质量效能