1. XCTest
XCTest是苹果在iOS 7和Xcode5引入的一个简单而强大的测试框架,它的测试编写起来非常简单,并且遵循xUnit风格。
优点:与Xcode深度集成,有专门的Test导航栏
缺点:受限于官方测试API,因此功能不是很丰富
2. UIAutomation
UIAutomation是苹果提供的UI自动化测试框架,使用Javascript编写。基于UIAutomation有扩展型的工具框架和驱动型的框架。扩展型框架以JavaScript扩展库方法提供了很多好用js工具,注入式的框架通常会提供一些Lib或者是Framework,要求测试人员在待测应用的代码工程中导入这些内容,框架可以通过他们完成对app的驱动。驱动型UI Automation 在自动化测试底层使用了UI Automation库,通过TCP通信的方式驱动UI Automation来完成自动化测试,通过这种方式,编辑脚本的语言不再局限于JavaScript
3. Frank
Frank是iOS平台一款非常受欢迎的app测试框架,它使用Cucumber语言来编写测试用例, Frank包含一个强大的“app inspector”–Symbiote,可以用它来获得运行中app的详细信息,便于开发者将来进行测试回顾。 它允许使用Cucumber编写结构化英语句子的测试场景。 Frank要求测试时在应用程序内部编译,这意味着对源代码的改变是强制性的。操作方式为使用Cucumber和JSON组合命令,将命令发送到在本地应用程序内部运行的服务器上,并利用UISpec运行命令。
优点: 测试场景是在Cucumber的帮助下,用可理解的英语句子写的。强大的Symbiote实时检查工具。 活跃的社区支持。 不断扩大中的库
缺点:对手势的支持有限。 在设备上运行测试有点难。 修改配置文件需要在实际设备上运行。 记录功能不可用
4. KIF
KIF是Keep It Functional项目的缩写,是一款iOS app功能性测试框架,使用Objective-C语言编写,对苹果开发者来说非常容易上手,更是一款开发者广为推荐的测试工具。KIF tester使用私有API来了解App中的视图层级。但缺点是运行较慢
5. Calabash
Calabash是一个适用于iOS和Android开发者的跨平台app测试框架,可用来测试屏幕截图、手势和实际功能代码。Calabash开源免费并支持Cucumber语言,Cucumber能让你用自然的英语语言表述app的行为,实现BDD(Behavior Driven Development,行为驱动开发)。 Cucumber中的所有语句使用Ruby定义。
优点: 有大型社区支持。列表项 简单,类似英语表述的测试语句支持在屏幕上的所有动作,如滑动,缩放,旋转,敲击等。 跨平台开发支持(同样的代码在Android和iOS设备中都适用)
缺点:测试步骤失败后,将跳过所有的后续步骤,这可能会导致错过更严重的产品问题。测试耗费时间,因为它总是默认先安装app。 需要Calabash框架安装在ios的ipa文件中, 因此测试人员必须要有iOS的app源码。 除了Ruby,对其他语言不友好
6. Subliminal
Subliminal是另一款与XCTest集成的框架。与KIF不同的是,它基于UIAutomation编写,旨在对开发者隐藏UIAutomation中一些复杂的细节
7. Kiwi
Kiwi是对XCTest的一个完整替代,使用xSpec风格编写测试。 Kiwi带有自己的一套工具集,包括expectations、mocks、stubs,甚至还支持异步测试。它是一个适用于iOS 开发的Behavior Driven Development(BDD)库,优点在于其简洁的接口和可用性,易于设置和使用,非常适合新手开发者。Kiwi使用Objective-C语言编写,易于IOS开发人员上手
8.Appium
Appium是一个开源的、跨平台的自动化测试工具,支持IOS、Android和FirefoxOS平台。 通过Appium,开发者无需重新编译app或者做任何调整,就可以测试移动应用,可以使测试代码访问后端API和数据库。它是通过驱动苹果的UIAutomation和Android的UiAutomator框架来实现的双平台支持,同时绑定了Selenium WebDriver用于老的Android平台测试。开发者可以使用WebDriver兼容的任何语言编写测试脚本,如Ruby,C#,Java, JS,OC, PHP,Python,Perl和Clojure 语言
自动化测试框架总结
iOS自动化测试框架继承关系如下. XCTest与 Xcode 的 IDE 直接集成,使用简单, 但其不支持stub和mock, 所以单使用XCTest框架的较少. Kiwi是一个iOS平台十分好用的行为驱动开发BDD的测试框架,有着非常漂亮的语法,可以写出结构性强,非常容易读懂的测试。UI Automation是Apple官方提供的UI自动化测试的解决方法,但接口不够丰富。
KIF、Frank、Calabash都是通过使用代码的形式来模拟事件触发,使得被测代码就像是由用户行为所触发的一样。但这样的代价是插入一个额外层的复杂度。
iOS测试框架中支持BDD的有calabash 和Kiwi。
可选用的单元测试框架有Kiwi,Specta,Quick等,而KIF,Subliminal和calabash更适用于UI级验收测试
IOS A/B test 测试框架 FlipTest
FlipTest是一个优秀的iOS app A/B测试框架,可为app挑选最佳的UI。FlipTest会基于外观和易用性等众多因素返回测试结果,进而帮开发者解决UI问题。用FlipTest进行测试无需向App Store重新提交应用或者大幅更改代码,只需要在app中添加一行代码,节省了不少时间
参考资料