REST Resource: projects.testMatrices

資源:測試矩陣

TestMatrix 擷取有關測試的所有詳細資訊。它包含環境配置、測試規格、測試執行以及整體狀態和結果。

JSON 表示
{
  "testMatrixId": string,
  "projectId": string,
  "clientInfo": {
    object (ClientInfo)
  },
  "testSpecification": {
    object (TestSpecification)
  },
  "environmentMatrix": {
    object (EnvironmentMatrix)
  },
  "testExecutions": [
    {
      object (TestExecution)
    }
  ],
  "resultStorage": {
    object (ResultStorage)
  },
  "state": enum (TestState),
  "timestamp": string,
  "invalidMatrixDetails": enum (InvalidMatrixDetails),
  "flakyTestAttempts": integer,
  "outcomeSummary": enum (OutcomeSummary),
  "failFast": boolean
}
領域
testMatrixId

string

僅輸出。由服務設定的唯一 ID。

projectId

string

擁有測試矩陣的雲端項目。

clientInfo

object ( ClientInfo )

有關調用測試的客戶端的資訊。

testSpecification

object ( TestSpecification )

必需的。如何運行測試。

environmentMatrix

object ( EnvironmentMatrix )

必需的。正在執行測試的設備。

testExecutions[]

object ( TestExecution )

僅輸出。服務為此矩陣建立的測試執行清單。

resultStorage

object ( ResultStorage )

必需的。寫入矩陣結果的位置。

state

enum ( TestState )

僅輸出。指示測試矩陣的當前進度。

timestamp

string ( Timestamp format)

僅輸出。最初建立此測試矩陣的時間。

RFC3339 UTC「Zulu」格式的時間戳,具有奈秒解析度和最多九個小數位。範例: "2014-10-02T15:01:23Z""2014-10-02T15:01:23.045123456Z"

invalidMatrixDetails

enum ( InvalidMatrixDetails )

僅輸出。描述矩陣被視為無效的原因。僅對處於 INVALID 狀態的矩陣有用。

flakyTestAttempts

integer

如果一個或多個測試案例因任何原因失敗,則應重新嘗試 TestExecution 的次數。允許的最大重新運行次數為 10。

預設值為 0,這表示不重新運行。

outcomeSummary

enum ( OutcomeSummary )

僅輸出。測試的整體結果。僅在測試矩陣狀態為 FINISHED 時才設定。

failFast

boolean

如果為 true,則最多只會嘗試一次來執行矩陣中的每個執行/分片。不穩定的測試嘗試不受影響。

通常,如果偵測到潛在的基礎設施問題,則會進行 2 次或多次嘗試。

此功能適用於延遲敏感的工作負載。對於快速失敗矩陣,執行失敗的發生率可能明顯更高,而且由於這種期望,支持也更加有限。

客戶資訊

有關調用測試的客戶端的資訊。

JSON 表示
{
  "name": string,
  "clientInfoDetails": [
    {
      object (ClientInfoDetail)
    }
  ]
}
領域
name

string

必需的。客戶端名稱,例如 gcloud。

clientInfoDetails[]

object ( ClientInfoDetail )

有關客戶的詳細資訊清單。

客戶資訊詳情

有關調用測試的客戶端的詳細資訊的鍵值對。例:{'版本'、'1.0'}、{'發佈軌道'、'BETA'}。

JSON 表示
{
  "key": string,
  "value": string
}
領域
key

string

必需的。詳細客戶資訊的關鍵。

value

string

必需的。詳細的客戶資訊的價值。

測試規範

如何運行測試的描述。

JSON 表示
{
  "testTimeout": string,
  "disableVideoRecording": boolean,
  "disablePerformanceMetrics": boolean,

  // Union field setup can be only one of the following:
  "testSetup": {
    object (TestSetup)
  },
  "iosTestSetup": {
    object (IosTestSetup)
  }
  // End of list of possible types for union field setup.

  // Union field test can be only one of the following:
  "androidInstrumentationTest": {
    object (AndroidInstrumentationTest)
  },
  "androidRoboTest": {
    object (AndroidRoboTest)
  },
  "androidTestLoop": {
    object (AndroidTestLoop)
  },
  "iosXcTest": {
    object (IosXcTest)
  },
  "iosTestLoop": {
    object (IosTestLoop)
  }
  // End of list of possible types for union field test.
}
領域
testTimeout

string ( Duration format)

在自動取消之前允許測試執行運行的最長時間。預設值為 5 分鐘。

以秒為單位的持續時間,最多包含九個小數位,以「 s 」結尾。例: "3.5s"

disableVideoRecording

boolean

禁用視訊錄製。可以減少測試延遲。

disablePerformanceMetrics

boolean

禁用性能指標記錄。可以減少測試延遲。

聯盟字段setup 。測試設定要求。 setup只能是以下其中一項:
testSetup

object ( TestSetup )

測試 Android 的設定要求,例如要安裝的檔案、引導腳本。

iosTestSetup

object ( IosTestSetup )

iOS 的測試設定要求。

聯盟實地test 。必需的。要運行的測試的類型。 test只能是以下之一:
androidInstrumentationTest

object ( AndroidInstrumentationTest )

Android 儀器測試。

androidRoboTest

object ( AndroidRoboTest )

Android 機器人測試。

androidTestLoop

object ( AndroidTestLoop )

帶有測試循環的 Android 應用程式。

iosXcTest

object ( IosXcTest )

iOS XCTest,透過 .xctestrun 檔案。

iosTestLoop

object ( IosTestLoop )

具有測試循環的 iOS 應用程式。

測試設定

有關如何在運行測試之前設定 Android 裝置的說明。

