Google is committed to advancing racial equity for Black communities. See how.
本頁面由 Cloud Translation API 翻譯而成。
Switch to English

開始使用gcloud CLI進行測試

Firebase測試實驗室提供用於測試Android應用程序的基於雲的基礎架構,包括與gcloud命令行界面(CLI)的完全集成本文檔介紹了從gcloud CLI開始使用“測試實驗室”所需的安裝和配置。

有關可在測試實驗室中與Android應用程序一起使用的gcloud命令的完整列表,請訪問gcloud firebase test android參考文檔。

創建一個Firebase項目

如果您的應用程序沒有Firebase項目,請轉到Firebase控制台 ,然後單擊“ 創建新項目”以立即創建一個。您將需要項目的所有權或編輯權限。

您可以在Spark和Flame計劃中使用Test Lab進行有限數量的每日測試執行。要使用沒有每日配額限制的測試實驗室,您必須升級到Firebase Blaze計劃。

設置gcloud CLI

  1. 下載Google Cloud SDK。
  2. 這包括gcloud CLI工具。

  3. 確保您的安裝是最新的:
    gcloud components update
    
  4. 使用您的Google帳戶登錄到gcloud CLI:
    gcloud auth login
    
  5. 在gcloud中設置Firebase項目,其中PROJECT_ID是Firebase項目的ID:
    gcloud config set project PROJECT_ID
    

配置測試

在此示例中,您將在一個名為Notepad的簡單筆記Android應用上運行一些測試。

  1. 下載記事本應用的二進制APK文件( app-debug-unaligned.apk )及其相應的檢測測試( app-debug-test-unaligned.apk ),該文件位於記事本NotePad / app / build / outputs / apk /目錄中.zip

  2. 獲取可用於測試的當前Android設備列表,如下所示:

     
    $ gcloud firebase test android models list
     
    gcloud firebase test android models list output命令輸出的第一列MODEL_ID包含標識符,以後您可以使用該標識符在特定模型上運行測試。 OS_VERSION_ID列列出了該設備支持的操作系統版本。如果您未指定要測試的MODEL_ID ,則使用TAGS列下註明的默認值。

  3. 了解更多有關特定的Android MODEL_ID並使用MODEL_ID firebase test android models describe命令,如下所示:

     
    $ gcloud firebase test android models describe Nexus5
     
    上面顯示的示例命令提供了有關Nexus5模型的詳細信息,包括品牌,製造商和支持的API級別,以及該模型是物理的還是虛擬的。

  4. 獲取可用於測試的最新Android OS版本列表:

     
    $ gcloud firebase test android versions list
     
    gcloud android versions list您可以使用命令輸出的前兩列中的任何一個標識符( OS_VERSION_IDVERSION ),以便以後針對Android OS版本運行測試。如果您未指定要測試的Android OS版本,則使用TAGS列下註明的默認值。

  5. 獲取可用於測試的當前語言環境列表:

     
    $ gcloud firebase test android locales list
     
    命令輸出的第一列LOCALE包含標識,以後可以使用該標識針對語言環境運行測試。如果未指定要測試的語言環境,則將英語用作默認語言環境。由於數百種語言環境可用,因此此處未顯示命令輸出。

運行測試

既然您知道測試應用程序時可以使用的設備型號,操作系統版本和語言環境的範圍,您就可以使用該信息通過gcloud firebase test android run命令和--device標誌來指定測試設備。無論您是使用Robo測試來自動測試您的應用,還是正在運行專門為測試您的應用而編寫的檢測測試,都將使用此命令和標誌。

運行機器人測試

即使您沒有任何測試測試,您仍然可以在應用程序中查找錯誤。使用Robo測試執行對應用程序用戶界面的自動檢查。 Robo測試通過對應用程序用戶界面中各種路徑進行靜態分析,然後在應用程序中進行爬網以查找崩潰和其他潛在問題,來對應用程序進行鍛煉。

讓我們從運行示例命令開始:

gcloud firebase test android run \
  --type robo \
  --app app-debug-unaligned.apk \
  --device model=Nexus6,version=21,locale=en,orientation=portrait  \
  --device model=Nexus7,version=19,locale=fr,orientation=landscape \
  --timeout 90s

如果未指定--type值,則--type robo參數是隱式的。您可以通過鍵入以下命令查看運行測試的完整命令行選項集: gcloud help firebase test android run 。作為在命令行上指定所有這些參數的替代方法,您可以選擇在YAML格式的參數文件中指定參數。運行gcloud topic arg-files以了解如何使用此功能。

請參閱“ 分析測試結果”部分,以了解如何調查Robo測試的測試結果。

運行儀器測試

現在,使用gcloud命令行工具在指定的Android設備配置上運行Notepad應用程序的Espresso測試,並使用instrumentation測試類型在app-debug-test-unaligned.apk運行測試,如下所示:

