Check out what’s new from Firebase@ Google I/O 2021, and join our alpha program for early access to the new Remote Config personalization feature. Learn more

開始使用儀器測試

本指南介紹瞭如何使用 Firebase 測試實驗室準備和運行儀器測試。要使用本指南,您需要一個使用EspressoUI Automator 2.0 Android 測試框架的儀器測試(由您或您的團隊編寫)。儀器測試可以在物理設備上運行長達 45 分鐘,在虛擬設備上運行長達 60 分鐘。

在後面的步驟中,您將應用的 APK 和測試的 APK 上傳到 Firebase。請參閱測試您的應用以了解有關創建測試 APK 的更多信息。作為一種選擇,您還可以下載NotePad 示例應用程序

第 1 步。(可選)將屏幕截圖庫添加到您的應用程序

測試實驗室提供了一個屏幕截圖庫,可讓您在應用程序上運行儀器測試時截取屏幕截圖。測試完成後,您可以在 Android Studio 或 Firebase 控制台中查看屏幕截圖。

請注意,截屏功能已包含在測試 APK app-debug-test-unaligned.apk和 NotePad 示例應用程序中。運行Robo 測試時,也會自動捕獲屏幕截圖。

  1. 在 Android Studio 中,打開項目視圖並右鍵單擊您的項目名稱。然後,單擊新建>目錄

  2. 在“新建目錄”對話框中,鍵入aars 。這會在測試項目的根目錄創建一個aars目錄(作為app文件夾的對等目錄)。

  3. 複製cloudtestingscreenshotter_lib.aar並將其粘貼到aars文件夾中。

  4. 在您應用的根級(項目級) build.gradle文件中,在每個repositories塊中添加對aars文件夾的引用:

    repositories {
        jcenter()
        flatDir {
            dirs '../aars'
        }
    }
    ...
  5. 在您模塊的頂級目錄(對於 NotePad 示例應用程序,這是應用程序目錄)中,打開build.gradle文件並將對cloudtestingscreenshotter_lib.aar的依賴項添加到頂級dependencies塊:

    dependencies {
        // Cloud testing
        androidTestCompile (name:'cloudtestingscreenshotter_lib', ext:'aar')
        // Other dependencies go here
        }
    
  6. 在您的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>
    

在您想要截取屏幕截圖的測試中的任何一點,調用 cloudtestingscreenshotter_lib 庫中的ScreenShotter.takeScreenshot方法,其中第一個參數是用於識別屏幕截圖的標籤(以下示例中使用main_screen_2 ):

爪哇

ScreenShotter.takeScreenshot("main_screen_2", this /* activity */);

科特林+KTX

ScreenShotter.takeScreenshot("main_screen_2", this /* activity */)

查看您的屏幕截圖

如果您使用 Android Studio 運行您的測試,當您的測試完成運行時,您可以通過在測試結果樹中選擇一個元素,然後單擊查看屏幕截圖來比較測試期間拍攝的任何屏​​幕截圖查看截圖選項。

Screenshot comparison screen

您可以從不同的配置中選擇和比較屏幕截圖,如下所示:

任務行動
在測試執行之間切換。使用左上角的下拉菜單。

測試用例菜單
在測試執行中的屏幕截圖之間切換。使用右上角的箭頭。

截圖切換器
向當前視圖添加額外的屏幕截圖比較面板。點擊比較

比較
選擇不同的測試維度(設備類型、方向、區域設置等)。從屏幕截圖底部的列表中選擇一個新的維度成員。

步驟 2. 啟用可選測試功能

在使用測試實驗室運行之前,您可以在測試中啟用以下功能:

啟用 Orchestrator

Android Test Orchestrator是一種工具,可以獨立運行您應用的每個插樁測試。測試實驗室始終使用最新版本的 Orchestrator。

要為測試實驗室啟用 Orchestrator,請在儀器測試設置中,單擊其他選項>使用 Orchestrator 運行

優點和缺點

  • 好處:沒有共享狀態。每個測試都在自己的檢測實例中運行,因此共享狀態不會跨測試累積。
  • 好處:孤立的崩潰。如果測試崩潰,則只有該檢測會終止,套件中的其他測試仍可以運行。
  • 缺點:更長的運行時間。每個測試都運行自己的檢測實例,這意味著整個測試過程需要稍長的時間。如果未選中,增加的運行時間可能會影響您的配額使用或計費時間,並可能導致您達到設備的超時限制

啟用分片

測試分片將一組測試分成獨立運行的子組(分片)。測試實驗室使用多個設備自動並行運行每個分片,並在更短的時間內完成整個測試集。

測試分片的工作原理

假設您創建了 N 個分片。對於您選擇的每個設備,測試實驗室會啟動 N 個相同的設備並在每個設備上運行測試的子集。這意味著分片測試用例可以導致每個設備執行多個測試,與非分片測試用例不同,非分片測試用例總是導致每個設備執行一個測試(有關測試實驗室中關鍵概念的快速概述,請參閱關鍵概念)。

您可以在 Firebase 控制台中啟用測試分片:

  1. 儀器測試設置中,單擊其他選項

  2. 分片部分,輸入要運行碎片的數量。

測試分片計費

測試實驗室通過利用AndroidJUnitRunner 的內置分片機制來實現您的分片。為避免因啟動空分片(未分配測試用例的分片)而產生費用,您創建的分片數量應小於測試用例的總數。根據每個測試用例運行所需的時間,通常最好為每個分片分配 2-10 個測試用例。

有關計費的更多信息,請閱讀使用量、配額和計費