REST Resource: projects.testMatrices

資源:TestMatrix

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 世界標準時間「Zulu」格式的時間戳記,解析度以奈秒為單位,小數點後最多 9 位。範例:"2014-10-02T15:01:23Z""2014-10-02T15:01:23.045123456Z"

invalidMatrixDetails

enum (InvalidMatrixDetails)

僅供輸出。說明矩陣被視為無效的原因。僅適用於無效狀態下的矩陣。

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)

用戶端的詳細資訊清單。

用戶端資訊詳細資料

叫用測試的用戶端詳細資訊的鍵/值組合。例如:{'Version', '1.0'}、{'Release Track', '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 分鐘。

持續時間以秒為單位,最多 9 個小數位數,結尾為「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 Robo 測試。

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 下的絕對路徑。路徑名稱的字元限制為 a-z A-Z 0-9 _ - 。+ 和 /

注意:路徑 /sdcard 和 /data 將提供使用,並視為隱式路徑替代。舉例來說,如果特定裝置上的 /sdcard 無法對應至外部儲存空間,系統將替換為該裝置的外部儲存路徑前置字串。

additionalApks[]

object (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 Testing 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)

一般檔案的參照。

ObbFile

不透明的二進位 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 這些路徑應該經過網址編碼 (百分比編碼)

一般檔案

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

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 未對應至外部儲存空間,系統會替換為該裝置的外部儲存路徑前置字串,並將檔案複製到外部儲存空間。

我們強烈建議你在應用程式中使用 Environment API 和測試程式碼,以透過可攜式方式存取裝置上的檔案。

APK

要安裝的 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 帳戶登入功能。如果設定的話,該服務會自動產生 Google 測試帳戶並將其新增至裝置,接著再執行測試。請注意,測試帳戶可能會重複使用。裝置上有帳戶時,許多應用程式都會顯示其完整功能。使用這些產生的帳戶登入裝置可測試更多功能。

環境變數

以環境變數的形式傳送至測試的鍵/值組合。

JSON 表示法
{
  "key": string,
  "value": string
}
欄位
key

string

環境變數的金鑰。

value

string

環境變數的值。

Systrace 設定

JSON 表示法
{
  "durationSeconds": integer
}
欄位
durationSeconds
(deprecated)

integer

Systrace 時間長度 (以秒為單位)。長度必須介於 1 到 30 秒之間。0 會停用 systrace。

IosTest 設定

說明執行測試前如何設定 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

檔案在裝置上的位置 (應用程式沙箱檔案系統中)

AndroidInstrumentationTest

測試可單獨控制 Android 元件的 Android 應用程式,不受其正常生命週期影響。Android 檢測設備測試會在虛擬或實體 AndroidDevice 的相同程序中執行應用程式 APK 和測試 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

每個目標都必須與套件名稱或類別名稱完全一致,格式如下:

  • 「package packageName」
  • 「class packageName.class_name」
  • 「class packageName.class_name#method_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 應用程式套件。

AppBundle

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

如需建構 App Bundle 的指引,請參閱 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 檔案。

OrchestratorOption

指定執行測試的方式。

列舉
ORCHESTRATOR_OPTION_UNSPECIFIED 預設值:伺服器會選擇模式。目前測試會在不使用協調程式的情況下執行。日後,所有檢測設備測試都會與自動化調度管理工具一起執行。我們強烈建議使用協調程式,因為這個程式提供的所有好處。
USE_ORCHESTRATOR 使用 Orchestrator 執行測試。** 僅與 AndroidJUnitRunner 1.1 以上版本相容!** (建議採用)。
DO_NOT_USE_ORCHESTRATOR 不使用 Orchestrator 執行測試。

ShardingOption

啟用資料分割的選項。

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。

手動資料分割

將測試案例資料分割為指定的套件、類別及/或方法群組。

啟用手動資料分割後,透過環境變數或 InstrumentationTest 來指定測試目標無效。

JSON 表示法
{
  "testTargetsForShard": [
    {
      object (TestTargetsForShard)
    }
  ]
}
欄位
testTargetsForShard[]

object (TestTargetsForShard)

執行個體類型,為每個手動建立資料分割執行的套件、類別及/或測試方法群組。如有這個欄位,至少須指定一個資料分割。選擇一或多個實體裝置時,重複的 testTargetsForShard 數量必須小於 50。如果您選取一或多部 ARM 虛擬裝置,裝置必須小於 200。僅選取 x86 虛擬裝置時,裝置必須小於 500。

TestTargetsForShard

資料分割的測試目標。

JSON 表示法
{
  "testTargets": [
    string
  ]
}
欄位
testTargets[]

string

每個資料分割要執行的套件、類別及/或測試方法群組。目標必須以 AndroidJUnitRunner 引數格式指定。例如「package com.my.packages」「class com.my.package.MyClass」。

testTarget 的數量必須大於 0。

智慧資料分割

根據先前的測試案例時間記錄進行資料分割測試。

JSON 表示法
{
  "targetedShardDuration": string
}
欄位
targetedShardDuration

string (Duration format)

資料分割中測試所需的時間。

預設值:300 秒 (5 分鐘)。下限:120 秒 (2 分鐘)。

系統會按照時間動態設定資料分割數量,但不超過資料分割數量上限 (如下所述)。為了確保每個資料分割至少有一個測試案例,資料分割的數量不會超過測試案例的數量。在下列情況下,將會超過資料分割的時間長度:

  • 達到資料分割上限後,分配給資料分割的剩餘測試時間就越多。
  • 任何個別測試預估會超過指定資料分割的時間長度。

系統無法保證資料分割的時間長度,因為智慧型資料分割會使用測試案例記錄和預設持續時間,但不一定準確。以下是找出測試案例時間記錄的規則:

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

由於實際資料分割持續時間可能會超過指定資料分割的時間長度,建議您將目標值設為低於系統允許的測試逾時上限 (實體裝置為 45 分鐘,虛擬裝置為 60 分鐘),或是使用您設定的自訂測試逾時值。這種做法可避免在所有測試完成前取消資料分割。

請注意,資料分割數量上限為上限。選擇一或多部實體裝置時,資料分割數量必須小於 50。如果您選取一或多部 ARM 虛擬裝置,裝置必須小於 200。僅選取 x86 虛擬裝置時,裝置必須小於 500。為確保每個資料分割至少有一個測試案例,資料分割數量不會超過測試案例的數量。每個建立的資料分割都會計入每日測試配額。

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

AndroidRoboTest

在虛擬或實體 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)

