使用 Espresso Test Recorder 建立 UI 測試

您可以透過 Espresso Test Recorder 工具為應用程式建立 UI 測試,無須另外寫程式碼來測試。藉由記錄測試情境,您可以記錄與裝置的互動,然後在應用程式特定快照中,新增用來驗證 UI 元素的宣告。接下來,Espresso Test Recorder 會擷取儲存的記錄,並自動產生相對應的 UI 測試,供您測試應用程式。

Espresso Test Recorder 會依據 Espresso Testing 架構 (AndroidX Test 的一項 API) 編寫測試。Espresso API 建議您以使用者行為為基準,才能寫出簡潔可靠的 UI 測試。這種架構透過表達期望、互動和宣告,且不需直接存取基礎應用程式的活動與檢視資料,就能讓您避免片面測試,並改善測試執行速度。

關閉測試裝置上的動畫

使用 Espresso Test Recorder 前,請務必關閉測試裝置上的動畫,以避免非預期的結果。按照「單一應用程式測試 UI 」(Testing UI for a Single App)頁面上的「設定 Espresso」(Set Up Espresso) 指示進行操作,但無須手動設定 Espresso 程式庫的參考依附元件,因為儲存記錄時,Test Recorder 會自動設定。這些步驟在特定專案中只需執行一次。

記錄 Espresso 測試

Espresso 測試包含兩個主要元件:畫面元素的 UI 互動和宣告。UI 互動包括使用者與應用程式互動的行為,如輕觸和輸入,而宣告可驗證螢幕上是否有視覺元素存在。以「記事本」測試應用程式的 Espresso 測試為例,測試內容可能包含使用者介面互動,例如按一下按鈕並撰寫新記事,但 Espresso 可能會使用宣告,以驗證是否存在按鈕和記事內容。

本節將說明如何使用 Espresso Test Recorder 編寫這兩個測試元件,以及如何儲存已完成的記錄,進而產生測試。

記錄 UI 互動情形

如要記錄測試,請按照下列步驟使用 Espresso Test Recorder:

  1. 依序點選「執行」(Run)>「記錄 Espresso 測試」(Record Espresso Test)
  2. 「選取部屬目標」(Select Deployment Target) 視窗中,選擇要用來記錄測試的裝置。如果您有需要,可以建立新的 Android 虛擬裝置。然後,請按一下「確定」
  3. Espresso Test Recorder 會觸發您的專案版本,您必須先安裝並啟用應用程式,Espresso Test Recorder 才會讓您與其互動。應用程式啟動後,會顯示「記錄您的測試」(Record Your Test) 視窗,由於您尚未與裝置互動,主面板會顯示「尚未記錄任何事件」。請與您的裝置互動,Espresso 就會開始記錄事件,例如「輕觸」和「輸入」。

注意:開始記錄互動事件前,您在裝置上可能會看到對話方塊,訊息顯示為「正在等待偵錯工具」或「正在連接偵錯工具」。Espresso Test Recorder 使用偵錯工具記錄 UI 事件。連接上偵錯工具時,對話方塊會自動關閉;請勿按下「強制關閉」(Force Close)

「記錄您的測試」(Record Your Test) 視窗中的主面板,會顯示記錄的互動,如圖 1 所示。執行測試時,Espresso 會以相同順序執行這些動作。

圖 1 「記錄您的測試」(Record Your Test) 視窗顯示記錄的 UI 互動。

新增宣告以驗證 UI 元素

如要驗證畫面元素內容是否相符或存在,主要有三種宣告類型:

  • 文字 (text is):檢查所選畫面元素的文字內容
  • 存在 (exists):檢查顯示在螢幕上,目前「檢視」階層的畫面元素
  • 不存在 (does not exists):檢查未顯示在螢幕上,目前「檢視」階層的畫面元素

如要新增宣告至測試,請按照下列步驟操作:

  1. 按一下「新增宣告」(Add Assertion)。畫面上會顯示「螢幕截圖」 (Screen Capture) 對話方塊,而 Espresso 會取得 UI 階層,以及目前應用程式狀態的其他資訊。一旦 Espresso 擷取螢幕擷圖後,對話方塊就會自動關閉。
  2. 「記錄您的測試」(Record Your Test) 視窗右側面板會顯示目前畫面的版面配置。如要建立宣告,請點選螢幕截圖中的畫面元素,或使用視窗底部「編輯宣告」(Edit assertion) 方塊中第一個下拉式選單。所選的「檢視」物件會以紅色方塊醒目顯示。
  3. 「Edit assertion」(編輯宣告) 方塊的第二個下拉式選單中,選取要使用的宣告。Espresso 會在選單中填入所選檢視畫面元素的有效宣告。
    • 如果您選擇「文字」宣告,Espresso 會自動插入目前所選畫面元素內的文字。您可以使用「Edit assertion」(編輯宣告) 方塊中的文字欄位,將宣告內容修改成想要的文字。
  4. 按一下「Save and Add Another」(儲存並新增其他項目) 建立其他宣告,或按一下「Save assertion」(儲存宣告) 關閉宣告面板。

