基于 KIF 的 iOS UI 自动化测试和持续集成

发表于:2017-03-10来源:美团点评技术团队作者:美团点评技术团队点击数: 标签:iOSKIF
iOS UI 自动化测试框架有不少,其中 UI Automation 是 Apple 早期提供的 UI 自动化测试解决方法,用 JavaScript 编写测试脚本,通过标签和值的可访问性获得 UI 元素,来完成相应的交互操作。

客户端 UI 自动化测试是大多数测试团队的研究重点,本文介绍猫眼测试团队在猫眼 iOS 客户端实践的基于 KIF 的 UI 自动化测试和持续集成过程。

一、测试框架的选择

iOS UI 自动化测试框架有不少,其中 UI Automation 是 Apple 早期提供的 UI 自动化测试解决方法,用 JavaScript 编写测试脚本,通过标签和值的可访问性获得 UI 元素,来完成相应的交互操作。

一些第三方 UI 解决方案以 UI Automation 为基础,对其进行补充和优化,包括扩展型 UI Automation 和驱动型 UI Automation。

  • 扩展型 UI Automation 采用 JavaScript 扩展库方法提高 UI Automation 的易用性,常见的框架有 TuneupJs、ynm3k。
  • 驱动型 UI Automation 在自动化测试底层使用了 UI Automation 库,通过 TCP 等通信方式驱动 UI Automation 来完成自动化测试。这种方式下,编辑脚本的语言不再局限于 JavaScript 。常见的框架有 iOSDriver、Appium。

还有一些其他的第三方解决方案,常见的框架类型有私有 API 型和注入编译型。

  • 私有 API 型框架直接使用 Apple 私有 API 对 UI 界面进行操作。常见的框架主要有 KIF。
  • 注入编译型框架在编译时注入一个 Server 到 App 内部,通过 Server 对外通信完成 UI 操作指令的执行。常见的框架有 Frank、Calabash。

Xcode 7发布后,Apple 提供了一种新的 UI 自动化测试解决方法——UI Testing,它基于 XCTest 测试框架,通过控件的可访问性来定位和获取控件,并提供了多种 UI 操作 API,使用源码语言,能方便地进行调试。
我们在以上分类中挑选具有代表性的自动化框架:UI Automation、Appium、KIF、Frank、UI Testing 进行对比,下表是这几种测试框架的特点对比:

原文转自:https://zhuanlan.zhihu.com/p/22283843