CrashMonkey4Android 的安装及使用

简介

CrashMonkey4Android,是一个依靠Cts框架,对原生Monkey进行改造后的产物,拥有以下新增功能:

  1. 保存每一步的截图
  2. 保存logcat
  3. 保存每一个Monkey事件的信息
  4. 分析Crash
  5. Html报告
  6. 开源,你想做的,你能做的,只要你行,你就可以做
  7. 支持多设备

环境要求

  1. 安装JDK1.6+并配置环境变量
  2. 安装SDK并配置环境变量

如何使用

下面以Mac环境为例

第一步

同步CrashMonkey4Androd_bin 项目来获取可执行文件,或者直接下载ZIP包,解压。

第二步

解压后,项目目录结构如下:

找到tools目录下的cts-tradefed文件,双击会出现终端窗口:

(可以看出来我们支持多设备)

第三步

在终端输入命令 : run cts --plan Monkey 按return ,@Monkey开跑了。

第四步

参看报告,在tools的统计目录repository下有2个目录很重要 
1. logs:保存测试过程中的截图和log信息 
2. results: 保存测试报告

首先去results下打开报告,一个文件夹代表一次测试,我们刚才有2台设备,所以生成了2个报告,进入文件下找到index.html,打开:

有crash版本:

 
index.html为结果总结页面,上面显示了测试设备的硬件信息(Hardware),被测应用信息(Application),测试周期(Span),结果(Results)。下方有一个表格中result显示了测试所花时间(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]7

主要关注以下属性:

  1. p :测试app的包名.
  2. a :测试app的主activity,如果正确设置上面两项,Monkey会针对上面-p指定的应用测试,一直保持在该应用界面.
  3. throttle:2个Monkey事件之间的间隔,默认为300毫秒.
  4. pct-tap:点击事件的百分比,默认为%25.
  5. pct-motion:多点滑动事件百分比,默认为%0,(暂时还没实现).
  6. pct-nav: 导航事件的百分比(导航事件由方向输入设备的上下左右按键所触发的事件组成),默认为%15.
  7. pct-majornav:主要导航事件的百分比。(这些导航事件通常会导致UI界面中的动作事件,如5-way键盘的中间键,回退按键、菜单按键),默认为%15.
  8. pct-syskeys:系统事件百分比。(这些按键通常由系统保留使用,如Home、Back、Start Call、End Call、音量调节),默认为%15.
  9. pct-drag:拖拽事件的百分比,默认为%30。

    目前只实现了5/6,但是上面的数字相加一定要为100%。

  10. reboot : 重启机器,默认为false,不重启。如果想要重启的话,直接在命令行附上该参数,不用在后面加true,因为boolen类型的设置方式和其他不一样。
  11. device-unlock:解锁手机,默认为false,如果收集重启的话,建议将该属性设置为true。解锁原理就是利用appium自带的apk来解锁的。
  12. skip-device-info:是否跳过设备信息获取,默认为false。因为我们的报告中用到了设备信息,所以建议不要将该属性设置为true。
  13. app-path:如果应用需要从本地安装,用该属性设置app路径,会自动安装app到收集端。
  14. wifiSsdk: wifi的用户名
  15. wifiPsk:wifi的密码

    因为该工具支持自动连接wifi,所以你的app需要在wifi情况下工作,请设置这两个属性,它会自动检测断网并重连

  16. skip-uninstall-app:是否跳过卸载app的阶段,因为如果使用本地app安装后,有时想卸载应用,可以设置该属性为false。默认是不卸载。
  17. monkey-log-size:如果针对某一个应用测试,该工具为该app单独收集log,这里可以设置log可以最大到多少B。
  18. bugreport:是否保存bugreport信息,默认为false。如果研发想要bugreport信息,将该属性设置为true。
  19. tracefile:是否保存trace.txt文件,该文件位于/data/anr/trace.txt。一般发生crash的时候会用到该文件分析问题。