JSON 表示
{
  "filesToPush": [
    {
      object (DeviceFile)
    }
  ],
  "directoriesToPull": [
    string
  ],
  "additionalApks": [
    {
      object (Apk)
    }
  ],
  "account": {
    object (Account)
  },
  "networkProfile": string,
  "environmentVariables": [
    {
      object (EnvironmentVariable)
    }
  ],
  "systrace": {
    object (SystraceSetup)
  },
  "dontAutograntPermissions": boolean
}
領域
filesToPush[]

object ( DeviceFile )

開始測試之前要推送到裝置的檔案清單。

directoriesToPull[]

string

測試結束時上傳到 GCS 的裝置上的目錄清單;它們必須是 /sdcard、/storage 或 /data/local/tmp 下的絕對路徑。路徑名僅限於字元 az AZ 0-9 _ - 。 + 和 /

注意:路徑 /sdcard 和 /data 將可用並被視為隱式路徑替換。例如,如果特定裝置上的 /sdcard 未對應到外部存儲,系統會將其取代為該裝置的外部儲存路徑前綴。

additionalApks[]

object ( Apk )

除了直接測試的 APK 之外還要安裝的 APK。目前上限為 100。

account

object ( Account )

在測試期間,設備將使用此帳戶登入。

networkProfile

string

用於運行測試的網路流量設定檔。呼叫 TestEnvironmentDiscoveryService.GetTestEnvironmentCatalog 時,可以使用 NETWORK_CONFIGURATION 環境類型查詢可用的網路設定檔。

environmentVariables[]

object ( EnvironmentVariable )

為測試設定的環境變數(僅適用於儀器測試)。

systrace
(deprecated)

object ( SystraceSetup )

運行的 Systrace 配置。已棄用:Systrace 使用 Python 2,該版本已於 2020 年 1 月 1 日停用。 Cloud Test API 不再支援 Systrace,結果中不會提供 Systrace 檔案。

dontAutograntPermissions

boolean

是否阻止在應用程式安裝時授予所有運行時權限

裝置檔案

單一設備文件描述。

JSON 表示
{

  // Union field device_file can be only one of the following:
  "obbFile": {
    object (ObbFile)
  },
  "regularFile": {
    object (RegularFile)
  }
  // End of list of possible types for union field device_file.
}
領域
聯合欄位device_file 。必需的。 device_file只能是以下之一:
obbFile

object ( ObbFile )

對不透明二進位 blob 檔案的引用。

regularFile

object ( RegularFile )

常規文件的引用。

OBB文件

在測試開始之前要在設備上安裝的不透明二進位 blob 檔案。

JSON 表示
{
  "obbFileName": string,
  "obb": {
    object (FileReference)
  }
}
領域
obbFileName

string

必需的。 OBB 檔案名,必須符合 Android 指定的格式,例如 [main|patch].0300110.com.example.android.obb 將安裝到 <shared-storage>/Android/obb/<package-name>/在裝置上。

obb

object ( FileReference )

必需的。若要安裝在裝置上的不透明二進位 Blob (OBB) 檔案。

文件參考

對文件的引用,用於使用者輸入。

JSON 表示
{

  // Union field file can be only one of the following:
  "gcsPath": string
  // End of list of possible types for union field file.
}
領域
聯盟現場file 。必需的。文件參考。 file只能是以下之一:
gcsPath

string

Google Cloud Storage 中文件的路徑。範例: gs://build-app-1414623860166/app%40debug-unaligned.apk這些路徑預計會進行 url 編碼(百分比編碼)

常規文件

測試開始前要安裝在裝置上的檔案或目錄。

JSON 表示
{
  "content": {
    object (FileReference)
  },
  "devicePath": string
}
領域
content

object ( FileReference )

必需的。來源文件。

devicePath

string

必需的。將內容放置在設備上的位置。必須是絕對的、允許的路徑。如果該檔案存在,它將被替換。以下設備端目錄及其任何子目錄均已列入白名單:

${EXTERNAL_STORAGE}、/sdcard 或 /storage

${ANDROID_DATA}/local/tmp 或 /data/local/tmp

指定這些目錄樹之外的路徑是無效的。

路徑 /sdcard 和 /data 將可用並被視為隱式路徑替換。例如,如果特定裝置上的 /sdcard 未對應到外部存儲,系統將用該裝置的外部儲存路徑前綴取代它,並將檔案複製到那裡。

強烈建議在應用程式和測試程式碼中使用環境 API以便攜式方式存取裝置上的檔案。

應用程式

要安裝的 Android 套件檔案。

JSON 表示
{
  "location": {
    object (FileReference)
  },
  "packageName": string
}
領域
location

object ( FileReference )

測試開始前要安裝在裝置上的 APK 的路徑。

packageName

string

要安裝的APK的java套件。值是透過檢查應用程式的清單來確定的。

帳戶

識別帳戶以及如何登入該帳戶。

JSON 表示
{

  // Union field account_type can be only one of the following:
  "googleAuto": {
    object (GoogleAuto)
  }
  // End of list of possible types for union field account_type.
}
領域
聯合欄位account_type 。必需的。帳戶類型,基於其用途(例如 Google)及其登入機制(例如使用者名稱和密碼)。 account_type只能是以下之一:
googleAuto

object ( GoogleAuto )

自動谷歌登入帳號。

Google汽車

啟用自動 Google 帳戶登入。如果設定,服務會在執行測試之前自動產生 Google 測試帳戶並將其新增至裝置。請注意,測試帳戶可能會重複使用。當裝置上存在帳戶時,許多應用程式會顯示其全套功能。使用這些產生的帳戶登入裝置可以測試更多功能。

環境變數

鍵值對作為環境變數傳遞給測試。

JSON 表示
{
  "key": string,
  "value": string
}
領域
key

string

環境變數的鍵。

value

string

環境變數的值。

Systrace設定

JSON 表示
{
  "durationSeconds": integer
}
領域
durationSeconds
(deprecated)

integer

