Bluepill:LinkedIn开源的iOS并行UI测试工具

前不久,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也提供了二进制版本。

作者:Rays

来源:51CTO

时间: 2024-09-20 06:14:21

Bluepill:LinkedIn开源的iOS并行UI测试工具的相关文章

2014非常好用的开源Android测试工具

当前有很大的趋势是转向移动应用平台,Android 是最广泛使用的移动操作系统,2014 年大约占 80% 以上的市场.在开发 Android 应用的时候要进行测试,现在市场上有大量的测试工具. 本文主要是展示一系列的开源 Android 测试工具.每个工具都会有相应的简短介绍,还有一些相关的资源.Android 测试工具列表是按照字母来排序的,最后还会介绍几个不是特别活跃的 Android 测试相关的开源项目. 本文提到的开源 Android 软件测试工具包括:Android Test Kit

Appium在Android UI测试中的应用实践

Android 测试工具与 Appium 简介 Appium 是一个 C/S 架构的,支持 Android/iOS Native, Hybrid 和 Mobile Web Apps 的测试框架,与测试程序通过 Selenum Webdriver 协议通讯.Webdriver 的好处是通过 HTTP RPC 的方式调用 Server 上的过程,编写测试脚本不受语言的限制,无论是 Python, Java, NodeJS 均可以方便的编写测试.本文中将使用 Python 进行编程. 起因是因为市场部

开发者眼中最好的 22 款 GUI 测试工具

1.Abbot - Java GUI 测试框架 Abbot是一个基于GUI的简单的Java测试框架,它能够帮助开发者测试Java用户界面. 它提供事件自动生成和验证Java GUI组件,使您能够轻松地启动,探索和控制应用程序.开发者可通过脚本和编译代码两种方式来使用Abbot框架,这就是为什么它被认为是在开发者的系统 测试和QA的功能测试中都能用到的最完美的GUI测试工具. **2.EggPlant - GUI自动化测试工具 ** EggPlant 是一个QA的GUI自动化测试工具,它是为使专业

LinkedIn Test Butler 旨在改进 Android UI 测试

LinkedIn工程师兼Test Butler创建者Drew Hannay写道,Test Butler是一款面向Android的开源测试工具,它允许开发人员对若干测试环境设置通过编程进行控制,从而使开发人员可以可靠地运行测试. 据Hannay介绍,Test Butler的灵感来自谷歌2014年的演讲"环保之路:清理有毒的移动环境".该演讲介绍了如何解决反复出现并影响移动测试的问题,比如缺少可靠性和可再现性.速度缓慢等.Hannay表示,当结果可能受到环境因素影响时,测试就不可靠了,尤其

iOS单元测试和UI测试全面解析

编写测试可不是一项迷人的工作;然而,由于测试可以避免使你的宝贝应用程序变成一块充斥错误的大垃圾场,所以编写测试又是一项非常有必要做的工作.如果你正在阅读本文,那么你应当已经知道你应该为您的代码和用户界面编写测试,只是不确定如何在Xcode中编写测试. 也许你已经开发出一个能够工作的应用程序,只是还没有对它进行测试;另一方面,当您扩展该应用程序时,你又想对其任何的更改进行测试.也许你已经写了一些测试,但尚不能确定它们是否是正确的测试.或者,你现在正在开发您的应用程序,并且想随着工作的进展对之进行测

WWDC15 Session笔记 - Xcode 7 UI 测试初窥

Unit Test 在 iOS 开发中已经有足够多的讨论了.Objective-C 时代除了 Xcode 集成的 XCTest 以外,还有很多的测试相关的工具链可以使用,比如专注于提供 Mock 和 Stub 的 OCMock,使用行为驱动测试的 Kiwi 或者 Specta 等等.在 Swift 中,我们可以继续使用 XCTest 来进行测试,而 Swift 的 mock 和 stub 的处理,我们甚至不需要再借助于第三方框架,而使用 Swift 自身可以在方法中内嵌类型的特性来完成.关于这方

Windows开源Web服务器性能和压力测试工具

linux有很多开源工具用来测试服务器负载,而windows上非常少,几乎没有除了几个复杂的JMeter WET等 将两个好用的工具是Linux版本通过Cygwin移植过来,方便广大windows人员使用,经过初步测试效果一致,是命令行简单易用的测试软件 1 http_load 程序非常小,http_load以并行复用的方式运行,用以测试web服务器的吞吐量与负载.但是它不同于大多数压力测试工 具,它可以以一个单一的进程运行,一般不会把客户机搞死.还可以测试HTTPS类的网站请求. 源码官方下载

2014 非常好用的开源 Android 测试工具

当前有很大的趋势是转向移动应用平台,Android 是最广泛使用的移动操作系统,2014 年大约占 80% 以上的市场.在开发 Android 应用的时候要进行测试,现在市场上有大量的测试工具. 本文主要是展示一系列的开源 Android 测试工具.每个工具都会有相应的简短介绍,还有一些相关的资源.Android 测试工具列表是按照字母来排序的,最后还会介绍几个不是特别活跃的 Android 测试相关的开源项目. 本文提到的开源 Android 软件测试工具包括:Android Test Kit

LinkedIn 开源成功的秘密

开源就是不断的奉献自己,除非它将你的业务先毁掉.但是,有太多的人先入为主,将各种偏见灌输给你,诸如:开源有"毒",开源根本无法赚钱之类的.这个时候,你只需要默默的,转身看看那些成功的利用开源的公司即可. 互联网的巨头,即使如 LinkenIn,也是开源的"专家",让我们先过一遍 LinkedIn 的 GitHub 账户, 竟然是一家发布了 75 个开源项目的公司.而且其中有一些已经是获得巨大成功的项目了,有众多的开发者和公司参与开发和使用.是的,没错,这就是 Lin