CrashMonkey4Android 的安装及使用的更多相关文章

  1. docker——容器安装tomcat

    写在前面: 继续docker的学习,学习了docker的基本常用命令之后,我在docker上安装jdk,tomcat两个基本的java web工具,这里对操作流程记录一下. 软件准备: 1.jdk-7 ...

  2. 网络原因导致 npm 软件包 node-sass / gulp-sass 安装失败的处理办法

    如果你正在构建一个基于 gulp 的前端自动化开发环境,那么极有可能会用到 gulp-sass ,由于网络原因你可能会安装失败,因为安装过程中部分细节会到亚马逊云服务器上获取文件.本文主要讨论在不变更 ...

  3. Sublime Text3安装JsHint

    介绍 Sublime Text3使用jshint依赖Nodejs,SublimeLinter和Sublimelinter-jshint. NodeJs的安装省略. 安装SublimeLinter Su ...

  4. Fabio 安装和简单使用

    Fabio(Go 语言):https://github.com/eBay/fabio Fabio 是一个快速.现代.zero-conf 负载均衡 HTTP(S) 路由器,用于部署 Consul 管理的 ...

  5. gentoo 安装

    加载完光驱后 1进行ping命令查看网络是否通畅 2设置硬盘的标识为GPT(主要用于64位且启动模式为UEFI,还有一个是MBR,主要用于32位且启动模式为bois) parted -a optima ...

  6. Linux平台 Oracle 10gR2(10.2.0.5)RAC安装 Part3:db安装和升级

    Linux平台 Oracle 10gR2(10.2.0.5)RAC安装 Part3:db安装和升级 环境:OEL 5.7 + Oracle 10.2.0.5 RAC 5.安装Database软件 5. ...

  7. Linux平台 Oracle 10gR2(10.2.0.5)RAC安装 Part1:准备工作

    Linux平台 Oracle 10gR2(10.2.0.5)RAC安装 Part1:准备工作 环境:OEL 5.7 + Oracle 10.2.0.5 RAC 1.实施前准备工作 1.1 服务器安装操 ...

  8. 【原】nodejs全局安装和本地安装的区别

    来微信支付有2年多了,从2年前的互联网模式转变为O2O模式,主要的场景是跟线下的商户去打交道,不像以往的互联网模式,有产品经理提需求,我们帮忙去解决问题. 转型后是这样的,团队成员更多需要去寻找业务的 ...

  9. tLinux 2.2下安装Mono 4.8

    Tlinux2.2发行版基于CentOS 7.2.1511研发而成,内核版本与Tlinux2.0发行版保持完全一致,更加稳定,并保持对Tlinux2.0的完全兼容.Mono 4版本要求CentOS 7 ...

随机推荐

  1. Android的UI调优

    对于一个App的UI而言,在流畅性上的改进目标其实就是降低屏幕绘制的延迟,创建流畅和稳定的帧率以避免卡顿. 在理想情况下,全部的测量.布局和绘制的时间最好在16ms以内,这样才能保证屏幕运行的顺畅性. ...

  2. sharepoint rest api 创建文档库 文件夹

    function createFolder() { var requestHeaders = { "Accept": "application/json;odata=ve ...

  3. C++数组概述

    C++数组概述 基本概念 1. 数组是固定大小的一种复合类型 因为数组是固定大小,所以在编译期间就决定了基大小 数组的内存是连续(无论是一维数组还是多维数组) 2. 数组的特性 数组之间不允许拷贝和赋 ...

  4. MySQL加密和解密案例

    define("ENCRYPT",'2998a15c0cd853edad7');//密钥key 被存储的数据库的字段设置成blob格式(二进制) //AES_ENCRYPT 加密 ...

  5. JS组件系列——自己动手扩展BootstrapTable的 冻结列 功能:彻底解决高度问题

    前言:一年前,博主分享过一篇关于bootstrapTable组件冻结列的解决方案  JS组件系列——Bootstrap Table 冻结列功能IE浏览器兼容性问题解决方案 ,通过该篇,确实可以实现bo ...

  6. 6位密码框js

    !DOCTYPE html><html> <head> <meta http-equiv="Content-Type" content=&quo ...

  7. 高级Java程序员的技术进阶之路

      据不完全统计,截至目前(2017.07)为止,中国Java程序员的数量已经超过了100万.而且,随着IT培训业的持续发展和大量的应届毕业生进入社会,Java程序员面临的竞争压力越来越大.那么,作为 ...

  8. Linux程序设计之shell程序设计

    看了<linux程序设计(第4版)>(作者:Neil Matthew ,Richard Stones ,陈建 ,宋健建译).做个笔记,以备后面查看. 首先,清楚几个概念. shell编程属 ...

  9. (转载)java基础:关于java流与文件操作

    原文摘自: http://www.blogjava.net/haizhige/archive/2008/08/03/219668.html 1.描述:流是字节数据或字符数据序列. Java采用输入流对 ...

  10. TortoiseGit上传项目到github方法(超简单)

    Github是咱广大开发者用的非常多的项目版本管理网站,项目托管可以是私人的(private)或者公开的(public),私人的收费,一个月7美金.咱这里就只说我们个人使用的,一般都是代码对外开放的: ...