在 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 應用程序開發的專業移動應用程序開發服務尋求技術幫助。 這將使您能夠正確地進行應用程序開發和測試過程。