Skip to content

vigossjjj/CrashMonkey4IOS

Repository files navigation

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