圖 2 的螢幕截圖顯示正在建立一則「文字」宣告,用以驗證附註的標題是「Happy Testing!」:

圖 2 選取「畫面」元素後 (已標示紅色),按一下「Edit assertion」(編輯宣告) 方塊。

建立宣告時,即使宣告面板在「Record Your Test」(記錄您的測試) 視窗中開啟,您依舊可以繼續與應用程式互動。Espresso Test Recorder 會持續記錄您的動作,而您目前編輯的宣告會在儲存後,在互動之前顯示。宣告的螢幕截圖也會保留裝置或模擬器在按下「新增宣告」(Add Assertion) 按鈕當時的版面配置。

儲存記錄

完成與應用程式互動並新增宣告後,請按照下列步驟儲存記錄並產生 Espresso 測試:

  1. 按一下「完成記錄」(Complete Recording)。系統會隨即顯示一個視窗,您可以為自己的測試挑選類別名稱
  2. Espresso Test Recorder 會根據已啟動的活動,在其測試套件中建立不重複的命名。如要變更建議名稱,請使用測試類別名稱的文字欄,以進行修改。接著,請按「儲存」
    • 如果應用程式尚未加入 Espresso 依附元件,那麼儲存測試時,會顯示「缺少 Espresso 依附元件」對話方塊。按一下「是」,系統會自動將依附元件新增到您的 build.gradle 檔案中。
  3. Espresso Test Recorder 產生檔案後會自動開啟,而 Android Studio 會在 IDE 專案視窗顯示所選測試的類別。
    • 測試的儲存位置,取決於檢測設備測試根目錄,以及已啟動活動的套件名稱。舉例來說,「記事本」測試應用程式的測試,會儲存在記錄測試的應用程式模組資料夾 src >Android 測試 >Java >com.<範例>.<使用者名稱>.<應用程式名稱>

在本機執行 Espresso 測試

如要執行執行 Espresso 測試,請使用 Android Studio IDE 左側的專案視窗:

  1. 開啟欲使用的應用程式模組資料夾,然後前往您要執行的測試項目。測試的位置取決於檢測設備測試的根目錄,以及已啟用活動的套件名稱。下面以「記事本」測試應用程式為例,可看出測試儲存的位置:
    • 如果您在視窗中使用 Android 檢視表,請前往 Java >com.<範例>.<使用者名稱>.<應用程式名稱>(androidTest)
    • 如果您在視窗中,使用「專案」檢視模式,請前往模組資料夾,找到 src>androidTest>java>com.<範例>.<使用者名稱>.<應用程式名稱>
  2. 以滑鼠右鍵點擊測試,然後按一下執行「測試名稱」
    • 您也可以開啟測試檔案,然後在產生的測試類別或方法上,按一下滑鼠右鍵。如要進一步瞭解如何執行測試,請參閱「測試應用程式」頁面。
  3. 「選取部署目標」(Select Deployment Target) 視窗中,選擇要執行測試的裝置。如果您有需要,可以建立新的 Android 虛擬裝置。然後,請按一下「確定」

如要監控測試進度,可在 IDE 底部的「執行」視窗查看。Android Studio 會執行專案的完整版本,並在「執行」視窗中,開啟含有測試名稱的分頁,如圖 3 所示。您可以查看這個分頁中的測試是否通過,以及測試的執行時間。測試完成後,分頁會記錄「已完成測試」(Test ran to completion)。

圖 3 在本機執行 Espresso 測試後,範例會在「執行」視窗中輸出結果。

如要瞭解如何編寫執行設定的測試,請參閱「建立及編輯執行/偵錯設定」中,關於「類別或方法的測試設定」環節。

使用 Android 版 Firebase Test Lab 執行 Espresso 測試

您可以使用 Espresso Test Recorder 自動產生的測試,搭配 Firebase Test Lab,在雲端測試數百種裝置設定。如您持有 Spark 方案的每日免費配額,便可無償使用 Test Lab 進行應用程式測試。如要透過 Firebase Test Lab 執行 Espresso 測試,請為應用程式建立 Firebase 專案,然後跟著指示,在 Android Studio 中,使用 Firebase Test Lab 執行測試

圖 4 使用 Firebase Test Lab 在多部裝置上執行測試後,範例在「執行」視窗中輸出結果。