代码改变世界

安卓移动端monkey自动化测试

2024-04-24 15:59  加个小鸡腿  阅读(243)  评论(0编辑  收藏  举报

monkey是安卓平台的一个命令行工具,用来对应用程序进行随机的自动化测试,主要是用来检测程序的稳定性、发现崩溃crash和程序无反应(ANR)的问题,由于monkey发的是随机事件,所以可以使用monkey来对应用程序做压力测试,验证程序的可靠性。

前期步骤:需要用usb将电脑和安卓设备连接到一起,打开安卓设备上的开发者模式中的usb调试,另外电脑上需要安装adb工具

查看是否安卓设备是否连接成功:

adb devices可以查看到已经连接上来的安卓设备

List of devices attached
2c7c688a        device

如果不知道要则是的应用程序的包名,可以打开应用程序后,使用命令adb shell dumpsys window w  | findstr name=来查看包名,如下,我打开了平板上的贝乐虎,包名输出:

      mSurface=Surface(name=RoundCorner)
      mSurface=Surface(name=RoundCorner)
      mSurface=Surface(name=NavigationBar)
      mSurface=Surface(name=StatusBar)
      mSurface=Surface(name=com.ubestkid.beilehu.android/com.ubestkid.foundation.activity.home.PadSongHomeActivity)
      mSurface=Surface(name=com.android.systemui.ImageWallpaper)
    name=pip_input_consumer

根据上面加黑的看出包名就是:com.ubestkid.beilehu.android

简单的monkey测试:adb shell monkey -p com.ubestkid.beilehu.android  -v 500 > monkey1.txt  表示向包名是 com.ubestkid.beilehu.android的应用发500个随机事件。

启动Monkey测试:
adb shell monkey [options] <event-count>
<event-count>:指定Monkey要执行的事件数量。
[options]:一系列可选参数,用于定制测试行为。
常用Monkey命令参数:
-p <package-name>:指定要测试的应用包名。
-v 或 -v -v 或 -v -v -v:增加日志的详细程度,可以多次使用以增加详细级别。
--throttle <milliseconds>:指定事件间隔时间,单位是毫秒。
--ignore-crashes:即使遇到崩溃也不停止测试。
--ignore-timeouts:忽略超时异常,继续测试。
--ignore-security-exceptions:忽略安全异常。
--kill-process-after-error:在遇到错误后结束测试并杀死进程。
-s <seed>:指定随机数生成器的种子值,使得测试可重复。

 

使用详细举例:

adb shell monkey -p com.ubestkid.beilehu.android --throttle 800 -v -v -v 10000 > monkey.log & adb shell logcat -v time > logcat.log & 

--throttle 800 表示前后两个事件间隔是800ms,不会一下子就跑完了,事件可以按照自己的需要调节

10000是随机事件的数目,如果上面间隔比较大的话,会执行比较久

同时还会执行adb logcat抓日志  -v time表示的是日志中会加上时间记录

 

这个日志介绍了很多事件分布百分比:https://blog.csdn.net/bulucc/article/details/130814316

执行monkey后需要进行日志分析:

  • 执行完Monkey测试后,日志会被保存到指定文件或默认位置(如手机的/sdcard/monkey.log)。
  • 通过日志搜索关键词如“ANR”、“CRASH”或“Exception”来定位问题。
  • 使用文本编辑器(如Notepad++)打开日志文件,便于搜索和分析