购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

2.3 iOS App测试框架概览

随着移动互联网的兴起,App的测试越来越受重视。Android操作系统具有开源性,其测试工具和测试方法广为流行,而iOS的私有性导致很多与iOS相关的测试的执行较烦琐。为了帮助大家更好地执行iOS App自动化测试,本节介绍当前流行的iOS测试工具。

UIAutomation是苹果提供的UI自动化测试框架,使用JavaScript编写测试代码。该工具在iOS UI自动化测试中使用非常广泛。

基于UIAutomation的框架主要有扩展型、注入型和驱动型3种。扩展型框架通过JavaScript扩展库方法提供了很多好用的工具;注入型框架通常会提供一些Lib或者Framework,要求测试人员在待测App的代码工程中导入这些内容,框架可以通过它们完成对App的驱动;驱动型框架在自动化测试底层使用UIAutomation库,通过TCP(Transmission Control Protocol,传输控制协议)通信的方式驱动UIAutomation来完成自动化测试,当采用这种方式时,编写测试脚本的语言不再局限于JavaScript。

XCTest是苹果在iOS 7和Xcode 5中引入的一款简单而强大的测试框架,它集成在Xcode中,用来编写测试代码。它可实现各个层次的测试。

用XCTest编写测试代码非常简单,并且遵循 XUnit风格。在创建项目时,Xcode会默认使用XCTest,并且默认创建单元测试和UI测试,其中单元测试主要用于测试代码的大部分基本功能,如绝大多数模型的类和方法测试、业务逻辑测试、网络接口调用测试等。UI测试一般会考虑用户的交互流程,模拟用户的交互操作,利用XCTest的UI记录特性来获取界面上的一系列视图元素和操作事件,然后在测试方法中触发事件,所以这是一款可以实现各个层次的测试(如单元测试、UI自动化测试、性能测试等)的框架。

KIF(Keep It Functional)是一款iOS App功能测试框架,由Square开发,该测试框架只支持 iOS。该框架的测试代码使用Objective-C语言编写,因此测试人员需要熟练掌握Objective-C语言。对于苹果开发者来说,该框架非常容易上手,该框架也是苹果开发者广为推荐的测试工具。KIF使用未公开的Apple API(私有 API),可以进行项目的单元测试,也可以进行UI集成测试,但缺点是运行速度较慢。

Frank是iOS开发环境下的一款自动化测试框架。App在Xcode环境下开发完成后,可以通过Frank 实现结构化的测试用例。Frank的底层语言为Ruby。作为一款开源的iOS测试工具,它在国外已经有广泛的应用,但是国内相关资料比较少。

Frank可以针对iOS平台进行功能测试,可以模拟用户的操作对App进行黑盒测试,并且使用Cucumber编写测试用例,使测试用例可以像自然语言一样描述功能需求,让测试以“可执行的文档”的形式成为业务客户与交付团队之间沟通的桥梁。其最大的优点为,测试场景是在Cucumber的帮助下,用可理解的英语句子进行描述的。另外,Frank还有活跃的社区支持,以及不断扩大的支持库。而Frank的缺点是对手势的支持有限。

Calabash是一款适合iOS和Android开发者使用的跨平台App测试框架,可用来测试屏幕截图、手势和实际功能代码。

Calabash开源、免费并支持Cucumber语言。Cucumber能让开发者用自然的英语表述App的行为,实现BDD(Behavior Driven Development,行为驱动开发),而Calabash-iOS是一款基于Calabash的iOS的自动化功能测试框架。Calabash-iOS的优点包括大型社区支持,列表项简单,其类似英语表述的测试语句支持在屏幕上的所有操作,如滑动、缩放、旋转、敲击等。它的缺点包括测试步骤失败后,将跳过所有的后续步骤,这可能导致错过更严重的产品问题;测试耗费时间,因为它始终默认先安装App,需要将Calabash框架安装在iOS的ipa文件中,因此测试人员必须有iOS的App源码;除了支持Ruby语言外,它对其他语言不友好。

Subliminal是一款与XCTest集成的框架,也是一款优秀的iOS集成测试框架。与KIF不同的是,它基于UIAutomation编写测试代码,对开发者隐藏UIAutomation中一些复杂的细节。可惜近几年它已不再更新。

Kiwi是对XCTest的一个完整替代,使用xSpec风格编写测试代码。Kiwi带有自己的一套工具集,包括expectations、mocks、stubs,甚至还支持异步测试。它是一个适用于 iOS 开发的BDD库,具有简洁的接口,可用性强,易于设置和使用,可用于写出结构性强的易读测试用例,非常适合刚入门的开发者。Kiwi是使用Objective-C语言编写的,易于iOS开发者上手。

Appium是一款开源的、跨平台的自动化测试框架,支持iOS、Android平台。通过 Appium,开发者无须重新编译App或者做任何调整,就可以测试App,还可以使测试代码访问后端API和数据库。它通过驱动苹果的UIAutomation框架来实现iOS平台支持。开发者可以使用WebDriver兼容的任何语言(如 Ruby、C#、Java、JavaScript、Objective-C、PHP、Python、Perl语言)编写测试代码。

在工作中,建议关注以下几点。

● 框架必须为开源产品,无须资金投入。

● 社区活跃、更新快,这意味着开发者可以找到丰富的学习资源,也有助于较快地修复bug。

● 支持跨平台。

● 无须获取App源码,无须对App进行任何调整。

因此,本书选择Appium框架作为iOS App自动化测试工具。 bjrNP/e55bOn6FUe0aR6AoRjzqQOJFPk61eLjmtgobndifXAcC8sEaiX2brbPjkN

点击中间区域
呼出菜单
上一章
目录
下一章
×