转自: http://www.yeetrack.com/?p=1002
使用Xcode进行Monkey测试
在测试app时,我们需要测试一下app的稳定性,monkey测试可以基本满足我们的需求,monkey测试实际上就是对app进行各种混乱操作,电脑随机产生操作指令,然后发送给手机,让手机去执行,这样测试执行一段时间(一般是几个小时),观察app是否有crash或者异常日志。
Android sdk中已经集成monkey命令,adb shell monkey
很方便。ios的话,需要我们自己去写脚本,不过github已经有开源的,UI AutoMonkey,拿来直接用。
- 使用Xcode打开要测试的app
- 启动Instruments(Product->Profile),或者快捷键⌘I。
- 选择”Automation”,然后点击”Profile”
- Instruments启动后,会默认启动录制。我们点击红色按钮(快捷键⌘R),把它停掉。
- 在脚本管理的窗口,新建一个脚本,点击“Add > Create”
- 粘贴跑monkey用的js代码,可以手动调整代码,设置操作的间隔时间,事件总量,事件概率。代码地址:https://github.com/jonathanpenn/ui-auto-monkey/blob/master/UIAutoMonkey.js
- 重新运行脚本(不用保存),快捷键⌘R,脚本就会被Xcode执行,我们可以在控制台看到日志。
脱离Xcode,命令行执行instruments
Instruments可以在命令行下执行,我们可以通过命令直接调用js脚本执行.
instruments -w bb9265a3af***********1eb62d1c05274b1d -t /Applications/Xcode.app/Contents/Applications/Instruments.app/Contents/PlugIns/AutomationInstrument.xrplugin/Contents/Resources/Automation.tracetemplate 5LDV722ABF.com.meilishuo.meilishuo -e UIASCRIPT /Users/apple/work/UIAutoMonkey.js UIARESULTSPATH /Users/apple/Desktop/
- -w udid 即ios设备唯一的UDID,可以使用iTunes获取。
- -t 指定Instrument路径
- -e UIASCRIPT 指定我们的js脚本路径
- UIARESULTSPATH 指定结果保存路径
命令行抓取iphone手机日志
monkey执行过程中,我们需要抓取打印的log,保存起来,monkey执行完毕后,进行分析。monkey过程中,日志可能比较多,使用Xcode来看,很不方便。libimobiledevice-macosx这款工具,可以让我们在shell中获取iphone的log。
- 下载源码
git clone https://github.com/benvium/libimobiledevice-macosx.git
- 设置环境变量
export DYLD_LIBRARY_PATH=/your/path/here/imobiledevice-macosx/:$DYLD_LIBRARY_PATH
PATH=${PATH}:/your/path/here/imobiledevice-macosx/ - 执行
source ~/.bash_profile
- shell中执行
idevicesyslog
即可以看到iphone运行过程中打印的日志,可以使用grep过滤,可以重定向到文件。