无限monkey解决方案
一、什么是monkey,目的
- 软件稳定性测试,向系统发送伪随机用户事件流实现压力测试。
- 目的:解放双手,告别点点点。
- 优点:提升应用稳定性,能测出一些不可知的情况还有手动点点点无法测出的问题。
- 局限性:一般用来测试UI的问题。
二、monkey 与单元测试的区别
- monkey 是模拟事件流,并随机分发;
- 单元测试是指针对某个 case 进行指定的测试。
三、黑盒与白盒
- 黑盒:在不知道代码的情况下对应用进行测试,一般无侵入性;
- 白盒:在知道代码的情况下对应用进行测试,一般具有侵入性。
四、比较流行的解决方案,曾经比较流行的解决方案
- 较早使用 UIAutomation + js 脚本 现已经被移除。
- CrashMonkey4IOS 曾经是比较流行的通用解决方案。
- monkeytalk 也很好用,但是国内用的比较少,后来被收了,转商用。代码部分开源。
- Appium 现在黑盒中比较流行的解决方案。
- 好处:黑盒,开源,国内现在有许多开发者在支持。对于 iOS 内部支持已改为 UI Testing 。
- 缺点:环境搭建费劲。运行慢。
- macaca, Robotium… 我也不太熟。
五、我们使用的monkey解决方案
- SwiftMonkey 老外写的 uitesting 白盒 monkey 解决方案。通过 uitesting 私有方法随机产生事件流来进行 monkey。
六、什么是无限monkey,为什么要无限monkey
- 无限 monkey 是一套更加完善的客户端自动化测试解决方案。
- 传统意义的monkey,当客户端crash 之后就结束了,无法重新启动。无限monkey的意义在于 当客户端crash 之后可以重新吊起,并会将崩溃时的 crash 日志与 log 日志 打包发送邮件给开发人员,这样就真正意义实现了一套完全自动化的 monkey。
七、技术点
- monkey 框架引入
- 判断被测 app 是否crash。
- crash hook 与 crash 文件
- log 重定向输出
- 下载log,crash 日志
- 将邮件发送给负责人。