Systrace 持續時間(以秒為單位)。應介於 1 到 30 秒之間。 0 禁用系統追蹤。

Ios測試設定

有關如何在運行測試之前設定 iOS 裝置的說明。

JSON 表示
{
  "networkProfile": string,
  "additionalIpas": [
    {
      object (FileReference)
    }
  ],
  "pushFiles": [
    {
      object (IosDeviceFile)
    }
  ],
  "pullDirectories": [
    {
      object (IosDeviceFile)
    }
  ]
}
領域
networkProfile

string

用於運行測試的網路流量設定檔。呼叫 TestEnvironmentDiscoveryService.GetTestEnvironmentCatalog 時,可以使用 NETWORK_CONFIGURATION 環境類型查詢可用的網路設定檔。

additionalIpas[]

object ( FileReference )

除了直接測試的應用程式外,還需要安裝 iOS 應用程式。

pushFiles[]

object ( IosDeviceFile )

開始測試之前要推送到裝置的檔案清單。

pullDirectories[]

object ( IosDeviceFile )

測試結束時要上傳到 Cloud Storage 的裝置上的目錄清單。

目錄應該位於共用目錄(例如 /private/var/mobile/Media)中,或透過指定套件 ID 位於應用程式檔案系統內的可存取目錄(例如 /Documents)中。

Ios設備文件

測試開始前要安裝在裝置上的檔案或目錄。

JSON 表示
{
  "content": {
    object (FileReference)
  },
  "bundleId": string,
  "devicePath": string
}
領域
content

object ( FileReference )

原始檔

bundleId

string

該檔案所在應用程式的捆綁包 ID。

iOS 應用程式將自己的檔案系統沙箱化,因此應用程式檔案必須指定裝置上安裝的應用程式。

devicePath

string

文件在裝置上、應用程式的沙盒檔案系統內的位置

Android儀器測試

對 Android 應用程式的測試,該應用程式可以獨立於正常生命週期控制 Android 元件。 Android 儀器測試運行應用程式 APK 並在虛擬或實體 Android 裝置上的相同進程內測試 APK。他們還指定一個測試運行器類,例如 com.google.GoogleTestRunner,該類可能會因所選的特定檢測框架而異。

有關 Android 測試類型的更多信息,請參閱https://developer.android.com/training/testing/fundamentals

JSON 表示
{
  "testApk": {
    object (FileReference)
  },
  "appPackageId": string,
  "testPackageId": string,
  "testRunnerClass": string,
  "testTargets": [
    string
  ],
  "orchestratorOption": enum (OrchestratorOption),
  "shardingOption": {
    object (ShardingOption)
  },

  // Union field app_under_test can be only one of the following:
  "appApk": {
    object (FileReference)
  },
  "appBundle": {
    object (AppBundle)
  }
  // End of list of possible types for union field app_under_test.
}
領域
testApk

object ( FileReference )

必需的。包含要執行的測試程式碼的 APK。

appPackageId

string

被測應用程式的 java 套件。預設值是透過檢查應用程式的清單來確定的。

testPackageId

string

要執行的測試的java套件。預設值是透過檢查應用程式的清單來確定的。

testRunnerClass

string

InstrumentationTestRunner 類別。預設值是透過檢查應用程式的清單來確定的。

testTargets[]

string

每個目標都必須使用套件名稱或類別名稱完全限定,採用以下格式之一:

  • “包包名”
  • “類別包名.class_name”
  • “類別包名.類別名稱#方法名稱”

如果為空,則將運行模組中的所有目標。

orchestratorOption

enum ( OrchestratorOption )

是否使用 Android Test Orchestrator 在自己的儀器呼叫中運行每個測試的選項。 ** Orchestrator 僅與 AndroidJUnitRunner 版本 1.1 或更高版本相容! ** Orchestrator 具有以下優點:

  • 無共享狀態
  • 崩潰是孤立的
  • 日誌按測試劃分範圍

有關 Android Test Orchestrator 的更多信息,請參閱https://developer.android.com/training/testing/junit-runner.html#using-android-test-orchestrator

如果未設置,測試將在沒有協調器的情況下運行。

shardingOption

object ( ShardingOption )

在多個分片中並行運行測試的選項。

聯合欄位app_under_test 。必需的。 app_under_test只能是以下之一:
appApk

object ( FileReference )

正在測試的應用程式的 APK。

appBundle

object ( AppBundle )

用於被測應用程式的多 apk 應用程式套件。

應用程式包

Android App Bundle 檔案格式,包含 BundleConfig.pb 檔案、基本模組目錄、零個或多個動態功能模組目錄。

有關建立應用程式套件的指南,請參閱https://developer.android.com/guide/app-bundle/build

JSON 表示
{

  // Union field bundle can be only one of the following:
  "bundleLocation": {
    object (FileReference)
  }
  // End of list of possible types for union field bundle.
}
領域
聯盟場bundle 。必需的。捆綁位置資訊。 bundle只能是以下之一:
bundleLocation

object ( FileReference )

.aab 檔案代表正在測試的應用程式套件。

Orchestrator選項

指定如何執行測試。

列舉
ORCHESTRATOR_OPTION_UNSPECIFIED預設值:伺服器將選擇模式。目前意味著測試將在沒有協調器的情況下運行。將來,所有儀器測試都將使用協調器運作。由於它提供的所有好處,我們強烈鼓勵使用編排器。
USE_ORCHESTRATOR使用 Orchestrator 執行測試。 ** 僅與 AndroidJUnitRunner 1.1 或更高版本相容! ** 受到推崇的。
DO_NOT_USE_ORCHESTRATOR不使用 Orchestrator 執行測試。

分片選項

啟用分片的選項。

JSON 表示
{

  // Union field option can be only one of the following:
  "uniformSharding": {
    object (UniformSharding)
  },
  "manualSharding": {
    object (ManualSharding)
  },
  "smartSharding": {
    object (SmartSharding)
  }
  // End of list of possible types for union field option.
}
領域

