微信号:gh_1cb598337696

介绍:Qtest,是360公司唯一的服务端测试团队.我们的理念是做一个会编程的测试工程师,做一个不断思考,全力保证产品质量的测试工程师.

和monkey的相处日记

2018-11-30 18:48 羽萝

点击蓝字关注这个神奇的公众号~



Happy Weekends~ 

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

01

Monkey测试简介

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

02

Monkey一般使用步骤

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


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


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


3.执行monkey命令

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

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输出日志中关键字的简单过滤实现。

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


Qtest是360旗下的专业测试团队!

是WEB平台部测试技术平台化、效率化的先锋力量!


陪伴是最长情的告白

每日为你推送最in的测试技术

识别二维码

关注我们


 
Qtest之道 更多文章 定时任务初体验 Chisel-xcode 下的调试神器 图像识别在测试中的应用 你的SDK够稳定吗 测试兵器谱の浅谈框架
猜您喜欢 编程的格局在于架构 携程React Native早期工程实践和优化 世界上第一位程序猿,原来是个女的!!! Python一句话实现秦九韶算法快速计算多项式的值 Python 面试问答 Top 25