ios monkey
一、简介
MonkeyTest 最早是Android自动化测试的一种手段,其原理非常简单,就是利用程序在一段时间内模拟产生一定数量的随机用户操作事件, 如点击、轻扫、长按、旋转屏幕等, 以及一些系统级别的事件,用毫无规律的指令或操作使用被测系统,观察系统的稳定性和容错性能,看我们的App多长时间会出异常。通常也称随机测试或者稳定性测试。iOS的Monkey测试是基于此的一个github开源项目:https://github.com/jonathanpenn/ui-auto-monkey。
二、Monkey开始之前
开始之前,以下几个步骤一定要确认是否正确,否则就是莫名的各种不顺啦。
用来跑monkey的机器一定要Enable UI Automation(设置- 开发者),如图: 用来跑monkey的版本,必须为Debug证书编译的Debug版本;定义类似MONKEY_TEST的宏屏蔽你不想让monkey干的操作,比如:拨打电话、跳出App等;(Optional)
三、Monkey实现原理
我们首先用苹果提供的Instruments— Automation(安装xcode后就自带了)模板来实现一个屏幕录制的实验;
1、用instruments建立一个Automation模板,如下图:
2、选中你要测试的APP(该APP必须是Debug版本),选中脚本录制,如下图:
3、选择Script,启动录制,这是你在App上的所有操作都会被用JavaScript脚本录制下来,如下图:
当录制完毕后,在上面Script区域已经记录了一些js代码。这时候,我们点击下面的三角形回放按钮,可以惊奇的看到我们刚才的所有操作都被一模一样的重新演示了一遍。回过神来看看Script区域的代码,其实可以看到我们所有的动作都被js以某种action的方式记录下来,而这些js代码就可以作用于我们测试的机器,来模拟人的一些操作。说到这里我相信要实现上面提到monkey,思路就非常清晰了。
根据上面可知,instruments是提供我们根据javascript脚本来控制我们的App的。那monkey测试就简单啦,random一些我们想要测试的用户事件,这不就OK了么。当然这个事也不需要我们做了,github上的一个开源项目ui-auto-monkey已经帮我们写好啦(https://github.com/jonathanpenn/ui-auto-monkey)。我们直接导入运行,monkey测试就开始啦,如下图,运行完成后导出结果就可以留下痕迹了,而整个monkey测试流程就这样啦。
当然这个是比较传统的了,顶多算是半自动化。用shell脚本调用instruments的shell命令,上诉整个过程就可以全自动化了。官方的monkey js多有的事件概率和执行方式都是可以定制的,下面是我针对我目前项目配置的js代码:
#import "UIAutoMonkey.js" UIAutoMonkeyClientWillReleaseTheMonkey = true; monkey = new UIAutoMonkey(); monkey.config.minutesToRun = 4 * 60; // monkey运行4小时 monkey.config.checkTimeEvery = 60; // check the time every 60 events. monkey.config.numberOfEvents = false; // disable event count model; monkey.config.delayBetweenEvents = 0.05; // 每一分钟事件触发次数 //monkey.config.screenshotInterval = 5; // 每间隔多少秒截屏一次 // 设置事件权重 monkey.config.eventWeights = { tap: 100, drag: 20, flick: 20, pinchOpen: 10, pinchClose: 10, orientation: 1, lock: 0, shake: 1, deactivate: 1, clickVolumeUp: 1, clickVolumeDown: 1, // 设置重复操作概率 monkey.config.touchProbability = { longPress: 0.05, multipleTaps: 0.05, multipleTouches: 0.05 monkey.RELEASE_THE_MONKEY();
对应自动跑monkey的shell脚本如下:
#!/bin/bash APP="xxxxxxxx" # monkey 测试的app #UDID="fb5995c1c839e0c2fc5942e99dc93076491c3c09" # monkey 测试设备的UDID cd "$(dirname "$0")" mkdir monkey_result cd monkey_result for script in `ls ../上面定制的JS文件.js` instruments -w ${UDID} -t /Applications/Xcode.app/Contents/Applications/Instruments.app/Contents/PlugIns/AutomationInstrument.xrplugin/Contents/Resources/Automation.tracetemplate ${APP} -e UIASCRIPT ${script} monkeyTest.log grep "Pass" monkeyTest.log /dev/null if [ $? -eq 0 ] then echo "${script} PASS" else echo "${script} FAIL" ../monkey_run done
好了将上面官方的UIAutoMonkey.js和上面自己的两个脚本放在同一个文件夹下,运行shell脚本monkey就跑起来了。当然在github上还有很多更NB的工具,不仅全程自动化,还可以生成报表。
1、CrashMonkey: https://github.com/mokemokechicken/CrashMonkey(release安装的monkey版本比较老,crash统计貌似有点问题了);
2、CrashMonkey4IOS:https://github.com/ObornJung/CrashMonkey4IOS(基于CrashMonkey,还有可以直接把crashlog读取出来并符号化,但运行太慢了,实在不能忍受);
monkey大概就介绍这么多吧,希望我们的app crash越来越少~~
转载自:http://myeyeofjava.iteye.com/blog/2287822
[ios开发]-APP-上架流程 由于苹果的机制,在非越狱机器上安装必须通过官方的Appstore, 开发者开发好应用后上传Appstore,也需要通过审核等环节。 AppCan作为一个跨主流平台的一个开发平台,也对ipa包上传Appstore作了支持。 本文从三个流程来介绍如何实现AppCan在 线编译出ipa包,以及上传到苹果Appstore。
相关文章
- iOS-最全的App上架教程
- 什么是ios?
- ios用了推送功能如何打包和如何生成打包证书
- 2022最新iOS证书(.p12)、描述文件(.mobileprovision)申请和HBuider打包及注意注意事项
- IOS – OpenGL ES 指定颜色抠图 GPUImageChromaKeyFilter
- 如何使用Xcode打包导出IPA文件并进行iOS应用内测,无需支付苹果开发者账号费用?
- iOS 加密的3种方法详解手机开发
- iOS开发textField点击背景空白隐藏收起键盘的N种方法详解手机开发
- iOS—–程序异常处理—– 断言NSAssert()和NSParameterAssert区别和用处详解手机开发
- 探索Linux系统:在iOS上下载(linux系统ios下载)
- 在iOS上搭建MySQL数据库连接(ios连接mysql数据库)
- MacOS 与 iOS:由浅入深的连接(macos和ios)
- 让Linux开发iOS应用变得更简单(linux开发ios应用)
- Linux与iOS:同源不同道(linux与ios的关系)
- Linux与iOS:越来越亲密的合作伙伴(linux与ios)
- 微软更新iOS版微软远程桌面应用(RDP) 带来诸多新功能和优化改进等
- 基于Linux环境下iOS应用开发实践(linux下开发ios)
- iOS 不是 Linux,而是苹果独特操作系统(ios是linux吗)
- 把 Linux 安装到 iOS 设备上的步骤(ios安装linux)
- iOS开发与Linux的技术融合(ios开发linux)
- iOS让Oracle无处不在(ios支持oracle么)