Bluepill:LinkedIn开源的iOS并行UI测试工具
LinkedIn的移动团队在研发中提出过一个叫“3x3哲学”的理念,它意为设定目标每天发布三次,在代码提交到对团队成员可用之间不超过三个小时。这对持续交付提出了很大的挑战。UI测试作为持续交付的一部分,是非常耗时的,你通常需要测试所有主流系统版本之后才能发布。Bluepill就是为了解决这个问题而诞生的。
- 作者:Rays 译来源:移动开发前线|2017-02-06 14:00
有奖调研 | 1TB硬盘等你拿 AI+区块链的发展趋势及应用调研
前不久,LinkedIn在官方博客介绍了该公司的最新开源项目Bluepill。Bluepill使得开发人员可以在单一机器上同时用多种模拟器运行iOS UI测试,目标在于提供稳定的测试工具和可扩展的测试。
它的牛逼之处在于:
在一台机器上同时启动多个iOS模拟器,自动化运行多个UI测试并给出每一个测试的测试报告。
更直观点,可以看官方的Demo截图:
可以看到图中足足同时运行了12个模拟器,可以覆盖目前几乎所有主流iOS版本了。
为何研发Bluepill
LinkedIn的移动团队在研发中提出过一个叫“3x3哲学”的理念,它意为设定目标每天发布三次,在代码提交到对团队成员可用之间不超过三个小时。这对持续交付提出了很大的挑战。
UI测试作为持续交付的一部分,是非常耗时的,你通常需要测试所有主流系统版本之后才能发布。Bluepill就是为了解决这个问题而诞生的。
为了达成3x3的目标,Bluepill给出了两个特性:
测试平台的稳定性,主要针对Xcode iOS模拟器的“古怪问题”,有时候测试失败不是因为代码有问题,而是模拟器不给力,跑不起来或卡住了。据LinkedIn统计,他们所运行的测试中有2%就属于这种情况。
测试的可扩展性。测试的并行运行可同时覆盖多种模拟环境,可扩展性从根本上提供了这种能力。
Bluepill的黑魔法
之前,LinkedIn团队尝试在Facebook开源的xctool的基础上开发并行测试工具,结果xctool停止开发和维护了,LinkedIn的工程师在一番调研后忍痛放弃开始自研。
Bluepill借助于CoreSimulator解决稳定性和可扩展性问题。CoreSimulator是Apple的一个未公开的框架,它具有创建不同类型的设备模拟器、选择运行时版本、处理模拟器提供的通知等功能。在文章中作者提到,LinkedIn使用CoreSimulator实现了将Bluepill从Xcode模拟器中隔离出来,并使Bluepill可并行使用多种模拟器运行测试。这里无需关心Xcode模拟器版本,因为Xcode模拟器是一种随每次Xcode的更新而不断进化的黑盒。
如何使用Bluepill
使用Bluepill非常简单,最简单的用例中,你在Xcode中将工程Build之后,可使用如下命令运行Bluepill:
./bluepill -a ./Sample.app -s ./SampleAppTestScheme.xcscheme -o ./output/
这个命令将会启动四个模拟器,此外还有一些可以用来定制测试环境的选项,包括使用模拟器的数量、运行时环境、失败测试时允许重试的次数、测试被卡住时的等待时间等。
Bluepill采用BSD-2许可在GitHub上开源提供。对于不打算自己从源代码构建的开发人员,Bluepill也提供了二进制版本。
扩展阅读
LinkedIn为了研发Bluepill,在持续交付、UI测试上花了很大的功夫,你可以在他们的官方博客上阅读相关文章:
- https://engineering.linkedin.com/blog/2017/01/open-sourcing-bluepill--run-ios-tests-in-multiple-simulators
- https://engineering.linkedin.com/blog/2015/12/managing-ios-continuous-integration-at-enterprise-scale
- https://engineering.linkedin.com/blog/2016/04/3x3--ios-build-speed-and-stability
- https://engineering.linkedin.com/blog/2015/12/test-stability---how-we-make-ui-tests-stable
【编辑推荐】
点赞 0
- 大家都在看
- 猜你喜欢
编辑推荐
- 24H热文
- 一周话题
- 本月最赞
- iOS开发如何将自己的程序在真机上运行Android开发中Handler的经典总结无需Root也能使用Xposed!开发移动应用程序的三种选择:原生、HTML5或混合iPhone用户打车比Android用户贵,真的是因为苹果收了手续费吗?人人都是开发者:5款傻瓜式APP开发工具我为什么劝你不要过度纠结于技术细节?提速之后:今天家里装了500M宽带...
- Android开发中Handler的经典总结开发移动应用程序的三种选择:原生、HTML5或混合无需Root也能使用Xposed!App工程结构搭建:几种常见Android代码架构分析人人都是开发者:5款傻瓜式APP开发工具iPhone用户打车比Android用户贵,真的是因为苹果收了手续费吗?从零开始23天完成一款Android游戏开发(一)21个免费的UI界面设计工具、资源及网站
- Android开发中Handler的经典总结开发移动应用程序的三种选择:原生、HTML5或混合无需Root也能使用Xposed!2017年9月编程语言排行榜:Java、C与C++三巨头还能统治排行榜多久?App工程结构搭建:几种常见Android代码架构分析人人都是开发者:5款傻瓜式APP开发工具从零开始23天完成一款Android游戏开发(一)iPhone用户打车比Android用户贵,真的是因为苹果收了手续费吗?
视频课程+更多
-
企业级邮件服务器Exchange 2010视频课程
讲师:韩立刚119680人学习过
-
杨哥2017最新Linux云计算系列②: Shell脚本
讲师:千锋教育28666人学习过
-
[完整]ExcelVBA整合Access/SQLServer编程
讲师:谭科190050人学习过
最新专题+更多
- 精选博文
- 论坛热帖
- 下载排行
读 书 +更多
精通JBuilder 2006
JBuilder 2006是一款强大的Java企业级开发平台,其集成了几乎所有的Java技术,涵盖了软件开发生命周期的各个过程。本书深入浅出地介绍了JBu...
-
订阅51CTO邮刊
点击这里查看样刊