Check out what’s new from Firebase at Google I/O 2022. Learn more

開始使用 Robo 測試

Robo 測試是與 Firebase 測試實驗室集成的測試工具。 Robo 測試分析應用程序 UI 的結構,然後有條不紊地探索它,自動模擬用戶活動。與UI/Application Exerciser Monkey測試不同,當您使用 Robo 測試在具有相同設置的特定設備配置上測試應用程序時,它總是以相同的順序模擬相同的用戶活動。這使您可以使用 Robo 測試來驗證錯誤修復並測試回歸測試,而這在使用UI/Application Exerciser Monkey test 進行測試時是不可能的。

Robo 測試捕獲日誌文件,保存一系列帶註釋的屏幕截圖,然後從這些屏幕截圖中創建一個視頻,向您展示它執行的模擬用戶操作。這些日誌、屏幕截圖和視頻可以幫助您確定應用崩潰的根本原因,還可以幫助您查找應用 UI 的問題。

Robo 測試抓取統計信息

為了幫助您解釋 Robo 測試結果,Robo 會在每次測試爬網期間記錄統計信息。測試實驗室在測試結果頁面的 Robo 選項卡頂部顯示統計信息:

  • Actions:爬取期間執行的操作總數,包括 Robo 腳本操作、猴子操作和 Robo 指令。
  • 活動:爬網期間涵蓋的不同活動的數量。
  • 屏幕:在抓取期間訪問的不同屏幕的數量。

測試實驗室還使用統計數據以爬網圖的形式創建 Robo 爬網的可視化表示。該圖以屏幕為節點,以動作為邊。通過跟踪屏幕之間的邊緣,您可以了解 Robo 在整個爬網過程中是如何遍歷您的應用程序的。

機器人測試超時

根據應用程序 UI 的複雜性,Robo 測試可能需要五分鐘或更長時間才能完成一組完整的 UI 交互。對於大多數應用程序,我們建議將測試超時設置為至少 120 秒(2 分鐘),對於中等複雜的應用程序,建議設置為 300 秒(5 分鐘)。對於從 Android Studio 和 Firebase 控制台運行的測試,超時的默認值為 300 秒(5 分鐘),對於從gcloud命令行運行的測試,超時的默認值為 900 秒(15 分鐘)。

應用啟動超時錯誤

如果您的應用需要很長時間才能啟動,Robo 可能會拋出錯誤,並且無法抓取您的應用。這僅在啟動時間極長的情況下才會發生,並且只能通過修改您的應用程序以使其啟動更快來解決。

使用 Robo 腳本進行更多控制

有時您需要對測試進行更多控制。例如,您可能想要測試常見的用戶旅程或提供特定的 UI 輸入,例如用戶名和密碼。 Robo 腳本可以提供幫助。

使用 Robo 腳本,您可以記錄自己在應用程序中的工作流程,然後將該記錄上傳到 Firebase 控制台以在 Robo 測試中運行。當您在附加腳本的情況下運行 Robo 測試時,Robo 首先會逐步執行您預先編寫好的操作,然後像往常一樣繼續探索應用程序。

通過 Android Studio 中的 Firebase 工具開始使用 Robo 腳本:

  1. 打開安卓工作室。
  2. 在主菜單中,選擇工具> Firebase
  3. 選擇Test Lab並單擊Record Robo Script 並使用它來指導 Robo 測試
  4. 按照工具中的其餘步驟記錄您的 Robo 腳本。
  5. 將該 Robo 腳本上傳到測試實驗室並開始您的測試。

機器人腳本錯誤

如果 Robo 腳本在任何時候失敗,測試實驗室將放棄腳本中的所有進一步步驟,並恢復常規的 Robo 爬網。大多數情況下,Robo 腳本會失敗,因為測試實驗室無法在屏幕上找到必要的元素。為避免失敗,請確保您的應用導航是可預測的,並且您的屏幕不會以某種不確定的順序顯示。

Robo 測試和非 Android UI 小部件

Robo 測試使用 Android API 直接對 Android UI 小部件執行操作。這有助於測試自動探索您的 UI,但也意味著他們需要能夠為屏幕提取 Android UI 層次結構以便在其上運行測試。