gcloud firebase test android run \
  --type instrumentation \
  --app app-debug-unaligned.apk \
  --test app-debug-test-unaligned.apk \
  --device model=Nexus6,version=21,locale=en,orientation=portrait  \
  --device model=Nexus7,version=19,locale=fr,orientation=landscape

如果已通過--test指定了測試APK,則--type instrumentation參數是隱式的。作為在命令行上指定所有這些參數的替代方法,您可以選擇在YAML格式的參數文件中指定參數。運行gcloud topic arg-files以了解如何使用此功能。

gcloud CLI支持Android Test Orchestrator 。 Orchestrator需要AndroidJUnitRunner v1.0或更高版本。要啟用它,請使用gcloud firebase test android run
--use-orchestrator標誌。要禁用它,請使用--no-use-orchestrator標誌。

注意:您還可以使用上面未顯示的其他標誌來控制測試實驗室如何運行儀器測試。例如,您可以使用--test-targets標誌來測試單個類或測試APK使用的類方法。您還可以通過使用'--num-flaky-test-attempts'標誌來找出失敗的測試是否實際上是不穩定的,該標誌指定瞭如果一個或多個測試執行重複執行測試的次數。測試用例由於任何原因失敗。要了解更多信息,請參閱gcloud firebase test android run

儀器測試的代碼覆蓋率報告

測試實驗室支持代碼覆蓋率報告工具EMMAJaCoCo 。如果您將任一工具集成到應用程序的內部版本中,則可以通過運行帶有以下參數的gcloud firebase test android run命令來獲得測試實驗室測試的代碼覆蓋率報告:

gcloud firebase test android run \
  --type instrumentation \
  --app your-app.apk \
  --test your-app-test.apk \
  --device model= TestDevice ,version= AndroidVersion  \
  --environment-variables coverage=true,coverageFile="/sdcard/coverage.ec" \
  --directories-to-pull /sdcard

測試實驗室完成測試運行後,請在Google Cloud Storage中找到代碼覆蓋率報告:

  1. 打開gcloud工具在終端中的測試結果表上方打印的Firebase控制台鏈接。
  2. 從該鏈接的列表中單擊測試執行,以打開該執行的詳細信息頁面。
  3. 點擊測試結果 ,以該執行的測試結果轉到Google Cloud Storage存儲桶。
  4. 打開artifacts/coverage.ec以查看您的代碼覆蓋率報告。

分析測試結果

幾分鐘後,gcloud工具會打印出測試結果的基本摘要:

Command test results

命令行測試運行的輸出還包括查看測試結果的鏈接。要了解有關如何解釋這些結果的更多信息,請參閱分析Android的Firebase測試實驗室結果

使用Robo測試進行自定義登錄和文本輸入

機器人測試會自動完成使用Google帳戶進行身份驗證的登錄屏幕,除非您使用--no-auto-google-login參數。它還可以使用您提供的測試帳戶憑據來完成自定義登錄屏幕。您還可以使用此參數為應用程序使用的其他文本字段提供自定義輸入文本。

要在您的應用中填寫文本字段,請使用--robo-directives參數並提供以逗號分隔的key-value對列表,其中key是目標UI元素的Android資源名稱,而value是文本字符串。您還可以使用此標誌告訴Ro​​bo忽略特定的UI元素(例如,“註銷”按鈕)。 WebView UI元素中支持EditText字段,但不支持文本字段。

例如,您可以使用以下參數進行自定義登錄:

 --robo-directives username_resource=username,password_resource=password
 

可用的命令和標誌

Test Lab gcloud CLI具有幾個可用的命令和標誌,可讓您運行具有不同規格的測試:

使用測試實驗室編寫gcloud命令腳本

您可以使用外殼程序腳本或批處理文件來自動執行移動應用程序測試命令,而該命令本來可以使用gcloud命令行運行。以下示例bash腳本以兩分鐘的超時時間運行檢測測試,並報告測試運行是否成功完成:

if gcloud firebase test android run --app my-app.apk --test my-test.apk --timeout 2m
then
    echo "Test matrix successfully finished"
else
    echo "Test matrix exited abnormally with non-zero exit code: " $?
fi

腳本退出代碼

測試實驗室提供了幾個退出代碼,您可以使用它們更好地了解使用腳本或批處理文件運行的測試結果。

為測試實驗室編寫腳本退出代碼

退出碼筆記
0 所有測試執行均通過。
1個發生一般故障。可能的原因包括:文件名不存在或HTTP /網絡錯誤。
2 由於提供了未知的命令或參數,測試已退出。
10 測試執行中的一個或多個測試用例(被測試的類或類方法)沒有通過。
15 由於意外錯誤,Firebase測試實驗室無法確定測試矩陣是通過還是失敗。
18歲由於測試尺寸不兼容,因此不支持用於此測試執行的測試環境。如果所選設備類型不支持所選Android API級別,則可能會發生此錯誤。
19 測試矩陣被用戶取消。
20 發生測試基礎結構錯誤。