Giter VIP home page Giter VIP logo

crashmonkey4android's Introduction

简介

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

  1. 保存每一步的截图.
  2. 保存logcat.
  3. 保存每一个Monkey事件的信息.
  4. 分析Crash.
  5. Html报告.
  6. 支持多设备.

环境要求

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

如何使用

安装-MAC版.

如何进行二次开发.

参数配置

我们提供了很多可供配置的参数.

查看参数

我们可以通过在命令行下输入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]

  

主要属性:

  1. p :测试app的包名.
  2. a :测试app的主activity,如果正确设置上面两项,Monkey会针对上面-p指定的应用测试,一直保持在该应用界面. 注意:-a和-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.默认是不卸载.
  2. monkey-log-size:如果针对某一个应用测试,该工具为该app单独收集log,这里可以设置log可以最大到多少B.
  3. bugreport:是否保存bugreport信息,默认为false.如果研发想要bugreport信息,将该属性设置为true.
  4. tracefile:是否保存trace.txt文件,该文件位于/data/anr/trace.txt.一般发生crash的时候会用到该文件分析问题.

总结

目前CrashMonkey4Android还处于pre-release阶段,需要改善的地方还有很多,请大家多多提出建议.

目前我们已经推出了iOS和Android两个平台的Monkey,归并到一个组织58Automation中,欢迎大家fork,有问题请提Issue.

crashmonkey4android's People

Contributors

doctorq avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

crashmonkey4android's Issues

请教CrashMonkey4Android中 截图问题

最近在github上看过您写的CrashMonkey4Android相关的文章,还有csdn上你写 cts 专题,收获颇多!!!

我最近也在做关于monkey的二次开发工作,比如在MonkeyMotionEvent事件中,修改injectEvent()代码,增加截图功能(通过 screencap –p进行截图),打成jar包放再android手机运行的,但是最后运行monkey时,截的图都很模糊,分辨率很低,百思不得其解

想请教下你,CrashMonkey4Android是通过什么方式截图的?

恳请您一定要回复啊,这个问题困扰我很久啦!!!

monkey执行了一段时间后,socket连接异常

Error sending drag start event
java.net.SocketException: Broken pipe
at java.net.SocketOutputStream.socketWrite0(Native Method)
at java.net.SocketOutputStream.socketWrite(SocketOutputStream.java:109)
at java.net.SocketOutputStream.write(SocketOutputStream.java:153)
at sun.nio.cs.StreamEncoder.writeBytes(StreamEncoder.java:221)
at sun.nio.cs.StreamEncoder.implWrite(StreamEncoder.java:282)
at sun.nio.cs.StreamEncoder.write(StreamEncoder.java:125)
at java.io.OutputStreamWriter.write(OutputStreamWriter.java:207)
at java.io.BufferedWriter.flushBuffer(BufferedWriter.java:129)
at java.io.BufferedWriter.write(BufferedWriter.java:230)
at java.io.Writer.write(Writer.java:157)
at com.android.chimpchat.ChimpManager.sendMonkeyEventAndGetResponse(ChimpManager.java:186)
at com.android.chimpchat.ChimpManager.sendMonkeyEvent(ChimpManager.java:235)
at com.android.chimpchat.ChimpManager.touchMove(ChimpManager.java:112)
at com.android.chimpchat.adb.AdbChimpDevice$2.step(AdbChimpDevice.java:560)
at com.android.chimpchat.adb.LinearInterpolator.interpolate(LinearInterpolator.java:123)
at com.android.chimpchat.adb.AdbChimpDevice.drag(AdbChimpDevice.java:556)
at com.android.cts.tradefed.testtype.monkey.MonkeyDragEvent.fireEvent(MonkeyDragEvent.java:39)
at com.android.cts.tradefed.testtype.monkey.Monkey.nextRandomEvent(Monkey.java:41)
at com.android.cts.tradefed.testtype.MonkeyTest.run(MonkeyTest.java:152)
at com.android.tradefed.invoker.TestInvocation.runTests(TestInvocation.java:590)
at com.android.tradefed.invoker.TestInvocation.prepareAndRun(TestInvocation.java:400)
at com.android.tradefed.invoker.TestInvocation.performInvocation(TestInvocation.java:332)
at com.android.tradefed.invoker.TestInvocation.invoke(TestInvocation.java:133)
at com.android.tradefed.command.CommandScheduler$InvocationThread.run(CommandScheduler.java:362)

mac环境debug时出现的问题

