在 iOS 应用程序中测试动画视图:专家指导
已发表: 2023-03-20动画在应用程序 UI 的各种状态之间提供流畅的视觉交易。 在 iOS 应用程序开发中,动画用于重新定位视图或修改它们的大小,以及隐藏视图或从层次结构中删除视图。 动画在应用程序中实现惊人的视觉效果方面发挥着至关重要的作用。 它们还为用户的操作传达视觉反馈。 结果是为 iOS 应用程序用户提供了引人入胜的动态 UI 和提升的 UX。
动画视图是一种自定义视图,可以根据某些上下文更改其外观或外观。 例如,轮播布局有几张幻灯片,它们的大小和外观会根据用户的交互而改变。 然而,动画视图将按预期运行,并且只有在正确测试时才能提供令人惊叹的用户体验。 在 iOS 应用程序中测试动画视图具有挑战性,因为动画涉及 UI 中基于时间的修改。
这篇文章将指导您完成在 iOS 应用程序中测试动画视图的正确过程。
在 iOS 中测试动画视图的关键步骤
识别动画视图及其组件
动画视图是指具有动画行为或演示的视图。 它涉及不同的组件,例如图像、按钮、标签和 UI 的其他元素。 因此,开始在 iOS 中测试动画视图之前的第一步是识别动画视图及其组件。 您需要考虑以下因素。
- 确定您打算在应用程序中使用的动画类型,例如放大/缩小、淡入/淡出以及滑入/滑出。
- 设置动画的持续时间——动画完成所用的时间。 非常仔细地决定这个时间,因为它决定了你的动画效果。
- 确定将触发动画运行的特定用户交互或特定事件。 此类触发器的示例包括滚动和按钮点击。
- 检查动画工作或行为的准确性和精确度。
- 检查动画如何影响应用的 CPU、性能和内存使用。
- 考虑应用程序用户在动画期间和之后给出的反馈——视觉指示器或触觉反馈。
在软件开发项目中进行测试时,正确识别动画视图及其组件非常重要。 它可以帮助您将测试过程分解为更小且更易于管理的部分。
设置测试环境
您需要设置一个测试环境,使您能够检查视图并在动画的各个阶段操作它们。 以下是关键步骤。
首先,为每个组件创建一个单独的测试目标和单独的文件。 这样,您可以分别验证每个组件的预期行为。 要为您的测试环境创建单独的目标,请依次转到“文件”、“新建”和“目标”。 选择“测试”部分下的“iOS 单元测试包”。 创建了一个新目标。 您可以使用此目标为动画视图编写测试。 然后,为动画视图创建一个测试类。 此类应包含模拟动画过程的各个阶段并断言视图将按预期运行的测试用例。
现在,配置一个包含您要测试的视图的测试装置。 此步骤包括基本依赖项,例如数据源和视图模型。 您还需要为数据源和任何其他视图等依赖项设置模拟对象。 一旦完成,您就可以创建必要的测试数据。
上述步骤将帮助您在 iOS 应用程序开发期间为动画设置测试环境。 这将使您能够以受控和可重复的方式进行测试过程。
为 iOS 应用程序的底层逻辑编写单元测试
将动画分解成小组件,然后单独测试每个组件。 这种做法比一次性测试整个动画要好。 这是一个例子。 有一个自定义视图,在点击时会生成动画。 在这里,你需要检查当你点击它时视图是否发生变化,以及当你点击它时视图的颜色是否发生变化。 您还应该确保视图动画流畅,没有任何抖动。
接下来,确定动画中存在的组件。 为每个组件编写测试用例以验证组件是否按预期工作。 建议使用 Apple 提供的 XCTest 框架来编写此类测试。 例如,XCTestExpectation 允许您在进行任何断言之前等待动画完成。 使用此工具,您可以在动画的各个阶段测试视图的行为。
动画很可能具有依赖性,例如应用程序其他部分的其他视图或数据源。 因此,您需要隔离测试并提高它们的可靠性。 为此,您需要为依赖项使用模拟对象。 这样,您将能够测试应用程序的动画逻辑,而不必担心 iOS 应用程序的其他部分。
使用 Xcode 中内置的动画调试工具进行调试
Xcode 附带了范围广泛的内置调试工具,有助于调试动画。 此类工具可帮助您了解动画的运作方式并识别错误。 借助这些工具,您可以执行一些操作,例如在代码中设置断点以在特定点暂停动画,以便您可以调查视图的状态。 因此,您可以识别代码中存在的影响动画功能的逻辑错误。
该工具的 Debug View Hierarchy 可帮助您在动画期间检查视图。 您将能够在动画的不同阶段看到视图的属性,包括约束、帧等。Xcode 提供了另一个很棒的工具,调试内存图。 此工具检查动画期间视图的内存使用情况,并帮助您识别内存泄漏等性能问题。 Xcode 工具的其他一些示例包括动画视图层次结构检查器、时间分析器和慢速动画模拟器。
在 iOS 中测试动画视图有哪些不同的方法?
查看各种测试方法。 这些测试技术中的每一种都在确保严格测试动画视图方面发挥着至关重要的作用。
异步测试
动画涉及异步发生的延迟或回调。 正因为如此,您需要在测试动画视图的同时进行异步测试。 查看异步测试的步骤。
步骤1
使用 XCTestExpectation,这是 iOS XCTest 框架中可用的内置工具。 使用此工具,您需要为异步事件创建预期。 为事件设置超时间隔。 一旦您为动画的完成创建预期并建立超时间隔,如果预期未实现,测试将失败。 这是一个例子。
let animationExpectation = XCTestExpectation(description: “动画完成”)
// 在这里开始动画代码
// 动画完成后,实现期望
动画完成处理程序 = {
animationExpectation.fulfill()
}
// 等到期望得到满足
等待(对于:[animationExpectation],超时:5)
第2步
多个 iOS 动画 API 包含在动画完成后调用的完成处理程序。 测试人员使用这些完成处理程序在动画完成后进行测试。 看看这个例子。
// 在这里开始动画代码
// 在动画结束时,执行测试
动画完成处理程序 = {
// 在这里进行测试
}
步骤#3
某些动画可能涉及修改 UI 的状态; 这需要在主线程上执行。 在这里,您必须使用调度队列。 这样,您就可以在动画结束后在主线程上执行测试代码。 看看它是如何发生的。
// 在这里开始动画代码
// 在动画结束时,在主队列上执行测试
动画完成处理程序 = {
DispatchQueue.main.async {
// 在这里进行测试
}
}
手动测试
确保您在模拟设备和真实设备上都进行了测试。 您需要此过程来检查动画是否会在各种设备和操作系统版本上按预期运行。
手动测试涉及手动与视图交互并观察动画的行为方式。 手动测试就是这样进行的。 测试人员在设备或 iOS 模拟器中运行 iOS 应用程序。 然后,他们通过与应用程序交互手动触发动画。 通过这种方式,您可以找到有关动画问题的更多信息,例如意外行为或其运行中的任何故障。 请记住,动画的行为在不同的设备和模拟器上可能会有所不同,因此请在不同的环境中测试动画视图以获得最佳结果。
我们还建议您与真实用户一起测试动画视图,并观察他们如何与动画交互。 您可以通过运行可用性测试会话或用户研究来做到这一点。 这样,您将收到有关 iOS 应用程序动画的急需用户反馈、发现问题并及时解决。
自动化测试
使用 EarlGrey、XCUITest 或 KIF 等测试框架为动画视图创建自动化测试,以模拟用户交互并检查动画是否按预期运行。 自动化测试可帮助您在开发周期的早期阶段检测问题。 这种测试方法还允许您在修改代码时保持动画功能。
查看有关如何使用 XCUITest 工具测试动画视图的步骤。
步骤1
识别包含需要测试的动画的视图。 接下来,确定触发动画的用户交互。
第2步
编写一个模拟用户交互以触发动画的测试用例。 例如,如果通过按下按钮触发动画,则需要创建一个测试用例来点击该按钮。
步骤#3
触发动画后,使用断言验证动画的行为。 例如,在动画发生时检查视图的大小、位置和容量。
步骤4
现在,使用不同的场景(例如不同的动画或不同的用户输入)重复上述步骤。
看看这个例子。 在这里,XCUITest 用于为“按钮”动画创建测试用例。
func testButtonAnimation() {
让 app = XCUIApplication()
应用程序启动()
让按钮 = app.buttons[“myButton”]
按钮.tap()
// 验证动画
let animationExpectation = expectation(description: “按钮动画完成”)
DispatchQueue.main.asyncAfter(deadline: .now() + 1.0) {
XCTAssertTrue(button.frame.origin.x > 0, “按钮在动画期间应该向右移动”)
animationExpectation.fulfill()
}
waitForExpectations(超时:2.0,处理程序:无)
}
总结意见
测试动画视图有时会变得棘手,因为它涉及动态和视觉变化。 因此,您需要按照最佳实践和策略测试 iOS 应用程序的动画视图。 您可以向专门从事 iOS 应用程序开发的专业移动应用程序开发服务寻求技术帮助。 这将使您能够正确地进行应用程序开发和测试过程。