史上最全的 iOS 各种测试工具集锦

本贴最后更新于 1190 天前,其中的信息可能已经时移俗易

引言

随着移动互联网的兴起,APP测试的越来越被重视!Android系统因为自己的开源性,测试工具和测试方法比较广为流传,但是iOS系统的私密性,导致很多测试的执行都有点麻烦。为了帮助大家更好的执行iOS APP的测试,本文为大家收集了非常全面的iOS 测试工具,涵盖各大领域,相信对大家会有所帮助!

自动化测试

1、UIAutomation

UIAutomation是苹果提供的UI自动化测试框架,使用Javascript编写。

基于UIAutomation有扩展型的工具框架和驱动型的框架。扩展型框架以JavaScript扩展库方法提供了很多好用js工具,注入式的框架通常会提供一些Lib或者是Framework,要求测试人员在待测应用的代码工程中导入这些内容,框架可以通过他们完成对app的驱动。

驱动型UI Automation 在自动化测试底层使用了UI Automation库,通过TCP通信的方式驱动UI Automation来完成自动化测试,通过这种方式,编辑脚本的语言不再局限于JavaScript。

这个工具在iOS UI自动化测试中使用非常广泛。

具体参考资料:https://developer.apple.com/library/ios/documentation/DeveloperTools/Conceptual/InstrumentsUserGuide/UIAutomation.html

2、XCTest

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

XCTest测试编写起来非常简单,并且遵循xUnit风格。Xcode在创建工程时,会默认使用XCTest,并且默认创建了Unit Test(单元测试)和 UI Test(界面测试)两个Target,其中Unit Test主要用于测试代码的大部分基本功能,比如绝大多数Model的类和方法测试,业务逻辑测试,网络接口调用测试等等。UI Test一般会考虑到用户的交互流程,模拟用户的交互操作,利用XCTest的UI记录特性来获取界面上的一些列视图元素和操作事件,然后在测试方法中触发事件。

所以这是一个可以提供各个层次的测试的框架,比如单元测试,自动化测试,性能测试等。

具体参考资料:https://developer.apple.com/library/mac/documentation/DeveloperTools/Conceptual/testing_with_xcode/chapters/01-introduction.html

3、KIF

KIF是Keep It Functional项目的缩写,是一款iOS app功能性测试框架,来自 Square,该测试框架只支持 iOS。

另外,所有测试使用Objective-C语言编写,对苹果开发者来说非常容易上手,更是一款开发者广为推荐的测试工具。

KIF使用未公开的Apple API(私有API),这对于测试目的而言是安全的,基于第三方iOS UI的单元测试框架,所以可以做项目的单元测试,也可以做UI集成测试。但缺点是运行较慢。

具体参考资料:https://github.com/kif-framework/KIF

4、Frank

Frank是ios开发环境下一款实现自动测试的工具,Xcode环境下开发完成后,通过Frank实现结构化的测试用例,其底层语言为Ruby,作为一款开源的iOS测试工具,在国外已经有广泛的应用。但是国内相关资料却比较少。其最大的优点是允许我们用熟悉的自然语言实现实际的操作逻辑。

它提供了针对iOS平台的功能测试能力,可以模拟用户的操作对应用程序进行黑盒测试,并且使用Cucumber编写测试用例,使测试用例如同自然语言一样描述功能需求,让测试以“可执行的文档”的形式成为业务客户与交付团队之间的桥梁。

优点: 测试场景是在Cucumber的帮助下,用可理解的英语句子写的,还有活跃的社区支持,以及不断扩大中的库。

缺点:对手势的支持有限,所以在设备上运行测试有点难。

具体参考资料:https://www.testingwithfrank.com/

5、Calabash-iOS

Calabash是一个适用于iOS和Android开发者的跨平台app测试框架,可用来测试屏幕截图、手势和实际功能代码。Calabash开源免费并支持Cucumber语言,Cucumber能让你用自然的英语语言表述app的行为,实现BDD(Behavior Driven Development,行为驱动开发)。

而Calabash-iOS 就是一个基于 Calabash的 iOS 的功能、自动化测试框架。

优点:

  1. 有大型社区支持;
  2. 列表项简单,类似英语表述的测试语句支持在屏幕上的所有动作,如滑动,缩放,旋转,敲击等。

缺点:

  1. 测试步骤失败后,将跳过所有的后续步骤,这可能会导致错过更严重的产品问题。
  2. 测试耗费时间,因为它总是默认先安装app,需要Calabash框架安装在ios的ipa文件中, 因此测试人员必须要有iOS的app源码。
  3. 除了Ruby,对其他语言不友好

具体资料获取路径:https://github.com/calabash/calabash-ios

6、Subliminal

Subliminal是另一款与XCTest集成的框架,也是个不错iOS集成测试框架。与KIF不同的是,它基于UIAutomation编写,对开发者隐藏UIAutomation中一些复杂的细节。可惜近几年没有更新了,若能支持swift就好了。