含有一系列動作的 JSON 檔案應做為檢索前瞻性的做法。

startingIntents[]

object (RoboStartingIntent)

用於啟動檢索應用程式的意圖。如果未提供,則會啟動主要啟動器活動。如有提供部分,則只會啟動所提供的項目 (必須明確提供主要啟動器活動)。

聯集欄位 app_under_test。執行個體類型,app_under_test 只能採用下列其中一種設定:
appApk

object (FileReference)

受測試應用程式的 APK。

appBundle

object (AppBundle)

測試中應用程式的多 APK 應用程式套件。

RoboDirective

在檢索期間遇到特定 UI 元素時,指示 Robo 與特定 UI 元素互動。Robo 目前可以執行文字輸入或元素點擊作業。

JSON 表示法
{
  "resourceName": string,
  "inputText": string,
  "actionType": enum (RoboActionType)
}
欄位
resourceName

string

執行個體類型,目標 UI 元素的 Android 資源名稱。例如,Java:XML 中的 R.string.foo:@string/foo,只需輸入「foo」部分。參考文件:https://developer.android.com/guide/topics/resources/accessing-resources.html

inputText

string

Robo 要導向設定的文字。如果留空,指令會視為與 resourceName 相符元素的 CLICK。

actionType

enum (RoboActionType)

執行個體類型,Robo 應對指定元素執行的動作類型。

RoboActionType

Robo 可對 UI 元素執行的動作。

列舉
ACTION_TYPE_UNSPECIFIED 請勿使用。僅適用於 proto 版本管理。
SINGLE_CLICK 引導 Robo 點擊特定元素。如果指定的元素不可點擊,則免人工管理。
ENTER_TEXT 指示 Robo 在指定元素上輸入文字。如果指定元素未啟用或不允許輸入文字,則為「免人工管理」。
IGNORE 指示 Robo 忽略與特定元素的互動。