聯合字段option

option只能是以下其中之一:

uniformSharding

object ( UniformSharding )

給定分片總數,對測試案例進行統一分片。

manualSharding

object ( ManualSharding )

將測試案例分成指定的套件、類別和/或方法群組。

smartSharding

object ( SmartSharding )

基於先前的測試案例計時記錄進行分片測試。

統一分片

給定分片總數,對測試案例進行統一分片。

對於儀器測試,它將被轉換為“-e numShard”和“-e shardIndex”AndroidJUnitRunner 參數。啟用統一分片後,透過environmentVariables指定這些分片參數中的任何一個都是無效的。

基於 AndroidJUnitRunner 所使用的分片機制,無法保證測試案例將均勻分佈在所有分片上。

JSON 表示
{
  "numShards": integer
}
領域
numShards

integer

必需的。要建立的分片總數。這必須始終是一個不大於測試案例總數的正數。當您選擇一個或多個實體設備時,分片數量必須<= 50。當您選擇一個或多個ARM 虛擬設備時,它必須<= 200。當您只選擇x86 虛擬設備時,它必須<= 500 。

手動分片

將測試案例分成指定的套件、類別和/或方法群組。

啟用手動分片後,透過environmentVariables或InstrumentationTest指定測試目標無效。

JSON 表示
{
  "testTargetsForShard": [
    {
      object (TestTargetsForShard)
    }
  ]
}
領域
testTargetsForShard[]

object ( TestTargetsForShard )

必需的。要為每個手動建立的分片運行的一組套件、類別和/或測試方法。如果存在此字段,則您必須至少指定一個分片。當您選擇一台或多台實體裝置時,重複testTargetsForShard的數量必須<= 50。當您選擇一台或多台ARM虛擬裝置時,它必須<= 200。當您只選擇x86虛擬裝置時,它必須<= 500。

分片測試目標

分片的測試目標。

JSON 表示
{
  "testTargets": [
    string
  ]
}
領域
testTargets[]

string

要為每個分片運行的套件、類別和/或測試方法組。需要以 AndroidJUnitRunner 參數格式指定目標。例如,「package com.my.packages」「class com.my.package.MyClass」。

testTargets 的數量必須大於 0。

智慧分片

基於先前的測試案例計時記錄進行分片測試。

JSON 表示
{
  "targetedShardDuration": string
}
領域
targetedShardDuration

string ( Duration format)

分片內測試應花費的時間量。

預設值:300 秒(5 分鐘)。允許的最短時間:120 秒(2 分鐘)。

分片計數根據時間動態設置,最高可達最大分片限制(如下所述)。為了確保每個分片至少有一個測試案例,分片的數量不會超過測試案例的數量。如果滿足以下條件,則將超出分片持續時間:

  • 已達到最大分片限制,還有更多計算出的剩餘測試時間可分配到分片中。
  • 任何單獨的測試預計都會比目標分片持續時間長。

分片持續時間無法保證,因為智慧分片使用測試案例歷史記錄和預設持續時間,這可能不準確。尋找測試用例計時記錄的規則是:

  • 如果服務在過去 30 天內處理過測試案例,則將使用最新成功測試案例的記錄。
  • 對於新的測試案例,將使用其他已知測試案例的平均持續時間。
  • 如果沒有可用的先前測試案例計時記錄,則預設測試案例持續時間為 15 秒。

由於實際分片持續時間可能會超過目標分片持續時間,因此我們建議您將目標值設定為比允許的最大測試超時至少短5 分鐘(實體設備為45 分鐘,虛擬設備為60 分鐘),或使用自訂測試您設定的逾時值。這種方法可以避免在所有測試完成之前取消分片。

請注意,最大分片數量是有限制的。當您選擇一個或多個實體設備時,分片數量必須<= 50。當您選擇一個或多個ARM 虛擬設備時,它必須<= 200。當您只選擇x86 虛擬設備時,它必須<= 500 . 為了確保每個分片至少有一個測試用例,分片的數量不會超過測試用例的數量。創建的每個分片都計入每日測試配額。

以秒為單位的持續時間,最多包含九個小數位,以「 s 」結尾。例: "3.5s"

AndroidRobo測試

對 Android 應用程式的測試,探索虛擬或實體 Android 裝置上的應用程序,找出罪魁禍首和崩潰情況。

JSON 表示
{
  "appPackageId": string,
  "appInitialActivity": string,
  "maxDepth": integer,
  "maxSteps": integer,
  "roboDirectives": [
    {
      object (RoboDirective)
    }
  ],
  "roboMode": enum (RoboMode),
  "roboScript": {
    object (FileReference)
  },
  "startingIntents": [
    {
      object (RoboStartingIntent)
    }
  ],

  // Union field app_under_test can be only one of the following:
  "appApk": {
    object (FileReference)
  },
  "appBundle": {
    object (AppBundle)
  }
  // End of list of possible types for union field app_under_test.
}
領域
appPackageId

string

被測應用程式的 java 套件。預設值是透過檢查應用程式的清單來確定的。

appInitialActivity

string

應該用於啟動應用程式的初始活動。

maxDepth
(deprecated)

integer

Robo 可以探索的遍歷堆疊的最大深度。需要至少為 2 才能讓 Robo 在第一個活動之外探索應用程式。預設值為 50。

maxSteps
(deprecated)

integer

Robo 可以執行的最大步數。預設沒有限制。

roboDirectives[]

object ( RoboDirective )

Robo 在爬行期間應應用的一組指令。這允許用戶自訂爬網。例如,可以提供測試帳戶的使用者名稱和密碼。

roboMode

enum ( RoboMode )

Robo 運作的模式。大多數客戶端應該允許伺服器自動填入此欄位。

roboScript

