iOS Monkey工具初探

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/rigel_xu/article/details/48372245

因项目准备对外推广,应用的性能及稳定性成功重点关注对象。一方面针对 Bugly 收集到的 Crash 信息逐个分析;另一方面希望加强用户随机性 Crash 的分析,这就要使用 Monkey Test

找到了三个 iOS Monkey Test 的工具:
UI AutoMonkey
CrashMonkey
CrashMonkey4IOS

CrashMonky 和 CrashMonkey4iOS使用在命令行启动的方式,需要使用目标设备的 DeviceID,之前在《Calabash 实战问题总结》一文中提到的方法查看。

最终我选择了CrashMonkey4IOS,主要考虑二个因素:一是日志系统完善,可以纪录行为轨迹;二是这个工具目前作者还在维护,其它两个GitHub 上已经很久没有更新了。

UI AutoMonkey

UI AutoMonkey是一个 JS 文件,封装了所有的操作。需要使用 instruments 来导入UIAutoMonkey.js,写 JS 脚本来调用。使用起来不方便。

CrashMonkey

CrashMonkey是在 UI AutoMonkey 的基础上做了封装,按 Git 上的简介就可以跑起来。文档说不支持真机,用真机尝试了下,也可以跑起来。

优点:

  • 无需修改工程
  • 可以定义执行执行时间
  • 结果截图和操作历史以Html方式呈现
  • 日志和 Crash Report 也可以记录
  • CI 集成方便

不足之处:

  • 经常锁屏,然后就很长时间在锁屏界面操作了;
  • 应用退到后台后,无法再进入应用;
  • 作者已不维护;

CrashMonkey4IOS

CrashMonkey4IOS 是在 CrashMonkey 的基础上做了优化,功能如下:

  • 支持真机测试、模拟器测试
  • 支持收集系统日志(Systemlog)、崩溃日志(Crashlog)、instrument行为日志
  • 支持测试报告截图,绘制行为轨迹
  • 支持测试设备信息收集
  • 使用最新版的UIAutoMonkey,加入UI Holes与Application Not Repsonding “ANR”)的处理,添加custom.js作为入口脚本.
  • 加入tuneup依赖
  • 修改UIAutoMonkey.js中截图策略,为每个Event Action进行截图
  • 支持测试执行过程中App进入后台,自动恢复(测试不会block)

CrashMoney4iOS的日志,放在命令执行的目录,会生成一个smart_monkey_result 的目录。建议在执行命令前,先 cd 到一个专门的目录,不然每次生成的日志都放到用户当前目录了。

安装 CrashMonkey4iOS 的依赖imagemagick时会出现一些问题,安装失败的问题,可以使用如下方式解决:

curl -O ftp://ftp.imagemagick.org/pub/ImageMagick/ImageMagick.tar.gz
tar -zxf ImageMagick.tar.gz
cd ImageMagick-*/
./configure --prefix=/usr/local
make
sudo make install

另外如果是真机,执行的时候可能会遇到类似如下错误:

WebKit Threading Violation / UIAScriptAgentSignaledException running in real device 

这时,请打开设置->开发者->Enable UI Automation

猜你喜欢

转载自blog.csdn.net/rigel_xu/article/details/48372245