RoboMode 模型

執行 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)

每項意圖的逾時時間 (以秒為單位)。

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

聯集欄位 starting_intent。執行個體類型,用來啟動活動的意圖詳細資料。starting_intent 只能採用下列其中一種設定:
launcherActivity

object (LauncherActivityIntent)

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

startActivity

object (StartActivityIntent)

以特定詳細資料啟動活動的意圖。

LauncherActivityIntent

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

開始活動意圖

由動作、URI 和類別指定的起始意圖。

JSON 表示法
{
  "action": string,
  "uri": string,
  "categories": [
    string
  ]
}
欄位
action

string

動作名稱。「START_ACTIVITY」的必要欄位。

uri

string

動作的 URI。

categories[]

string

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

AndroidTestLoop

使用測試迴圈的 Android 應用程式測試。由於目前遊戲是此 API 唯一的使用者,因此系統會間接新增意圖 <intent-name>。

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 應用程式套件。

IosXcTest

採用 XCTest 架構的 iOS 應用程式測試。Xcode 支援「Build for test」選項,這會產生包含測試規格 (引數、測試方法等) 的 .xctestrun 檔案。這個測試類型接受含有 .xctestrun 檔案的 ZIP 檔案,以及「Build/Products」目錄中的對應內容,其中包含執行測試所需的所有二進位檔。

JSON 表示法
{
  "testsZip": {
    object (FileReference)
  },
  "xctestrun": {
    object (FileReference)
  },
  "xcodeVersion": string,
  "appBundleId": string,
  "testSpecialEntitlements": boolean
}
欄位
testsZip

object (FileReference)

執行個體類型,包含 .xctestrun 檔案的 .zip 檔案,以及 DerivedData/Build/Products 目錄的內容。如果指定 xctestrun 欄位,則會忽略這個 ZIP 檔案中的 .xctestrun 檔案。

xctestrun

object (FileReference)

.xctestrun 檔案,會覆寫測試 ZIP 檔案中的 .xctestrun 檔案。由於 .xctestrun 檔案包含環境變數和執行和/或忽略的測試方法,因此很適合用於資料分割測試。系統會從測試 ZIP 擷取預設值。

xcodeVersion

string

應用於測試的 Xcode 版本。使用 TestEnvironmentDiscoveryService 取得支援的選項。預設為 Firebase Test Lab 支援的最新 Xcode 版本。

appBundleId

string

僅供輸出。受測試應用程式的軟體包 ID。

testSpecialEntitlements

boolean

測試特殊應用程式授權的選項。這項設定會重新簽署具有明確應用程式 ID 的特殊授權。目前支援測試 Aps 環境授權。

IosTestLoop

實作一或多個遊戲迴圈情境的 iOS 應用程式測試。這個測試類型接受封存的應用程式 (.ipa 檔案),以及將在應用程式依序執行的整數情境清單。

JSON 表示法
{
  "appIpa": {
    object (FileReference)
  },
  "scenarios": [
    integer
  ],
  "appBundleId": string
}
欄位
appIpa

object (FileReference)

執行個體類型,要測試的應用程式 .ipa。

scenarios[]

integer

應在測試期間執行的情境清單。如未指定,預設為單一情境 0。

appBundleId

string

僅供輸出。受測試應用程式的軟體包 ID。

EnvironmentMatrix

執行測試的環境矩陣。

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 裝置清單。

AndroidMatrix

一組 Android 裝置設定排列組合是由指定軸的交叉乘積定義。系統內部會將指定的 AndroidMatrix 展開成一組 Android 裝置。

只有支援的排列方式會例項化。系統會忽略無效的排列組合 (例如不相容的模型/版本)。

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 主要軟體版本編號,使用 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)

僅供輸出。表示目前的測試執行進度 (例如已完成)。

toolResultsStep

object (ToolResultsStep)

僅供輸出。這項執行作業結果的寫入位置。

timestamp

string (Timestamp format)

僅供輸出。這項測試執行作業的初始建立時間。

