热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

CrashMonkey4Android

项目源码已挂载到github上:CrashMonkey4Android关联项目:CrashMonkey4iOS简介CrashMonkey4Android,是一

项目

源码已挂载到github上: CrashMonkey4Android

关联项目: CrashMonkey4iOS


简介

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 Monkeyreturn ,@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-infoflag 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-appno 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]

主要关注以下属性:


  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%。


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

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


  1. 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还处于pre-release阶段,需要改善的地方还有很多,请大家多多提出建议。

目前我们已经推出了iOS和Android两个平台的Monkey,归并到一个组织58Automation(https://github.com/58Automation)中,欢迎大家fuck。


推荐阅读
  • Mac OS 升级到11.2.2 Eclipse打不开了,报错Failed to create the Java Virtual Machine
    本文介绍了在Mac OS升级到11.2.2版本后,使用Eclipse打开时出现报错Failed to create the Java Virtual Machine的问题,并提供了解决方法。 ... [详细]
  • (三)多表代码生成的实现方法
    本文介绍了一种实现多表代码生成的方法,使用了java代码和org.jeecg框架中的相关类和接口。通过设置主表配置,可以生成父子表的数据模型。 ... [详细]
  • 使用在线工具jsonschema2pojo根据json生成java对象
    本文介绍了使用在线工具jsonschema2pojo根据json生成java对象的方法。通过该工具,用户只需将json字符串复制到输入框中,即可自动将其转换成java对象。该工具还能解析列表式的json数据,并将嵌套在内层的对象也解析出来。本文以请求github的api为例,展示了使用该工具的步骤和效果。 ... [详细]
  • intellij idea的安装与使用(保姆级教程)
    intellijidea的安装与使用(保姆级教程)IntelliJ在业界被公认为最好的java开发工具,尤其在智能代码助手、代码自动提示、重构、JavaEE支持、各类版本工具(gi ... [详细]
  • VScode格式化文档换行或不换行的设置方法
    本文介绍了在VScode中设置格式化文档换行或不换行的方法,包括使用插件和修改settings.json文件的内容。详细步骤为:找到settings.json文件,将其中的代码替换为指定的代码。 ... [详细]
  • Python实现变声器功能(萝莉音御姐音)的方法及步骤
    本文介绍了使用Python实现变声器功能(萝莉音御姐音)的方法及步骤。首先登录百度AL开发平台,选择语音合成,创建应用并填写应用信息,获取Appid、API Key和Secret Key。然后安装pythonsdk,可以通过pip install baidu-aip或python setup.py install进行安装。最后,书写代码实现变声器功能,使用AipSpeech库进行语音合成,可以设置音量等参数。 ... [详细]
  • 目录实现效果:实现环境实现方法一:基本思路主要代码JavaScript代码总结方法二主要代码总结方法三基本思路主要代码JavaScriptHTML总结实 ... [详细]
  • 本文介绍了如何在给定的有序字符序列中插入新字符,并保持序列的有序性。通过示例代码演示了插入过程,以及插入后的字符序列。 ... [详细]
  • 1,关于死锁的理解死锁,我们可以简单的理解为是两个线程同时使用同一资源,两个线程又得不到相应的资源而造成永无相互等待的情况。 2,模拟死锁背景介绍:我们创建一个朋友 ... [详细]
  • 本文介绍了计算机网络的定义和通信流程,包括客户端编译文件、二进制转换、三层路由设备等。同时,还介绍了计算机网络中常用的关键词,如MAC地址和IP地址。 ... [详细]
  • 本文讨论了在openwrt-17.01版本中,mt7628设备上初始化启动时eth0的mac地址总是随机生成的问题。每次随机生成的eth0的mac地址都会写到/sys/class/net/eth0/address目录下,而openwrt-17.01原版的SDK会根据随机生成的eth0的mac地址再生成eth0.1、eth0.2等,生成后的mac地址会保存在/etc/config/network下。 ... [详细]
  • 如何搭建Java开发环境并开发WinCE项目
    本文介绍了如何搭建Java开发环境并开发WinCE项目,包括搭建开发环境的步骤和获取SDK的几种方式。同时还解答了一些关于WinCE开发的常见问题。通过阅读本文,您将了解如何使用Java进行嵌入式开发,并能够顺利开发WinCE应用程序。 ... [详细]
  • 先看官方文档TheJavaTutorialshavebeenwrittenforJDK8.Examplesandpracticesdescribedinthispagedontta ... [详细]
  • 数组的排序:数组本身有Arrays类中的sort()方法,这里写几种常见的排序方法。(1)冒泡排序法publicstaticvoidmain(String[]args ... [详细]
  • 本文讨论了在VMWARE5.1的虚拟服务器Windows Server 2008R2上安装oracle 10g客户端时出现的问题,并提供了解决方法。错误日志显示了异常访问违例,通过分析日志中的问题帧,找到了解决问题的线索。文章详细介绍了解决方法,帮助读者顺利安装oracle 10g客户端。 ... [详细]
author-avatar
hitwill
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有