執行 Robo 指令碼 (Android)

本文件將說明如何使用 Robo 指令碼,這類指令碼可為行動應用程式自動執行手動品質確保工作,並啟用持續整合 (CI) 和正式發布前測試策略。舉例來說,您可以使用 Robo 指令碼測試常見的使用者歷程,或是提供特定使用者介面 (UI) 輸入內容 (例如使用者名稱和密碼)。Robo 指令碼是 Robo 測試的一項功能,

使用 Robo 指令碼,錄製自己在應用程式中完成工作流程的流程,然後將記錄上傳至 Firebase 主控台,在 Robo 測試中執行。執行已附加指令碼的 Robo 測試時,Robo 會先執行預先編寫的動作,然後再照常探索應用程式。

Robo 指令碼使用 Robo 測試做為測試引擎。Robo 指令碼最基本的形式,是由一系列的 UI 動作組成,例如輸入文字「使用者名稱」,然後輕觸「確定」按鈕。Robo 指令碼也可以包含各種動作,例如等待元素顯示、輕觸元素內的特定時間點,以及執行 Android Debug Bridge (adb) 殼層指令。

與傳統測試架構相較,Robo 指令碼有下列優點:

功能 說明
高度完善 Robo 指令碼可以容許應用程式版本之間的重大結構和行為差異。
開放式 Robo 指令碼執行完畢後,基礎 Robo 測試便會接管並繼續測試應用程式。這種持續測試的做法可實現一些重要用途。舉例來說,您可以使用 Robo 指令碼執行自訂登入流程,讓應用程式進入特定狀態。
可記錄 因此您不必手動編寫 Robo 指令碼。你可以使用 Android Studio 中的 Robo 指令碼錄製工具錄製這些內容。建立或修改 Robo 指令碼時,通常無須具備行動應用程式的開發知識。
彈性 Robo 指令碼可以與遊戲中常見的非原生 UI 元素互動。

Robo 指令碼會在 Robo 測試期間有條件觸發,可讓使用者增強 Robo 的行為,一般來說是為了擴大涵蓋範圍或鎖定特定功能。相較於傳統測試架構,Robo 指令碼支援下列項目:

  • 各種觸發條件,例如特定應用程式套件名稱是否有效 (或未運作),或畫面上顯示的特定元素 (或不顯示)。
  • 執行控制項,例如執行作業數量上限、優先順序、相關檢索階段。
  • 非傳統的動作類型 (條件式、元素忽略、螢幕關閉)。

建議您盡可能使用 Robo 指令碼,因為這類指令碼可以輕鬆維護。舉例來說,您可以使用 Robo 指令碼執行以下作業:

  • 瀏覽重要工作流程,藉此瞭解應用程式功能的核心。舉例來說,您可以執行登入程序、在首次啟動後設定應用程式的狀態,以及註冊新使用者。
  • 請將 Robo 聚焦在應用程式的特定部分,充分運用 Robo 測試時間。Robo 指令碼會指示 Robo 測試前往應用程式的相關部分,讓 Robo 測試繼續執行全自動檢索作業。
  • 將應用程式帶入特定狀態或畫面來執行分析,例如分析應用程式內訊息、隱私權政策或遊戲的特定層級。
  • 執行端對端檢測設備測試,無論是否有 Robo 測試,都能在 Robo 指令碼完成後繼續進行全自動檢索。

使用更進階的 Robo 指令碼功能執行下列操作:

  • 請在 Robo 開始檢索應用程式的測試之前或檢索完成後執行特定操作,例如在檢索前清除應用程式之下的測試資料,或是變更裝置設定。
  • 變更檢索期間 Robo 行為的層面,特別是:
    • 讓 Robo 忽略部分 UI 小工具或應用程式畫面。
    • 提供針對從特定畫面進行返回追蹤時,供 Robo 執行的自訂動作。
    • 讓 Robo 在檢索期間遇到特定應用程式畫面時執行特定動作。
  • 完全自訂 Robo 檢索的方式。例如,使用條件式和非條件式動作的組合,在整個檢索期間讓應用程式持續在背景執行未經測試的應用程式,同時執行裝置操作,並關閉過程中顯示的任何彈出式對話方塊。

請注意,Robo 指令碼不會取代所有測試。您仍然需要單元測試來找出應用程式中的低層級邏輯錯誤,這些測試通常不需要 Android 或 iOS 環境。建議您使用指定目標檢測設備測試來補充 Robo 指令碼測試,而這些測試可以包含關於商業邏輯的具體、詳細斷言,這類測試最好在程式碼中表示。

在 Android Studio 中使用 Test Lab 錄製 Robo 指令碼

Android Studio 中的 Robo 指令碼錄製工具可讓您直接在裝置上與應用程式互動,藉此錄製 Robo 指令碼。請按照下列操作說明,透過 Android Studio 中的 Firebase 工具開始使用 Robo 指令碼:

  1. 開啟 Android Studio,然後依序選取「Tools」->「Firebase」

  2. 在「Firebase」窗格中,按一下「Record Robo Script and Use it to Guide Robo Test」

  3. 按一下「錄製 Robo 指令碼」。系統隨即會顯示「Select Deployment Target」對話方塊。

  4. 選取要錄製 Robo 指令碼的裝置。

  5. 在裝置上記錄 Robo 指令碼後,將檔案儲存為 JSON 檔案並放在所需位置。

  6. 開啟 Firebase 控制台中的 Test Lab 頁面,然後上傳 JSON 指令碼檔案和應用程式 APK。

  7. 點選「繼續」按鈕。系統會提示您選取裝置和 API 級別。測試指令碼完成後,Test Lab 會產生測試報告。

  8. (選用) 如要複製或下載測試報告和影片的 logcat,請按一下「View Source Files」

根據預設,Robo 指令碼的完善性機制不會提前失敗。如果選擇 strict 執行模式,且 Robo 指令碼在任何時間點失敗,Test Lab 都會放棄指令碼中的所有後續步驟,並繼續執行一般的 Robo 檢索作業。Robo 指令碼之所以失敗,通常是因為 Robo 在畫面上找不到必要的元素。為避免失敗,請確保應用程式導覽是可預測的,且畫面的顯示順序必須具有確定性。

在 Test Lab 中執行 Robo 指令碼

如要在 Test Lab 中執行 Robo 指令碼,請按照下列指示操作:

  1. 在 Firebase 控制台中開啟 Test Lab 頁面。

  2. 「應用程式 APK 或 AAB」欄位中上傳應用程式的 APK 或 AAB。

  3. 在「Robo 指令碼 (選用)」欄位中,上傳錄製或手動建立的 Robo 指令碼檔案。

提供 Robo 指令碼給本機 Robo 測試執行作業

如要為本機 Robo 測試執行作業提供 Robo 指令碼,請使用下列 Robo 測試選項:

--robo-script-file <robo-script-path>

<robo-script-path> 替換為本機檔案系統中 Robo 指令碼檔案的路徑。按照本機 Robo 測試執行作業的操作說明進行。

在 gcloud CLI 測試叫用中指定 Robo 指令碼

如要在 gcloud CLI 測試叫用中指定 Robo 指令碼,請使用下列 gcloud CLI 標記:

--robo-script = <robo-script-path>

使用 gs:// 標記法,將 <robo-script-path> 替換為本機檔案系統或 Cloud Storage 中 Robo 指令碼檔案的路徑。例如:

gcloud firebase test android run --app = <path_to_app_apk_file> --robo-script = <robo-script-path>

後續步驟