源码已挂载到 github 上: CrashMonkey4Android
关联项目: CrashMonkey4iOS
CrashMonkey4Android,是一个依靠 Cts 框架,对原生 Monkey 进行改造后的产物,拥有以下新增功能:
下面以 Mac 环境为例
同步CrashMonkey4Androd_bin 项目来获取可执行文件,或者直接下载 ZIP 包,解压。
解压后,项目目录结构如下:
找到 tools 目录下的 cts-tradefed 文件,双击会出现终端窗口:
(可以看出来我们支持多设备)
在终端输入命令 : run cts --plan Monkey
按return
,@Monkey开跑了。
参看报告,在 tools 的同级目录 repository 下有 2 个目录很重要
首先去 results 下打开报告,一个文件夹代表一次测试,我们刚才有 2 台设备,所以生成了 2 个报告,进入文件下找到 index.html,打开:
有 crash 版本:
index.html
为结果总结页面,上面显示了测试设备的硬件信息 (Hardware),被测应用信息 (Application),测试周期 (Span),结果 (Results)。下方有一个表格中显示了测试所花时间 (Duration),Monkey 的事件数 (20)。点击 result 一览的链接进入详细报告:
无 crash 版本:
有 crash 版本
详细页面中显示了最后 50 步的操作截图 (少于 50 的全部列出),截图上绘制了操作的类型,还可以点击图片查看该步操作的相关 logcat 信息。还包括 3 按钮 (crash log 按钮会在发生 crash 的时候显示),点击system log
可以看到系统 log:
点击uiauto trace
按钮会显示所有步骤的信息:
如果有crash log
按钮,会显示 crash 的简短信息,目前只是简单的从 logcat 分析 ANR 和 Java Crash 信息,后续会详细研究一下 crash 知识:
我们可以通过在命令行下输入run cts --help-all
获取所有的可设置参数:
test options:
--p package of test app
--a main activity of test app
--v monkey event count Default: 20.
--throttle The delay time between the events Default: 300.
--pct-tap percentage of tap event Default: 25.0.
--pct-motion percentage of motion event Default: 0.0.
--pct-nav percentage of navigation event Default: 15.0.
--pct-majornav percentage of major navigation event Default: 15.0.
--pct-syskeys percentage of system key event Default: 15.0.
--pct-drag percentage of drag evnet Default: 30.0.
--logcat-size The max number of logcat data in bytes to capture when --logcat-on-failure is on. Should be an amount that can comfortably fit in memory. Default: 20480.
--plan the test plan to run.
--[no-]reboot Do not reboot device after running some amount of tests. Default behavior is to reboot. Default: false.
--[no-]skip-device-info
flag to control whether to collect info from device. Providing this flag will speed up test execution for short test runs but will result in required data being omitted from the test report. Default: false.
--[no-]device-unlock unlock device Default: false.
--app-path local app's path
--wifiSsdk wifi username
--wifiPsk wifi password
--[no-]skip-uninstall-app
no uninstall test app Default: true.
--monkey-log-size monkey log size Default: 10485760.
-b, --[no-]bugreport take a bugreport after each failed test. Warning: can potentially use a lot of disk space. Default: false.
--[no-]tracefile get trace file ,in /data/anr/trace.txt Default: false.
'stdout' logger options:
--log-level minimum log level to display. Default: INFO. Valid values: [VERBOSE, DEBUG, INFO, WARN, ERROR, ASSERT]
主要关注以下属性:
目前只实现了 5/6,但是上面的数字相加一定要为 100%。
因为该工具支持自动连接 wifi,所以你的 app 需要在 wifi 情况下工作,请设置这两个属性,它会自动检测断网并重连
目前 CrashMonkey4Android 还处于 pre-release 阶段,需要改善的地方还有很多,请大家多多提出建议。
目前我们已经推出了 iOS 和 Android 两个平台的 Monkey,归并到一个组织58Automation中,
欢迎大家 fuck,有问题请在 github 上提。