object ( FileReference )

包含 Robo 應執行的一系列操作的 JSON 檔案作為爬行的序言。

startingIntents[]

object ( RoboStartingIntent )

用於啟動應用程式進行爬網的意圖。如果未提供,則啟動主啟動器活動。如果提供了一些,則僅啟動提供的那些(必須明確提供主啟動器活動)。

聯合欄位app_under_test 。必需的。 app_under_test只能是以下之一:
appApk

object ( FileReference )

正在測試的應用程式的 APK。

appBundle

object ( AppBundle )

用於被測應用程式的多 apk 應用程式套件。

機器人指令

如果在爬網過程中遇到特定的 UI 元素,則指示 Robo 與該元素進行互動。目前,Robo 可以執行文字輸入或元素單擊。

JSON 表示
{
  "resourceName": string,
  "inputText": string,
  "actionType": enum (RoboActionType)
}
領域
resourceName

string

必需的。目標 UI 元素的 Android 資源名稱。例如,在 Java 中: R.string.foo 在 xml 中: @string/foo 只需要「foo」部分。參考文件: https ://developer.android.com/guide/topics/resources/accessing-resources.html

inputText

string

Robo 被指示設定的文字。如果留空,則指令將被視為與資源名稱相符的元素的點選。

actionType

enum ( RoboActionType )

必需的。 Robo 應對指定元素執行的操作類型。

機器人動作類型

Robo 可以對 UI 元素執行的操作。

列舉
ACTION_TYPE_UNSPECIFIED不使用。僅適用於原型版本控制。
SINGLE_CLICK指示 Robo 按一下指定元素。如果指定元素不可點擊,則無操作。
ENTER_TEXT指示 Robo 在指定元素上輸入文字。如果指定元素未啟用或不允許文字輸入,則無操作。
IGNORE指示 Robo 忽略與特定元素的交互作用。

機器人模式

Robo 運作的模式。

列舉
ROBO_MODE_UNSPECIFIED這意味著伺服器應該選擇模式。受到推崇的。
ROBO_VERSION_1在僅 UIAutomator 模式下執行 Robo,無需應用程式退出
ROBO_VERSION_2使用 UIAutomator 後備在標準 Espresso 中執行 Robo

機器人啟動意圖

用於指定要爬網的啟動活動的訊息。

JSON 表示
{
  "timeout": string,

  // Union field starting_intent can be only one of the following:
  "launcherActivity": {
    object (LauncherActivityIntent)
  },
  "startActivity": {
    object (StartActivityIntent)
  }
  // End of list of possible types for union field starting_intent.
}
領域
timeout

string ( Duration format)

每個意圖的超時(以秒為單位)。

以秒為單位的持續時間,最多包含九個小數位,以「 s 」結尾。例: "3.5s"

聯合欄位starting_intent 。必需的。開始活動的意圖詳細資訊。 starting_intent只能是以下其中之一:
launcherActivity

object ( LauncherActivityIntent )

啟動主啟動器活動的意圖。

startActivity

object ( StartActivityIntent )

啟動具有特定細節的活動的意圖。

啟動器活動意圖

指定啟動主啟動器活動的意圖。

啟動活動意圖

由操作、uri 和類別指定的起始意圖。

JSON 表示
{
  "action": string,
  "uri": string,
  "categories": [
    string
  ]
}
領域
action

string

動作名稱。 START_ACTIVITY 必需。

uri

string

操作的 URI。

categories[]

string

在意圖上設定的意圖類別。

Android測試循環

使用測試循環對 Android 應用程式進行測試。意圖 <intent-name> 將被隱式添加,因為 Games 目前是該 api 的唯一使用者。

JSON 表示
{
  "appPackageId": string,
  "scenarios": [
    integer
  ],
  "scenarioLabels": [
    string
  ],

  // Union field app_under_test can be only one of the following:
  "appApk": {
    object (FileReference)
  },
  "appBundle": {
    object (AppBundle)
  }
  // End of list of possible types for union field app_under_test.
}
領域
appPackageId

string

被測應用程式的 java 套件。預設值是透過檢查應用程式的清單來確定的。

scenarios[]

integer

測試期間應運行的場景清單。預設值是所有測試循環,源自於應用程式的清單。

scenarioLabels[]

string

測試期間應執行的場景標籤清單。場景標籤應映射到應用程式清單中定義的標籤。例如,player_experience 和 com.google.test.loops.player_experience 將清單中標記為 com.google.test.loops.player_experience 名稱的所有循環加入執行中。也可以在場景欄位中指定場景。

聯合欄位app_under_test 。必需的。要測試的 Android 套件。 app_under_test只能是以下之一:
appApk

object ( FileReference )

正在測試的應用程式的 APK。

appBundle

object ( AppBundle )

用於被測應用程式的多 apk 應用程式套件。

IOSXc測試

使用 XCTest 框架對 iOS 應用程式進行測試。 Xcode 支援「建置測試」選項,該選項會產生包含測試規範(參數、測試方法等)的 .xctestrun 檔案。此測試類型接受包含 .xctestrun 檔案的 zip 檔案以及包含執行測試所需的所有二進位檔案的 Build/Products 目錄的相應內容。

JSON 表示
{
  "testsZip": {
    object (FileReference)
  },
  "xctestrun": {
    object (FileReference)
  },
  "xcodeVersion": string,
  "appBundleId": string,
  "testSpecialEntitlements": boolean
}
領域
testsZip

object ( FileReference )

必需的。包含 .xctestrun 檔案和 DerivedData/Build/Products 目錄內容的 .zip。如果指定了 xctestrun 字段,則該 zip 中的 .xctestrun 檔案將被忽略。

xctestrun

object ( FileReference )

.xctestrun 檔案將覆蓋測試 zip 中的 .xctestrun 檔案。由於 .xctestrun 檔案包含環境變數以及要運行和/或忽略的測試方法,因此這對於分片測試非常有用。預設值取自測試 zip。