如果您的應用程序中的屏幕不使用 Android UI 小部件,Robo 測試會使用 Monkey Actions 來測試該屏幕。與更有條理的 Robo 動作不同,Monkey Actions 只是模擬設備屏幕上半隨機位置上的點擊事件。

為了更好地測試不使用 Android UI 小部件的屏幕,您可以通過Firebase 測試實驗室遊戲循環測試將 Monkey Action 的任意點擊替換為一組腳本點擊和交互。

與 Google Play 集成

當您使用 alpha 或 beta 通道上傳和發布應用的 APK 文件時,您可以在 Google Play Console 中使用 Robo 測試。 Robo 測試在一組來自不同地理位置的流行物理設備上運行,提供跨各種外形尺寸和硬件配置的測試覆蓋率。要了解更多信息,請參閱使用發布前報告來識別問題

測試帳戶登錄和預定義的文本輸入

Robo 測試支持測試帳戶登錄,還允許您在應用程序的字段中輸入預定義的文本。對於自定義登錄和其他預定義的文本輸入,Robo 測試可以將文本輸入到您應用中的EditText字段中。對於每個字符串,您需要使用 Android 資源名稱來標識EditText字段。要了解更多信息,請參閱訪問資源

登入

Robo 測試有兩種互斥方式來支持登錄:

  • 自定義登錄:如果您提供測試帳戶憑據,您需要告訴 Robo test 在哪裡輸入它們,並提供這些憑據。
  • 自動登錄:如果您的應用具有使用 Google 帳戶進行身份驗證的登錄屏幕,則 Robo 測試將使用 Google 測試帳戶,除非您提供用於自定義登錄的測試帳戶憑據。

要為自定義登錄提供測試帳戶憑據,請執行以下操作:

  1. 選擇維度頁面上,選擇其他選項
  2. Test account credentials (Optional)下,輸入用戶名和密碼資源名稱以及測試帳戶的用戶名和密碼。

預定義文本輸入

您可以為您的應用程序使用的其他文本字段提供自定義輸入文本。要為其他字段提供文本輸入,請執行以下操作:

  1. 選擇維度頁面上,選擇其他選項
  2. Additional fields (Optional)下,輸入一個或多個資源名稱,以及要在相應文本字段中輸入的字符串。

預定義的文本輸入錯誤

Robo 搜索具有與提供的正則表達式匹配的 Android 資源名稱的EditText字段。如果 Robo 找不到匹配的字段,它不會輸入您的文本,但會像往常一樣繼續爬行。

您最多可以提供三個您的應用支持的深層鏈接進行測試。深層鏈接作為 Android ACTION_VIEW發送到您的應用。因此,每個鏈接都必須匹配您應用中的意圖過濾器。

如果提供了一個或多個深層鏈接,應用程序首先正常啟動(使用ACTION_MAIN意圖)並爬到指定的超時。在主爬網之後,每個深度鏈接都會額外爬網 30 秒。

如果 Robo 找不到與您的深層鏈接匹配的活動,測試實驗室會忽略該鏈接。深層鏈接問題通常是由於提供的深層鏈接與其在您的應用程序中的定義之間存在差異造成的。檢查提供的 URL 和您的應用程序是否存在拼寫錯誤或其他不一致的地方。

應用許可支持

測試實驗室支持使用 Google Play 提供的應用許可服務的應用。要在使用 Test Lab 測試您的應用程序時成功檢查許可,您必須將您的應用程序發佈到 Play 商店的生產渠道。要使用測試實驗室在 Alpha 或 Beta 通道中測試您的應用,請在將您的應用上傳到測試實驗室之前刪除許可檢查。

已知的問題

Robo 測試目前具有以下已知限制:

  • UI 框架支持。 Robo 測試僅與使用 Android UI 框架中的 UI 元素(包括ViewViewGroup對象,但不包括WebView對象)的應用兼容。如果您使用 Robo 測試來測試使用其他 UI 框架的應用程序,包括使用 Unity 遊戲引擎的應用程序,則測試可能會退出而不會超出第一個屏幕。
  • 登錄驗證碼。 Robo 測試無法繞過除了輸入憑據以登錄(例如完成驗證碼)之外需要額外用戶操作的登錄屏幕。