RFC3339 世界標準時間「Zulu」格式的時間戳記,解析度以奈秒為單位,小數點後最多 9 位。範例:"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)

僅供輸出。根據先前的測試案例時間記錄 (如有) 估算的資料分割時間長度。

持續時間以秒為單位,最多 9 個小數位數,結尾為「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 請勿使用。僅適用於 proto 版本管理。
VALIDATING 執行作業或矩陣正在驗證。
PENDING 執行作業或矩陣正在等候資源可供使用。
RUNNING

正在執行執行作業。

只能在執行作業中設定。

FINISHED

執行或矩陣已正常終止。

在矩陣上,這表示矩陣層級的處理程序已正常完成,但個別執行可能處於 ERROR 狀態。

ERROR 執行或矩陣因基礎架構故障而停止。
UNSUPPORTED_ENVIRONMENT

由於執行作業對應至不支援的環境,因此無法執行。

只能在執行作業中設定。

INCOMPATIBLE_ENVIRONMENT

提供的輸入內容與要求的環境不相容,因此無法執行。

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

只能在執行作業中設定。

INCOMPATIBLE_ARCHITECTURE

提供的輸入內容與要求的架構不相容,因此無法執行。

例如:要求的裝置不支援在提供的 APK 中執行原生程式碼

只能在執行作業中設定。

CANCELLED

使用者已取消執行。

只能在執行作業中設定。

INVALID

由於提供的輸入內容無效,因此執行作業或矩陣未執行。

例:輸入檔案非預期類型、格式錯誤/損毀或遭標記為惡意軟體

工具結果步驟

代表工具結果步驟資源。

這項測試的結果是 TestExecution 的結果。

JSON 表示法
{
  "projectId": string,
  "historyId": string,
  "executionId": string,
  "stepId": string
}
欄位
projectId

string

僅供輸出。擁有工具結果步驟的 Cloud 專案。

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 網頁控制台中的結果網址。

GoogleCloudStorage

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

JSON 表示法
{
  "gcsPath": string
}
欄位
gcsPath

string

執行個體類型,GCS 中的目錄路徑,該目錄最終會包含這項測試的結果。在提供的路徑中,提出要求的使用者必須具備值區的寫入權限。

工具結果記錄

代表工具結果記錄資源。

JSON 表示法
{
  "projectId": string,
  "historyId": string
}
欄位
projectId

string

執行個體類型,擁有工具結果的 Cloud 專案。

historyId

string

執行個體類型,工具結果記錄 ID。

ToolResultsExecution

代表工具結果執行資源。

這有 TestMatrix 的結果。

JSON 表示法
{
  "projectId": string,
  "historyId": string,
  "executionId": string
}
欄位
projectId

string

僅供輸出。執行工具的 Cloud 專案。

historyId

string

僅供輸出。工具結果記錄 ID。

executionId

string

僅供輸出。工具結果執行作業 ID。

InvalidMatrixDetails

矩陣被認定為「無效」的詳細原因。

列舉
INVALID_MATRIX_DETAILS_UNSPECIFIED 請勿使用。僅適用於 proto 版本管理。
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 測試套件和應用程式套件相同。
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 壓縮檔中的 Info.plist 檔案。
TEST_ONLY_APK

這個 APK 會標示為「testOnly」。已淘汰,目前未使用。

MALFORMED_IPA 無法剖析輸入的 IPA。
MISSING_URL_SCHEME 應用程式未註冊遊戲迴圈網址配置。
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 請勿使用。僅適用於 proto 版本管理。
SUCCESS

測試矩陣執行成功,例如:

  • 已通過所有測試案例。
  • Robo 未偵測到測試中應用程式的當機情形。
FAILURE

執行作業失敗,例如:

  • 一或多個測試案例失敗。
  • 測試逾時。
  • 受測應用程式當機。
INCONCLUSIVE 發生未預期的錯誤,系統應該仍會認為執行作業失敗,但這可能是暫時性問題,並重新執行測試也可能成功。
SKIPPED

已略過所有測試,例如:

  • 所有裝置設定都不相容。

方法

cancel

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

create

根據指定規格建立並執行測試矩陣。

get

檢查測試矩陣的狀態和建立後的執行作業。