xcodeVersion

string

用於測試的 Xcode 版本。使用 TestEnvironmentDiscoveryService 取得支援的選項。預設為 Firebase 測試實驗室支援的最新 Xcode 版本。

appBundleId

string

僅輸出。正在測試的應用程式的捆綁包 ID。

testSpecialEntitlements

boolean

用於測試特殊應用程式權利的選項。設定此選項將使用明確應用程式識別碼重新簽署具有特殊權利的應用程式。目前支援測試 aps-environment 權利。

IOS測試循環

實現一個或多個遊戲循環場景的 iOS 應用程式的測試。此測試類型接受已存檔的應用程式(.ipa 檔案)和將在應用程式上按順序執行的整數場景清單。

JSON 表示
{
  "appIpa": {
    object (FileReference)
  },
  "scenarios": [
    integer
  ],
  "appBundleId": string
}
領域
appIpa

object ( FileReference )

必需的。要測試的應用程式的 .ipa。

scenarios[]

integer

測試期間應運行的場景清單。如果未指定,則預設為單一場景 0。

appBundleId

string

僅輸出。正在測試的應用程式的捆綁包 ID。

環境矩陣

要執行測試的環境矩陣。

JSON 表示
{

  // Union field environment_matrix can be only one of the following:
  "androidMatrix": {
    object (AndroidMatrix)
  },
  "androidDeviceList": {
    object (AndroidDeviceList)
  },
  "iosDeviceList": {
    object (IosDeviceList)
  }
  // End of list of possible types for union field environment_matrix.
}
領域
聯合字段environment_matrix 。必需的。環境矩陣。 environment_matrix只能是以下之一:
androidMatrix

object ( AndroidMatrix )

Android 裝置矩陣。

androidDeviceList

object ( AndroidDeviceList )

Android 裝置清單;該測試將僅在指定的設備上運行。

iosDeviceList

object ( IosDeviceList )

iOS 裝置列表。

Android矩陣

一組 Android 裝置配置排列由給定軸的叉積定義。在內部,給定的 AndroidMatrix 將擴展為一組 AndroidDevices。

只有支援的排列才會被實例化。無效排列(例如,不相容的型號/版本)將被忽略。

JSON 表示
{
  "androidModelIds": [
    string
  ],
  "androidVersionIds": [
    string
  ],
  "locales": [
    string
  ],
  "orientations": [
    string
  ]
}
領域
androidModelIds[]

string

必需的。要使用的 Android 裝置集的 ID。使用 TestEnvironmentDiscoveryService 取得支援的選項。

androidVersionIds[]

string

必需的。要使用的 Android 作業系統版本集的 ID。使用 TestEnvironmentDiscoveryService 取得支援的選項。

locales[]

string

必需的。測試設備將為測試啟用的區域設定集。使用 TestEnvironmentDiscoveryService 取得支援的選項。

orientations[]

string

必需的。要測試的方向集。使用 TestEnvironmentDiscoveryService 取得支援的選項。

Android裝置列表

要執行測試的 Android 裝置配置清單。

JSON 表示
{
  "androidDevices": [
    {
      object (AndroidDevice)
    }
  ]
}
領域
androidDevices[]

object ( AndroidDevice )

必需的。 Android 裝置清單。

Android裝置

單一 Android 裝置。

JSON 表示
{
  "androidModelId": string,
  "androidVersionId": string,
  "locale": string,
  "orientation": string
}
領域
androidModelId

string

必需的。要使用的 Android 裝置的 ID。使用 TestEnvironmentDiscoveryService 取得支援的選項。

androidVersionId

string

必需的。要使用的 Android 作業系統版本的 ID。使用 TestEnvironmentDiscoveryService 取得支援的選項。

locale

string

必需的。測試設備用於測試的區域設定。使用 TestEnvironmentDiscoveryService 取得支援的選項。

orientation

string

必需的。測試期間設備的方向如何。使用 TestEnvironmentDiscoveryService 取得支援的選項。

Ios設備列表

要在其中執行測試的 iOS 裝置配置清單。

JSON 表示
{
  "iosDevices": [
    {
      object (IosDevice)
    }
  ]
}
領域
iosDevices[]

object ( IosDevice )

必需的。 iOS 裝置列表。

IOS設備

單一 iOS 裝置。

JSON 表示
{
  "iosModelId": string,
  "iosVersionId": string,
  "locale": string,
  "orientation": string
}
領域
iosModelId

string

必需的。要使用的 iOS 裝置的 ID。使用 TestEnvironmentDiscoveryService 取得支援的選項。

iosVersionId

string

必需的。要使用的iOS主要軟體版本的id。使用 TestEnvironmentDiscoveryService 取得支援的選項。

locale

string

必需的。測試設備用於測試的區域設定。使用 TestEnvironmentDiscoveryService 取得支援的選項。

orientation

string

必需的。測試期間設備的方向如何。使用 TestEnvironmentDiscoveryService 取得支援的選項。

測試執行

在單一環境中執行的單一測試。

JSON 表示
{
  "id": string,
  "matrixId": string,
  "projectId": string,
  "testSpecification": {
    object (TestSpecification)
  },
  "shard": {
    object (Shard)
  },
  "environment": {
    object (Environment)
  },
  "state": enum (TestState),
  "toolResultsStep": {
    object (ToolResultsStep)
  },
  "timestamp": string,
  "testDetails": {
    object (TestDetails)
  }
}
領域
id

string

僅輸出。由服務設定的唯一 ID。

matrixId

string

僅輸出。包含 TestMatrix 的 ID。

projectId

string

僅輸出。擁有測試執行的雲端項目。

testSpecification

object ( TestSpecification )

僅輸出。如何運行測試。

shard

