Monkey for iOS(CrashMonkey4IOS)

CrashMonkey4IOS介绍

  1. 支持真机测试、模拟器测试
  2. 支持收集系统日志(Systemlog)、崩溃日志(Crashlog)、instrument行为日志
  3. 支持测试报告截图,绘制行为轨迹
  4. 支持测试设备信息收集
  5. 使用最新版的UIAutoMonkey,加入UI HolesApplication Not Repsonding ("ANR")的处理,添加custom.js作为入口脚本.
  6. 加入tuneup依赖
  7. 修改UIAutoMonkey.js中截图策略,为每个Event Action进行截图
  8. 支持测试执行过程中App进入后台,自动恢复(测试不会block)

一、环境安装

1.  安装Homebrew

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

2. 安装依赖

1 brew install libimobiledevice
2 brew install -HEAD ideviceinstaller
3 brew install imagemagick
4 sudo gem install smart_monkey  #终端下直接以smart_monkey -a app_name -w device的形式跑

二、在iOS模拟器上安装APP

目前CrashMonkey4IOS没有自动启动模拟器的功能,因此需先确认被测设备(包括模拟器)已经启动完毕并停留在桌面,如处在锁屏界面请先解锁

1. 通过命令行启动模拟器

1 xcrun instruments -w 'iPhone 6 Plus'  #或直接输入设备号,如:-w 0F7A5791-3645-4670-B833-175E3598574F

2. 在模拟器中安装APP

1 xcrun simctl install booted /Users/Kz/Documents/Join10.app

( xcrun 这个命令实际还有很多更高深的玩法,通过xcrun --help可以自己学习和领悟 )

三、参数说明

 1 -a: 被测APP的BundleID。e.g.-a com.mytest.app。由于是直接通过 bundle id 来启动 app ,因此测试前要确保APP已经安装在被测设备上
 2 -w: 指向测试设备的UDID,可以通过$instruments -s devices查看设备id,若缺省则默认指向第一台设备(模拟器或真机) 如:-w 26701a3a5bc17038ca0465186407b912375b35a7
 3 -n: monkey测试的执行次数,默认为1次。e.g.-n 3
 4 -d: 测试报告地址,默认为当前目录下的smart_monkey_result文件夹下。如:-d ~/my-monkey-test-result
 5 -t: 执行时间,单位为秒。如:-t 60
 6 -s: 指向被测app的.dSYM文件,若出现crash,解析crash为明文。如:-s testapp.dSYM
 7 -c: 自定义的配置集路径,参数必须为目录,目录下必须包含custom.js,若使用handler,目录下需存在名为handler的文件夹,用于存放相关文件。如:-c /my/path/custom_cfg
 8 
 9 如果使用custom_cfg必须遵守如下目录结构:
10 
11 custom_cfg
12     ├── custom.js
13     └── handler
14         ├── buttonHandler.js
15         └── wbScrollViewButtonHandler.js
16 --event-number: 定义Monkey测试的总事件数,默认为50。如:--event-number 100
17 --compress-result: 对测试过程中截取的图片进行压缩,以节省空间开销。如:--compress-result 50%
18 --detail-count: 定义报告详情中记录的事件总数,默认为50,即在报告当中展示最近的50次随机事件,且进行操作示意绘制。如:--detail-count 100
19 --show-config: 打印当前的配置信息,即custom.js。如:--show-config
20 --drop-useless-img: 删除除展示在报告当中的其余截图,以节省空间开销,如,一轮Monkey测试共产出截图100张,参数--detail-count设置为20,那么使用--drop-useless-img会删除其余80张截图。如:--drop-useless-img
21 --list-app: 打印当前连接的真机及模拟器中所安装的app。如:--list-app
22 --list-devices: 打印当前所有可用设备。如:--list-devices
23 --reset-ios-sim: 重启模拟器。如:--reset-ios-sim
24 --version: 打印smart_monkey的版本号。如:--version

四、注意事项

1. 若长时间运行smart_monkey后电脑变卡:

  首先确认一下是哪个进程内存比较大,如果是instruments,运行过程当中会把日志存储在内存当中,所以比较吃内存,这个是苹果自家的东西,可以使用-n参数 分批次执行,将单次的事件数降低,可是使用-n 迭代5轮,单次事件数1000

2. 在运行过程中,锁屏设置密码后,出现运行错误:

  设置锁屏密码无解,建议不要加密码锁

3. 真机上务必开启 Enable UI Automation:

  在 Settings->Developer 里面,否则真机上运行时应用会闪退

原文地址:https://www.cnblogs.com/CNMBJR/p/5696214.html