你好,我mac环境debug报这个错误,请问下怎么解决
08-31 15:43:21 I/CommandScheduler: Enter isShutdown...
Using commandline arguments as starting command: [run, cts, --plan, Monkey, --p, com.pingan.papd, --a, com.pingan.papd.ui.activities.JKLogoActivity]
08-31 15:43:21 I/ConfigurationFactory: Loading configuration 'cts'
08-31 15:43:21 I/DeviceStateMonitor: Waiting 30000 ms for device c410c01 shell to be responsive
08-31 15:43:21 I/DeviceManager: Detected new device c410c01
08-31 15:43:21 I/ManagedDeviceListener: Device connected c410c01
08-31 15:43:22 I/CommandScheduler: cmd is not null...
08-31 15:43:22 I/DeviceManager: Allocated device c410c01
08-31 15:43:22 I/CommandScheduler: device: com.android.tradefed.device.TestDevice@52fb6f03
08-31 15:43:22 I/CommandScheduler: device is not null...
08-31 15:43:22 I/CommandScheduler: cmd is not loop mode...
08-31 15:43:22 I/CommandScheduler: Enter isShutdown...
08-31 15:43:22 I/TestInvocation: setup: true tearDown: true
08-31 15:43:22 I/TestInvocation: Starting invocation for 'cts' on build '4.4_r0' on device c410c01
08-31 15:43:22 I/MonkeyTest: Monkey Test for device c410c01
08-31 15:43:22 I/MonkeyTest: Attempting to launch com.pingan.papd on c410c01 using command [am start com.pingan.papd/com.pingan.papd.ui.activities.JKLogoActivity]
08-31 15:43:22 I/MonkeyTest: Open monkey logcat for c410c01 .
java.io.IOException: Cannot run program "dumpsys": error=2, No such file or directory
at java.lang.ProcessBuilder.start(ProcessBuilder.java:1048)
at java.lang.Runtime.exec(Runtime.java:620)
at java.lang.Runtime.exec(Runtime.java:450)
at java.lang.Runtime.exec(Runtime.java:347)
at com.android.cts.tradefed.testtype.monkey.Monkey.getDeviceWidthAndHeight(Monkey.java:144)
at com.android.cts.tradefed.testtype.monkey.Monkey.init(Monkey.java:119)
at com.android.cts.tradefed.testtype.monkey.Monkey.(Monkey.java:42)
at com.android.cts.tradefed.testtype.MonkeyTest.run(MonkeyTest.java:171)
at com.android.tradefed.invoker.TestInvocation.runTests(TestInvocation.java:628)
at com.android.tradefed.invoker.TestInvocation.prepareAndRun(TestInvocation.java:433)
at com.android.tradefed.invoker.TestInvocation.performInvocation(TestInvocation.java:360)
at com.android.tradefed.invoker.TestInvocation.invoke(TestInvocation.java:142)
at com.android.tradefed.command.CommandScheduler$InvocationThread.run(CommandScheduler.java:364)
Caused by: java.io.IOException: error=2, No such file or directory
at java.lang.UNIXProcess.forkAndExec(Native Method)
at java.lang.UNIXProcess.(UNIXProcess.java:247)
at java.lang.ProcessImpl.start(ProcessImpl.java:134)
at java.lang.ProcessBuilder.start(ProcessBuilder.java:1029)
... 12 more
java.net.SocketException: Broken pipe (Write failed)
at java.net.SocketOutputStream.socketWrite0(Native Method)
at java.net.SocketOutputStream.socketWrite(SocketOutputStream.java:111)
at java.net.SocketOutputStream.write(SocketOutputStream.java:155)
at sun.nio.cs.StreamEncoder.writeBytes(StreamEncoder.java:221)
at sun.nio.cs.StreamEncoder.implWrite(StreamEncoder.java:282)
at sun.nio.cs.StreamEncoder.write(StreamEncoder.java:125)
at java.io.OutputStreamWriter.write(OutputStreamWriter.java:207)
at java.io.BufferedWriter.flushBuffer(BufferedWriter.java:129)

执行cts-tradefed.bat,cmd里显示如下,请问我的系统是64位,这个可执行文件兼容64位么?

Exception in thread "main" java.lang.UnsatisfiedLinkError: C:\Users\zhoudonbin\A
ppData\Local\Temp\jline_0_9_9.dll: Can't load IA 32-bit .dll on a AMD 64-bit pla
tform
at java.lang.ClassLoader$NativeLibrary.load(Native Method)
at java.lang.ClassLoader.loadLibrary1(ClassLoader.java:1965)
at java.lang.ClassLoader.loadLibrary0(ClassLoader.java:1890)
at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1851)
at java.lang.Runtime.load0(Runtime.java:795)
at java.lang.System.load(System.java:1062)
at jline.WindowsTerminal.loadLibrary(WindowsTerminal.java:215)
at jline.WindowsTerminal.initializeTerminal(WindowsTerminal.java:144)
at jline.Terminal.setupTerminal(Terminal.java:69)
at jline.Terminal.getTerminal(Terminal.java:26)
at jline.ConsoleReader.(ConsoleReader.java:151)
at jline.ConsoleReader.(ConsoleReader.java:146)
at jline.ConsoleReader.(ConsoleReader.java:135)
at com.android.tradefed.command.Console.getReader(Console.java:186)
at com.android.tradefed.command.Console.(Console.java:198)
at com.android.cts.tradefed.command.CtsConsole.(CtsConsole.java:52
)
at com.android.cts.tradefed.command.CtsConsole.main(CtsConsole.java:249)

请按任意键继续. . .

为什么每次都跑2分钟不到就停下来了

07-25 13:39:39 I/MonkeyActivityListener: MonkeyActivityListener stop.....
cts-tf > 七月 25, 2016 1:39:41 下午 com.android.chimpchat.ChimpManager sendMonkeyEventAndGetResponse
信息: Monkey Command: quit.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.