和monkey的相处日记
  X7HGjGJ7MG9G 2023年11月02日 49 0

 

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


01


Monkey测试简介


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


02


Monkey一般使用步骤


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


<br style="box-sizing: border-box;"/>


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


![image|565x45](upload://7Nljudr0wDJAZspigy3mkp8DHZL.png)

![image|549x62](upload://iSTht00f6A2nuQDV1ekwi0E66j8.png)


<br style="box-sizing: border-box;"/>


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


<br style="box-sizing: border-box;"/>


3.执行monkey命令


![image|562x74](upload://rLVNhP0lQU9kIH3iXghAxBkhkQx.png)



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


![image|568x29](upload://qUOSxiEhMoQx8CuaZfFfiRH32t5.png)



03


Monkey测试日志分析


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


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


<br style="box-sizing: border-box;"/>


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


<br style="box-sizing: border-box;"/>


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


<br style="box-sizing: border-box;"/>


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


<br style="box-sizing: border-box;"/>


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

![image|782x567](upload://7GQzplbiRH83DCiIRLAw0umgkxl.jpeg)



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

【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月08日 0

暂无评论

推荐阅读
X7HGjGJ7MG9G
最新推荐 更多