iOS 自动化测试 Xcode UI框架
使用 iOS 自动化测试 Xcode
为了保证 iOS 应用的质量,您应该遵循下图所示的测试驱动开发流程。
测试驱动开发 (TDD) 是一种 测试 该模型应用于 iOS 应用测试,并且属于更广泛的实践范畴。 移动测试在此模型中,测试人员必须遵循以下 4 个阶段:
- 设计: 确定你想测试的内容,并设计测试用例。
- 测试: 运行所有测试,查看是否有任何测试用例失败。
- 实行: Rev检查你的代码,修复导致测试失败的错误。
- 再次测试: 如果测试失败,则回滚到原始设计。如果所有测试用例都通过,则代码满足所有测试要求。
配置 Xcode UI 测试项目
要创建 iOS 测试程序,您需要一台 Mac 电脑。您的 Mac 电脑必须已安装以下软件:
- OS X — Mac 操作系统。
- Xcode IDE — iOS 开发工具。
- 自动化测试框架 — UI Automation、OCUnit 等。
- iOS SDK 4 或更高。
⚠️ 版本说明: 以上前提条件描述的是编写以下两篇教程时所使用的工具链。在当前的Mac电脑上, Xcode 软件包中已包含 XCTest 和 XCUITest 框架,单独的 UI 自动化工具不再包含在安装包中。以下保留了原始步骤,因为它们记录了框架的工作原理,而现代的等效步骤将在下文中介绍。
如何使用 UI 自动化框架创建 iOS 自动化
以下八个步骤使用自动化工具录制脚本,并针对被测应用程序重放该脚本。
步骤 1)启动仪器
打开XCode -> 打开开发者工具 -> 检测
步骤2)添加自动化仪器
在“仪器”窗口中,选择“自动化”仪器。
要创建测试脚本,您可以录制一段视频。 测试场景 或者你可以手动编程。
步骤 3)按红色按钮
乐器正在启动——请立即停止录音。如需开始录音,请按红色按钮。
步骤 4)创建新脚本
在“脚本”窗口中,单击“添加”>“创建”以创建新脚本。
步骤 5)选择目标
你现在位于 Trace 窗口。使用“选择” Target 下拉即可导航至应用程序的调试版本。
在这种情况下,苹果公司的样本 简单钻取 该应用程序被用作测试应用程序。它的图形用户界面如下所示。
步骤 6)开始录制脚本
点击工具顶部或底部的录制按钮来录制您的脚本。
现在您可以对被测应用程序执行一些 UI 操作,并且您的脚本将被录制下来。
步骤 7)查看脚本
要查看脚本,请点击 Trace 日志/编辑器日志下拉菜单,切换到脚本日志视图。
您将看到您录制的脚本。
步骤 8)播放脚本
按下播放按钮。脚本开始运行,日志显示完毕后即可停止。
⚠️ 历史注释: 这八个步骤中使用的自动化工具已弃用。 Xcode 8 及之后版本已移除,因此当前版本中不再包含此功能。 Xcode 安装步骤。此处保留这些步骤作为框架工作原理的记录;对于新的工作,请使用本页下方的 XCUITest 演练。
如何使用 OCUnit 框架创建 iOS 自动化
第二种方法将测试放在内部 Xcode 投影本身而不是在 Instruments 内部。
步骤 1)开始 Xcode IDE,添加单元测试包目标
步骤 2)编写新的单元测试包的名称 如图所示,然后单击“完成”。
步骤 3)将单元测试设为活动目标
步骤 4)添加测试类组
步骤5)添加单元测试类
步骤 6)现在开始实施
OCUnit 使用 Objective-C 语言创建测试程序,因此开发人员必须了解该语言。 Xcode 版本发货 单元测试 而是通过 XCTest 来代替,它同时支持 Objective-C 和 Swift但是,这六个步骤中显示的目标和类别结构并没有改变。
UIAutomation 与 XCUITest:有哪些变化?
由于上面使用的两个框架都属于早期版本的 Apple 工具链,因此有必要明确说明是什么取代了它们以及为什么。
| 方面 | UI自动化(工具) | XCUI测试 |
| 状态 | 已弃用 Xcode 8,并从后续版本中移除 | 苹果支持的 UI 测试框架 |
| 测试地点 | Instruments 内部的脚本 trac电子文档 | UI 测试包目标位于 Xcode 项目 |
| 语言 | JavaScript | Swift 或 Objective-C |
| 测试运行员 | 自动化仪器 | XCTest 与单元测试使用相同的运行器 |
| 持续集成 | 尴尬——通过乐器驱动 | 与单元测试一起从命令行运行 |
| 录音 | 仪器工具栏中的“录制”按钮 | 录制按钮 Xcode 编辑器,它发出 Swift |
实际结果是,XCUITest 测试套件与普通的项目源代码一样,需要像代码库的其他部分一样进行审查、版本控制和执行,这也是为什么录制的测试套件具有以下特点:trace 型号消失了。
如何使用 XCUITest 编写 iOS UI 测试
现代的八个乐器步骤的等效方法很简短。下面的结构反映了相同的录制然后回放的思路,但输出是源文件而不是…… trace.
- 添加目标。 In Xcode 选择“文件”>“新建”> Target 然后选择 UI 测试包模板,或者在创建新项目时勾选包含测试的选项。
- 打开生成的测试类。 Xcode 创建一个 XCTestCase 子类,其中包含空的 setup 和 test 方法。
- 启动被测应用。 创建一个 XCUIApplication 实例并调用 launch 方法,这将在单独的进程中启动应用程序。
- 查询并采取行动。 通过元素查询访问元素(按钮、表格、静态文本),并调用 tap、typeText 或 swipe 操作。
- 断言。 使用 XCTAssert 验证操作后预期元素是否存在。
- 跑。 从以下位置执行测试: Xcode 测试导航器,或者从命令行运行,以便在持续集成中运行相同的测试套件。
一个最简测试遵循以下形式:
import XCTest final class AppUITests: XCTestCase { func testTappingFirstRowShowsDetail() { let app = XCUIApplication() app.launch() // act on the first row of the list app.tables.cells.element(boundBy: 0).tap() // verify that the next screen appeared XCTAssertTrue(app.staticTexts.firstMatch.waitForExistence(timeout: 5)) } }
录制器仍然存在:将光标放在测试方法内,然后在编辑器中按下录制按钮,即可自动生成这些查询,这是上述步骤 6 的直接衍生。更广泛的原则是 自动化测试 直接应用,无需修改。
UI自动化示例 Code
本文包含一些源代码示例,可以帮助您更清晰、更快速地理解教程内容。
UI自动化示例 — UI自动化演示的测试脚本。