具体资料获取路径:https://github.com/Diaoul/subliminal

7、Kiwi

Kiwi是对XCTest的一个完整替代,使用xSpec风格编写测试。 Kiwi带有自己的一套工具集,包括expectations、mocks、stubs,甚至还支持异步测试。

它是一个适用于iOS 开发的Behavior Driven Development(BDD)库,有着非常漂亮的语法,优点在于其简洁的接口和可用性,易于设置和使用,可以写出结构性强易读测试,非常适合新手开发者。Kiwi也是使用Objective-C语言编写,易于IOS开发人员上手。

具体资料获取路径:https://github.com/kiwi-bdd/Kiwi

8、Appium

Appium是一个开源的、跨平台的自动化测试工具,支持IOS、Android和FirefoxOS平台。通过Appium,开发者无需重新编译app或者做任何调整,就可以测试移动应用,可以使测试代码访问后端API和数据库。

它是通过驱动苹果的UIAutomation框架来实现的iOS平台支持。开发者可以使用WebDriver兼容的任何语言编写测试脚本,如Ruby,C#,Java, JS,OC, PHP,Python,Perl和Clojure 语言。

具体资料获取路径:http://appium.io/

iOS性能测试

1、Instruments

Instruments 是Xcode自带的,用来动态跟踪和分析 MacOS 和 iOS 代码的实用工具,以独立APP形式存在的工具集,包含了很多强大的检测功能:其中包括在真机和模拟器上的APP进行性能测试。

主要功能有:

  1. 分析程序进程行为
  2. 分析内存分配及释放细节
  3. 查找CPU问题
  4. 查找程序性能瓶颈
  5. 检查设备相关的功能,比如:Wi-Fi、蓝牙等。
  6. 查找 App 中的内存问题,比如内存泄露(Leaked memory)、废弃内存(Abandoned memory)、僵尸(zombies)等。

具体查看官方文档: https://help.apple.com/instruments/mac/current/#/dev7b09c84f5

2、第三方SDK

很多第三方的专门用于性能检测和用户行为、属性分析的SDK,比如Bugly,OneAPM,听云,Firebase Analytics,把它们接入项目可以短期内达成性能检测目标。

这些第三方的工具原理都是类似的,利用 swizzle 的方法进行AOP(面向切面编程)处理,在关键函数之前和之后自动埋点记录上报。有的平台也支持上传符号表文件精确定位代码执行位置以及以埋点的方式手工添加日志记录。使用起来还是比较方便的,基本上引入SDK和相关库,在程序入口处启动检测即可。

然而使用第三方SDK的缺点也是非常明显的:

  1. 首先是缺乏定制性,我们需要的一些指标的统计SDK没有,SDK有的我们又不完全需要。
  2. 存在安全性问题,这些SDK涉及的统计数据都是APP的商业机密信息,对于有一定市场影响力的APP会有顾忌。
  3. 这类产品是收费的,平时自己开发个demo练手也不适合连这种SDK。

iOS 调试工具

1、Xcode

Xcode 是运行在操作系统Mac OS X上的集成开发工具(IDE),由Apple Inc开发。它是开发 macOSiOS 应用程序的最快捷的方式。Xcode 具有统一的用户界面设计,编码、调试、测试,都在一个简单的窗口内完成。

另外,Xcode也可以用来测试APP的时候获取APP的日志,分析bug和问题。

具体参考资料: https://developer.apple.com/cn/xcode/

2、ITunes

iTunes是苹果官方提供的一款工具,它在做APP测试的时候也可以提供手机APP日志的方法。具体可以参考之前的APP测试方法的文章(iOS APP测试方法文章链接~~~~)

获取工具连接:https://www.apple.com/itunes/

3、ITools

iTools这个工具是一个第三方的iOS测试工具,它跟iTune功能类似,但是比iTunes工具简单一些,简单易用的界面,可以从iTunes的繁琐中解放。也可以提供安装、卸载、备份、获取日志等各种功能。

获取工具链接:http://www.itools.cn/

内测发布平台:

1、fir.im

为开发者提供测试应用极速发布,应用崩溃实时分析、用户反馈收集等一系列开发测试效率工具服务,帮助开发者将更多精力放在产品的开发与应用的优化上。

2、蒲公英

『蒲公英』是专为 iOS、Android 开发者提供的免费用应用内测、托管的平台,旨在解决开发者将应用分发给内测用户时的繁杂、低效的问题。

3、TestFlight

TestFlight是苹果提供的应用测试工具,允许开发者邀请用户对应用的预发布版本进行测试,从而在应用正式发布至App Store前收集用户反馈。

具体的操作可以参考文章 (IOS测试方法的文章)

2 操作
tricy 在 2021-01-22 16:50:23 更新了该帖
tricy 在 2021-01-22 16:49:56 更新了该帖
回帖
请输入回帖内容 ...