object ( Shard )

僅輸出。有關分片的詳細資訊。

environment

object ( Environment )

僅輸出。主機是如何配置的。

state

enum ( TestState )

僅輸出。指示測試執行的當前進度(例如,FINISHED)。

toolResultsStep

object ( ToolResultsStep )

僅輸出。寫入此執行結果的位置。

timestamp

string ( Timestamp format)

僅輸出。最初建立此測試執行的時間。

RFC3339 UTC「Zulu」格式的時間戳,具有奈秒解析度和最多九個小數位。範例: "2014-10-02T15:01:23Z""2014-10-02T15:01:23.045123456Z"

testDetails

object ( TestDetails )

僅輸出。有關運行測試的其他詳細資訊。

碎片

僅輸出。有關分片的詳細資訊。

JSON 表示
{
  "shardIndex": integer,
  "numShards": integer,
  "testTargetsForShard": {
    object (TestTargetsForShard)
  },
  "estimatedShardDuration": string
}
領域
shardIndex

integer

僅輸出。該分片在所有分片中的索引。

numShards

integer

僅輸出。分片總數。

testTargetsForShard

object ( TestTargetsForShard )

僅輸出。每個分片的測試目標。僅設定為手動分片。

estimatedShardDuration

string ( Duration format)

僅輸出。根據先前的測試案例計時記錄(如果有)估計的分片持續時間。

以秒為單位的持續時間,最多包含九個小數位,以「 s 」結尾。例: "3.5s"

環境

運行測試的環境。

JSON 表示
{

  // Union field environment can be only one of the following:
  "androidDevice": {
    object (AndroidDevice)
  },
  "iosDevice": {
    object (IosDevice)
  }
  // End of list of possible types for union field environment.
}
領域
聯盟場environment 。必需的。環境。 environment只能是以下其中之一:
androidDevice

object ( AndroidDevice )

必須用於 Android 測試的 Android 裝置。

iosDevice

object ( IosDevice )

必須用於 iOS 測試的 iOS 裝置。

測試狀態

測試執行或矩陣的狀態(即進度)。

列舉
TEST_STATE_UNSPECIFIED不使用。僅適用於原型版本控制。
VALIDATING正在驗證執行或矩陣。
PENDING執行或矩陣正在等待資源變得可用。
RUNNING

目前正在處理執行中。

只能在執行時設定。

FINISHED

執行或矩陣已正常終止。

在矩陣上,這意味著矩陣級處理正常完成,但個別執行可能處於錯誤狀態。

ERROR由於遇到基礎設施故障,執行或矩陣已停止。
UNSUPPORTED_ENVIRONMENT

該執行未運行,因為它對應於不支援的環境。

只能在執行時設定。

INCOMPATIBLE_ENVIRONMENT

由於提供的輸入與請求的環境不相容,因此未運行執行。

範例:請求的 AndroidVersion 低於 APK 的 minSdkVersion

只能在執行時設定。

INCOMPATIBLE_ARCHITECTURE

由於提供的輸入與請求的體系結構不相容,因此未運行執行。

範例:請求的裝置不支援執行提供的 APK 中的本機程式碼

只能在執行時設定。

CANCELLED

用戶取消了執行。

只能在執行時設定。

INVALID

由於提供的輸入無效,因此未運行執行或矩陣。

範例:輸入檔案不是預期類型、格式錯誤/損壞或被標記為惡意軟體

工具結果步驟

表示工具結果步驟資源。

這有測試執行的結果。

JSON 表示
{
  "projectId": string,
  "historyId": string,
  "executionId": string,
  "stepId": string
}
領域
projectId

string

僅輸出。擁有該工具結果步驟的雲端項目。

historyId

string

僅輸出。工具結果歷史 ID。

executionId

string

僅輸出。工具結果執行 ID。

stepId

string

僅輸出。工具結果步驟 ID。

測試詳情

有關運行測試進度的其他詳細資訊。

JSON 表示
{
  "progressMessages": [
    string
  ],
  "errorMessage": string
}
領域
progressMessages[]

string

僅輸出。人類可讀的測試進度的詳細描述。例如:「配置設備」、「開始測試」。

在執行過程中,新資料可能會附加到 ProgressMessages 的末端。

errorMessage

string

僅輸出。如果 TestState 為 ERROR,則此字串將包含有關錯誤的人類可讀詳細資訊。

結果存儲

儲存運行測試結果的位置。

JSON 表示
{
  "googleCloudStorage": {
    object (GoogleCloudStorage)
  },
  "toolResultsHistory": {
    object (ToolResultsHistory)
  },
  "toolResultsExecution": {
    object (ToolResultsExecution)
  },
  "resultsUrl": string
}
領域
googleCloudStorage

object ( GoogleCloudStorage )

必需的。

toolResultsHistory

object ( ToolResultsHistory )

工具結果歷史記錄包含結果寫入的工具結果執行。

如果未提供,服務將選擇適當的值。

toolResultsExecution

object ( ToolResultsExecution )

僅輸出。結果寫入的工具結果執行。

resultsUrl

string

僅輸出。 Firebase Web 控制台中結果的 URL。

谷歌雲端儲存

Google 雲端儲存 (GCS) 中的儲存位置。

JSON 表示
{
  "gcsPath": string
}
領域
gcsPath

string

必需的。 GCS 中最終包含此測試結果的目錄的路徑。請求使用者必須對所提供路徑中的儲存桶具有寫入權限。

工具結果歷史記錄

代表工具結果歷史資源。

JSON 表示
{
  "projectId": string,
  "historyId": string
}
領域
projectId

string

必需的。擁有工具結果歷史記錄的雲端項目。

historyId

string

必需的。工具結果歷史 ID。

工具結果執行

代表工具結果執行資源。

這有 TestMatrix 的結果。

