Test With Xcode Part-0

前言

从事iOS App测试工作已经快两年了,一直想要总结下工作过程和技术。
趁最近手头项目不紧,学习梳理下在Xcode中进行iOS自动化测试的知识。

作者保留所有权利,转载请先联系获取授权,邮件esnake0@163.com

为什么用Xcode?

1.由于iOS平台特殊的生态环境,Apple公司对于iOS开发系统采取了非常封闭的策略,因此在开发和测试过程中,使用官方开发工具和组件可以避免折腾,将注意力集中到开发测试过程本身。

2.目前流行的第三方自动化测试框架,要么是对Apple官方提供的UI automator进行扩展,如TuneupJs, 要么是直接使用UI Automation作为底层驱动, 如Appium, 淘宝的athrun等。当然像KIF这种直接使用私有API的框架也是存在的,但是资源和文档很少,在国内使用它的团队就更少了。
我们来看看UI Automation的官方文档Instruments User Guide中Automate UI Testing in iOS:

Important
Xcode 7 provides support for user interface testing and recording. Investigate this functionality and see if it will work for your needs before conducting UI testing in Instruments. For information about user interface testing in Xcode, see Testing with Xcode.

在Xcode7推出后Apple官方是推荐使用XCTest代替UI Automation来进行UI自动化测试的。
3.对于iOS App测试工程师来说,在实现了UI自动化测试后,下一个目标就是集成测试和单元测试。因此对于项目源码的阅读能力,和对于App结构的理解是必要的。XCTest框架内置于Xcode,采用Obj-c和Swift这两种与测试目标相同的开发语言,对于单元测试和性能测试已经具有很好的支持,值得深入学习研究。

关于XCTest和Xcode

在Xcode中,XCTest会自动链接所有新的测试目标(test target)

  • 快速开始, 从XCTest在Xcode5中被引入之初,为测试而配置工程的整个流程已经被简化和自动化了,在test navigator中可以很容易的启用和运行测试
  • 性能测试,Xcode6和其后的版本, 添加了能评估实际性能和基线(baseline)的测试
  • UI测试, Xcode 7 中添加了驱动应用UI的功能,包括录制UI交互到源文件然后转移到测试中.
  • 持续集成和Xcode Server. Xcode test可以直接使用命令行脚本执行,或者被配置为自动被运行着Xcode Server的Mac执行
  • Xcode包含了一个将具有OCUnit tests的工程迁移到XCTest tests的迁移器