本指南說明如何使用 的 Firebase Test Lab。如要使用本指南,你需要 檢測設備測試 (由您或您的團隊撰寫) 採用 Espresso 或 UI Automator Android 測試架構。檢測設備測試最多可以執行 45 花在實體裝置上提高分鐘數,虛擬裝置則為 60 分鐘。
在後續步驟中,您會將應用程式 APK 和測試 APK 上傳至 Firebase。
(選用) 在應用程式中加入螢幕截圖資料庫
Firebase Test Lab 包含一個程式庫 (testlab-instr-lib),您可以
用於處理您使用 AndroidX 的
螢幕畫面擷取
執行檢測設備測試時,例如使用
Espresso 測試架構。
本節說明如何使用 AndroidX 程式庫建立 ScreenCapture
物件,以及如何使用 testlab-instr-lib 處理這些物件。
檢測設備測試執行後,即可查看擷取的螢幕截圖 ,Firebase。
試用範例應用程式
下載 NotePad 範例應用程式 試用這項功能現在可以拍攝螢幕截圖 已整合至 NotePad 專案
步驟 1:將螢幕截圖程式庫新增至專案
在測試專案的根層級設定 Gradle 檔案中 (
settings.gradle.kts
或settings.gradle
),新增 Google 的 Maven 存放區 每個repositories
區段:pluginManagement { repositories { // Add the following line: google() // Google's Maven repository mavenCentral() gradlePluginPortal() } } dependencyResolutionManagement { repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS) repositories { // Add the following line: google() // Google's Maven repository mavenCentral() } } // ...
在「module (應用程式層級)」Gradle 檔案中 (通常是
<project>/<app-module>/build.gradle.kts
或<project>/<app-module>/build.gradle
),請新增 Test Lab 張螢幕截圖庫。dependencies { // ... // Add Test Lab's instrumentation test screenshot library: androidTestImplementation("com.google.firebase:testlab-instr-lib:0.2") // ...
在測試的
AndroidManifest.xml
檔案中,註冊FirebaseScreenCaptureProcessor
<instrumentation>
元素。您也可以將處理器指定為 請改用 AndroidJUnitRunner 中的引數 (請參閱 AndroidJUnitRunner 參考文件 )。<instrumentation // Check that you have the following line (if not, add it): android:name="androidx.test.runner.AndroidJUnitRunner" // Specifies AndroidJUnitRunner as the test runner android:targetPackage="com.your.package.name"> // Add the following: <meta-data android:name="screenCaptureProcessors" android:value="com.google.firebase.testlab.screenshot.FirebaseScreenCaptureProcessor" /> </instrumentation> ...
在應用程式的
AndroidManifest.xml
檔案中,於<manifest>
元素:<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
在
AndroidManifest.xml
檔案中,請在<manifest>
標記中新增下列行,為應用程式指定系統權限。如果您在 Android 10 (API 級別 29) 以上版本進行測試,請省略WRITE_EXTERNAL_STORAGE
權限 (應用程式不需要此權限即可讀取及寫入裝置的螢幕截圖)。<manifest ... > <!-- WRITE_EXTERNAL_STORAGE is not needed on Android 10 (API level 29) or higher. --> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> <uses-permission android:name="android.permission.INTERNET"/> ... </manifest>
步驟 2:在測試期間擷取螢幕截圖
在測試中任何您想要擷取螢幕截圖的位置,呼叫
Screenshot.capture()
方法。這會產生
ScreenCapture
物件。
針對 ScreenCapture
物件呼叫 process()
時,系統會處理
使用 ScreenCaptureProcessor 操作
您在 AndroidManifest.xml
中註冊的號碼。請注意,
如果未註冊任何處理方,系統會使用 BasicScreenCaptureProcessor
。
你註冊了「FirebaseScreenCaptureProcessor
」,因此螢幕截圖將
將透過「FirebaseScreenCaptureProcessor
」處理,完成後即可使用
但使用 Firebase Test Lab 進行測試,即可獲得更好的結果。
建立 ScreenCapture
的用途範例:
在 API Build.VERSION_CODES.JELLY_BEAN_MR2 以上版本中擷取全螢幕畫面:
Screenshot.capture()
在任何 API 級別上取得 Activity 的
ScreenCapture
。請注意,這是 僅適用於 Build.VERSION_CODES.JELLY_BEAN_MR2 的裝置。@Rule public ActivityTestRule<MainActivity> activityRule = new ActivityTestRule<>(MainActivity.class); ... Screenshot.capture(activityRule.getActivity()); ...
處理 ScreenCapture 的用途範例
透過
FirebaseScreenCaptureProcessor
處理ScreenCapture
:Screenshot.capture().process();
透過指定的
ScreenCaptureProcessor
處理ScreenCapture
(這可讓您略過註冊處理器的步驟):Set<ScreenCaptureProcessor> processors = new HashSet<>(); processors.add(new FirebaseScreenCaptureProcessor()); Screenshot.capture().process(processors);
設定
ScreenCapture
的名稱和格式,然後使用已註冊的處理器處理:Screenshot.capture().setName("myscreenshot").setFormat(CompressFormat.JPEG).process();
步驟 3:建立並執行測試
建構應用程式並測試 APK (請參閱「測試應用程式」一文瞭解相關操作說明)。
將 APK 檔案上傳到 Test Lab 資訊主頁 Firebase 控制台。
最後,請執行測試。
步驟 4:查看測試螢幕截圖
測試完成後,您可以在 Firebase 主控台中查看所有擷取的螢幕截圖。
在「測驗」分頁中選取已完成的測驗,然後按一下「結果」分頁。
再次選取測試,然後按一下顯示的「螢幕截圖」分頁標籤。
(選用) 啟用其他測試功能
您可以先在測試中啟用下列功能,再使用 Test Lab:
啟用 Orchestrator
Android Test Orchestrator 是一項工具,可獨立執行應用程式的每項檢測設備測試。 Test Lab 一律使用最新版的 Orchestrator。
如何在 檢測設備測試中為 Test Lab 啟用 Orchestrator 設定 按一下「其他選項」>使用 Orchestrator 執行。
使用 Orchestrator 時,您可以享有下列好處:
- 沒有共用狀態。每項測試都會在自己的檢測作業例項中執行,因此共用狀態不會在測試之間累積。
- 隔離的當機問題。如果測試發生異常,系統只會終止該檢測作業,套件中的其他測試仍可正常執行。
請注意,使用 Orchestrator 時,每項測試都會各自執行 檢測執行個體,這代表應用程式程序會在 處理所有測試案例如果執行時間增加 配額用量或計費時間, 導致裝置用量超過逾時限制。如果您將應用程式的 這類負擔就會縮短。
如要為 Orchestrator 設定其他選項,請透過以下項目指定:
environmentVariables
欄位。舉例來說,如要使用 clearPackageData
,請使用
gcloud 中的選項:
--environment-variables clearPackageData=true
啟用分割
測試資料分割會將一組測試分成多個執行中的子群組 (資料分割) 然後單獨使用Test Lab 會自動同時執行每個資料分割 而且您在更短的時間內完成整組測試。
舉例來說,如果您為每部所選裝置建立 N 個資料分割,Test Lab 會啟動 N 個資料分割 並在每部裝置上執行部分測試。也就是說 建立資料分割測試案例,可能會在每部裝置上產生多次測試執行。 然而,未經資料分割的測試案例,每 1 個測試案例可執行一次 裝置。如要瞭解 Test Lab 概念,請參閱: 重要概念。
如要在 Firebase 控制台中啟用測試資料分割,請按照下列步驟操作:
在「檢測設備測試設定」中 按一下「其他選項」。
在「分割」部分中,輸入要執行的分割數量。
測試區塊的計費
Test Lab 利用 AndroidJUnitRunner 的內建功能實作資料分割 資料分割機制。 以免系統針對啟用空白的資料分割 (未指派的資料分割) 收取費用 測試案件), create 應少於測試案例總數。這取決於 建議您安排 2 到 10 個測試 每個資料分割的案例數量
如要進一步瞭解計費方式,請參閱「用量、配額與計費」一文。