0.26
No commit activity in last 3 years
No release in over 3 years
There's a lot of open issues
iOS Monkey test tool base on UIAutomation.
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
 Dependencies

Development

> 1.0.0
~> 1.8.4
>= 0
~> 3.12
~> 2.8.0

Runtime

>= 2.7.0
>= 1.7.0
 Project Readme

CrashMonkey4IOS

iOS Monkey Test Tool.

简要说明:

  1. 支持真机测试、模拟器测试
  2. 支持收集系统日志(Systemlog)崩溃日志(Crashlog)instrument行为日志
  3. 支持测试报告截图,绘制行为轨迹
  4. 支持测试设备信息收集
  5. 使用最新版的[UIAutoMonkey][uiatmonkey],加入UI HolesApplication Not Repsonding ("ANR")的处理,添加[custom.js][custom]作为入口脚本.
  6. 加入[tuneup][tp]依赖
  7. 修改UIAutoMonkey.js中截图策略,为每个Event Action进行截图
  8. 支持测试执行过程中App进入后台,自动恢复(测试不会block) [lidvc]:https://github.com/libimobiledevice/libimobiledevice [dc]:https://github.com/rpetrich/deviceconsole [uiatmonkey]: https://github.com/jonathanpenn/ui-auto-monkey/blob/master/UIAutoMonkey.js [custom]:https://github.com/vigossjjj/CrashMonkey4IOS/blob/master/lib/ui-auto-monkey/custom.js [tp]:https://github.com/vigossjjj/CrashMonkey4IOS/tree/master/lib/ui-auto-monkey/tuneup [troubleshooting]:https://github.com/vigossjjj/CrashMonkey4IOS/tree/master/Troubleshooting.md

系统及环境要求:

  1. 安装Ruby运行环境,建议不要使用OS X自带版本,可自行使用RVM(Ruby Version Manager)安装最新版的Ruby。安装好RVM后建议使用淘宝镜像安装ruby,

$ sed -i -e 's/ftp\.ruby-lang\.org\/pub\/ruby/ruby\.taobao\.org\/mirrors\/ruby/g' ~/.rvm/config/db

  1. 确保gem可用,也建议使用淘宝镜像:

    gem sources --remove https://rubygems.org/

    gem sources -a https://ruby.taobao.org/

    gem sources -l

  2. 安装Homebrew ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

  3. 建议Xcode 6.x +

必要依赖安装:

  1. brew install -HEAD ideviceinstaller
  2. brew install libimobiledevice
  3. brew install imagemagick

使用说明:

安装Release版

gem install smart_monkey, 执行入口: 终端下直接使用smart_monkey

安装开发版

安装Ruby模块gem install erubis(如安装release版,此模块会自动配置加载。) 直接clone本项目, 执行入口: /CrashMonkey4IOS/bin/smart_monkey

执行命令

smart_monkey -a ${App_BunnelID} -w ${iPhone_UDID}

参数说明:

  • -a: 指向被测程序的BundleID(不可缺省)。e.g.-a com.mytest.app

  • -w: 指向测试设备的UDID,可以通过$instruments -s devices进行设备id的查看,若缺省则默认指向第一台设备(模拟器或真机)。e.g.-w 26701a3a5bc17038ca0465186407b912375b35a7

  • -n: monkey测试的执行次数,默认为1次。e.g.-n 3

  • -d: 测试报告地址,默认为当前目录下的smart_monkey_result文件夹下。e.g.-d ~/my-monkey-test-result

  • -t: 执行时间,单位为秒。e.g.-t 60

  • -s: 指向被测app的**.dSYM**文件,若出现crash,解析crash为明文。e.g.-s testapp.dSYM

  • -c: 自定义的配置集路径,参数必须为目录,目录下必须包含custom.js,若使用handler,目录下需存在名为handler的文件夹,用于存放相关文件。e.g.-c /my/path/custom_cfg

    如果使用custom_cfg必须遵守如下目录结构

     custom_cfg
     	├── custom.js
     	└── handler
         	├── buttonHandler.js
         	└── wbScrollViewButtonHandler.js
    
  • --event-number: 定义Monkey测试的总事件数,默认为50。e.g.--event-number 100

  • --compress-result: 对测试过程中截取的图片进行压缩,以节省空间开销。e.g.--compress-result 50%

  • --detail-count: 定义报告详情中记录的事件总数,默认为50,即在报告当中展示最近的50次随机事件,且进行操作示意绘制。e.g.--detail-count 100

  • --show-config: 打印当前的配置信息,即custom.js。e.g.--show-config

  • --drop-useless-img: 删除除展示在报告当中的其余截图,以节省空间开销,如,一轮Monkey测试共产出截图100张,参数--detail-count设置为20,那么使用--drop-useless-img会删除其余80张截图。e.g.--drop-useless-img

  • --list-app: 打印当前连接的真机及模拟器中所安装的app。e.g.--list-app

  • --list-devices: 打印当前所有可用设备。e.g.--list-devices

  • --reset-ios-sim: 重启模拟器。e.g.--reset-ios-sim

  • --version: 打印smart_monkey的版本号。e.g.--version

⇒  CrashMonkey4IOS/bin/smart_monkey -h
Usage: smart_monkey [options]
    -a app_name                      Bundle ID of the desired target on device(Required)
    -w device                        Target Device UDID(Required)
    -n run_count                     How many times monkeys run(default: 1)
    -d result_dir                    Where to output result(default: ./smart_monkey_result)
    -t time_limit_sec                Time limit of running
    -s dsym_file                     Use .dSYM file to symbolicating crash logs
    -c custom_cfg_path               Indicate confige lib directory path, not a file path.
        --event-number event_number  The monkey event number(default: 50)
        --compress-result compress_rate
                                     compress the screenshot images to save disk space!(example: 50%)
        --detail-count detail_event_count
                                     How many events to show in detail result page(default 50)
        --show-config                Show Current Configuration custom.js
        --drop-useless-img           Delete the un-displayed images of detial page.
        --list-app                   Show List of Installed Apps in iPhone/iPhone Simulator
        --list-devices               Show List of Devices
        --reset-ios-sim              Reset iPhone Simulator
        --version                    print smart monkey version

Troubleshooting:

安装和执行测试遇到的问题解决方案请参看:[Troubleshooting.md][troubleshooting]

测试报告:

Summary: summary Detail: detail SystemLog: systemlog CrashLog: crashlog uiautotrace: uiautotrace

参考文献:

  1. https://github.com/mokemokechicken/CrashMonkey
  2. https://github.com/jonathanpenn/ui-auto-monkey