JSON 表示
{
  "projectId": string,
  "historyId": string,
  "executionId": string
}
領域
projectId

string

僅輸出。擁有該工具結果執行的雲端項目。

historyId

string

僅輸出。工具結果歷史 ID。

executionId

string

僅輸出。工具結果執行 ID。

無效矩陣詳情

矩陣被視為無效的詳細原因。

列舉
INVALID_MATRIX_DETAILS_UNSPECIFIED不使用。僅適用於原型版本控制。
DETAILS_UNAVAILABLE此矩陣無效,但沒有進一步的詳細資訊。
MALFORMED_APK無法解析輸入應用 APK。
MALFORMED_TEST_APK無法解析輸入測試 APK。
NO_MANIFEST找不到 AndroidManifest.xml。
NO_PACKAGE_NAME APK 清單未宣告套件名稱。
INVALID_PACKAGE_NAME APK 應用程式 ID(也稱為套件名稱)無效。另請參閱https://developer.android.com/build/configure-app-module#set-application-id
TEST_SAME_AS_APP測試包和app包是一樣的。
NO_INSTRUMENTATION測試 apk 不聲明檢測。
NO_SIGNATURE輸入的應用程式 apk 沒有簽名。
INSTRUMENTATION_ORCHESTRATOR_INCOMPATIBLE使用者指定的或測試 APK 清單檔案中指定的測試運行程式類別與 Android Test Orchestrator 不相容。 Orchestrator 僅與 AndroidJUnitRunner 版本 1.1 或更高版本相容。可以使用 DO_NOT_USE_ORCHESTRATOR OrchestratorOption 停用 Orchestrator。
NO_TEST_RUNNER_CLASS

測試 APK 不包含使用者指定的或清單檔案中指定的測試運行器類別。這可能是由以下原因之一引起的:

  • 使用者提供了不正確的運行器類別名稱,或者
  • 測試運行器未內建在測試 APK 中(可能位於應用程式 APK 中)。
NO_LAUNCHER_ACTIVITY找不到主要的啟動器活動。
FORBIDDEN_PERMISSIONS應用程式聲明了一項或多項不允許的權限。
INVALID_ROBO_DIRECTIVES提供的 roboDirectives 有衝突。
INVALID_RESOURCE_NAME提供的 robo 指令中至少有一個無效的資源名稱
INVALID_DIRECTIVE_ACTION robo 指令中的操作定義無效(例如,按一下或忽略操作包含輸入文字欄位)
TEST_LOOP_INTENT_FILTER_NOT_FOUND沒有測試循環意圖過濾器,或給定的意圖過濾器格式不正確。
SCENARIO_LABEL_NOT_DECLARED該請求包含未在清單中聲明的場景標籤。
SCENARIO_LABEL_MALFORMED解析標籤值時發生錯誤。
SCENARIO_NOT_DECLARED該請求包含未在清單中聲明的場景編號。
DEVICE_ADMIN_RECEIVER不允許設備管理員應用程式。
MALFORMED_XC_TEST_ZIP壓縮的 XCTest 格式錯誤。該 zip 不包含單一 .xctestrun 檔案和 DerivedData/Build/Products 目錄的內容。
BUILT_FOR_IOS_SIMULATOR壓縮的 XCTest 是為 iOS 模擬器而不是實體裝置建構的。
NO_TESTS_IN_XC_TEST_ZIP .xctestrun 檔案未指定任何測試目標。
USE_DESTINATION_ARTIFACTS .xctestrun 檔案中定義的一個或多個測試目標指定“UseDestinationArtifacts”,這是不允許的。
TEST_NOT_APP_HOSTED在實體裝置上執行的 XC 測試必須在 xctestrun 檔案中包含「IsAppHostedTestBundle」==「true」。
PLIST_CANNOT_BE_PARSED無法解析 XCTest zip 中的 Info.plist 檔案。
TEST_ONLY_APK

APK 被標記為「testOnly」。已棄用且當前未使用。

MALFORMED_IPA無法解析輸入的 IPA。
MISSING_URL_SCHEME應用程式不註冊遊戲循環 URL 方案。
MALFORMED_APP_BUNDLE無法處理 iOS 應用程式套件 (.app)。
NO_CODE_APK APK 不含代碼。另請參閱https://developer.android.com/guide/topics/manifest/application-element.html#code
INVALID_INPUT_APK提供的輸入 APK 路徑格式錯誤、APK 檔案不存在或使用者無權存取 APK 檔案。
INVALID_APK_PREVIEW_SDK APK 是為不受支援的預覽版 SDK 構建的
MATRIX_TOO_LARGE矩陣擴展為包含太多執行。
TEST_QUOTA_EXCEEDED沒有足夠的測試配額來運行此矩陣中的執行。
SERVICE_NOT_ACTIVATED所需的雲端服務API未啟動。請參閱:https: //firebase.google.com/docs/test-lab/android/continuous#requirements
UNKNOWN_PERMISSION_ERROR執行此測試時出現未知的權限問題。

結果總結

完成的測試矩陣的結果摘要。

列舉
OUTCOME_SUMMARY_UNSPECIFIED不使用。僅適用於原型版本控制。
SUCCESS

測試矩陣運作成功,例如:

  • 所有測試用例都通過了。
  • Robo 沒有偵測到被測應用程式崩潰。
FAILURE

運行失敗,例如:

  • 一個或多個測試用例失敗。
  • 測試超時。
  • 正在測試的應用程式崩潰了。
INCONCLUSIVE意想不到的事情發生了。運行仍應被視為不成功,但這可能是暫時性問題,重新運行測試可能會成功。
SKIPPED

所有測試都被跳過,例如:

  • 所有設備配置都不相容。

方法

cancel

取消測試矩陣中未完成的測試執行。

create

根據給定的規格建立並運行測試矩陣。

get

檢查測試矩陣的狀態及其建立後的執行。