- 資源:TestMatrix
- 用戶端資訊
- 用戶端資訊詳細資料
- TestSpecification
- 測試設定
- 裝置檔案
- ObbFile
- FileReference
- RegularFile
- APK
- 帳戶
- GoogleAuto
- 環境變數
- SystraceSetup
- IosTest 設定
- IosDeviceFile
- AndroidInstrumentationTest
- AppBundle
- OrchestratorOption
- ShardingOption
- 統一資料分割
- 手動資料分割
- TestTargetsForShard
- SmartSharding
- AndroidRoboTest
- RoboDirective
- RoboActionType
- RoboMode
- RoboStartIntent
- LauncherActivityIntent
- StartActivityIntent
- NoActivityIntent
- AndroidTestLoop
- IosXcTest
- IosTestLoop
- IosRoboTest
- EnvironmentMatrix
- AndroidMatrix
- AndroidDeviceList
- IosDeviceList
- IosDevice
- 測試執行
- 資料分割
- 環境
- TestState
- ToolResultsStep
- TestDetails
- 結果儲存空間
- GoogleCloudStorage
- ToolResultsHistory
- ToolResultsExecution
- InvalidMatrixDetails
- MatrixErrorDetail
- 結果摘要
- 方法
資源:TestMatrix
TestMatrix 會擷取測試的所有詳細資料。其中包含環境設定、測試規格、測試執行,以及整體狀態和結果。
JSON 表示法 |
---|
{ "testMatrixId": string, "projectId": string, "clientInfo": { object ( |
欄位 | |
---|---|
testMatrixId |
僅供輸出。服務設定的專屬 ID。 |
projectId |
擁有測試矩陣的雲端專案。 |
clientInfo |
叫用測試的用戶端相關資訊。 |
testSpecification |
執行個體類型,如何執行測試。 |
environmentMatrix |
執行個體類型,執行測試的裝置。 |
testExecutions[] |
僅供輸出。服務為這個矩陣建立的測試執行清單。 |
resultStorage |
執行個體類型,系統會寫入矩陣結果的位置。 |
state |
僅供輸出。表示測試矩陣的目前進度。 |
timestamp |
僅供輸出。這個測試矩陣的最初建立時間。 RFC3339 世界標準時間「Zulu」的時間戳記格式,解析度為奈秒,且最多 9 個小數位數。範例: |
invalidMatrixDetails |
僅供輸出。說明矩陣被視為無效的原因。僅適用於無效狀態下的矩陣。 |
extendedInvalidMatrixDetails[] |
僅供輸出。詳細瞭解矩陣被判定為無效的原因。如果可以安全執行多項檢查,系統會回報這些檢查,但不應就此清單長度做出任何假設。 |
flakyTestAttempts |
在一或多個測試案例因故失敗時,應重新嘗試執行 TestExecution 的次數。最多只能重新執行 10 次。 預設值為 0,表示不會重新執行。 |
outcomeSummary |
僅供輸出。整體測試結果。只有在測試矩陣狀態為 FINISHED 時,才能設定。 |
failFast |
如果設為 true,最多只有一次嘗試執行矩陣中的每個執行作業/資料分割。不穩定的測試不會受到影響。 一般來說,如果偵測到潛在的基礎架構問題,則會嘗試至少嘗試 2 次。 這項功能適用於容易受延遲影響的工作負載,針對失敗迅速矩陣,其執行失敗的發生率可能會顯著較大,且支援因這個期望而受到限制。 |
ClientInfo
叫用測試的用戶端相關資訊。
JSON 表示法 |
---|
{
"name": string,
"clientInfoDetails": [
{
object ( |
欄位 | |
---|---|
name |
執行個體類型,用戶端名稱,例如 gcloud。 |
clientInfoDetails[] |
用戶端的詳細資訊清單。 |
用戶端資訊詳細資料
叫用測試的用戶端詳細資訊的鍵/值組合。例如:{'Version', '1.0'}、{'Release Track', 'BETA'}。
JSON 表示法 |
---|
{ "key": string, "value": string } |
欄位 | |
---|---|
key |
執行個體類型,客戶詳細資訊的重點。 |
value |
執行個體類型,詳細客戶資訊的值。 |
測試規格
如何執行測試的說明。
JSON 表示法 |
---|
{ "testTimeout": string, "disableVideoRecording": boolean, "disablePerformanceMetrics": boolean, // Union field |
欄位 | |
---|---|
testTimeout |
測試執行作業允許執行的時間上限,超過這段時間就會自動取消。預設值為 5 分鐘。 持續時間以秒為單位,最多 9 個小數位數,結尾為「 |
disableVideoRecording |
停用錄影功能。可以縮短測試延遲時間。 |
disablePerformanceMetrics |
停用成效指標記錄。可以縮短測試延遲時間。 |
聯集欄位 setup 。測試設定需求條件。setup 只能採用下列其中一種設定: |
|
testSetup |
測試 Android 的設定需求,例如才能安裝、啟動指令碼 |
iosTestSetup |
iOS 裝置的測試設定需求。 |
聯集欄位 test 。執行個體類型,要執行的測試類型。test 只能採用下列其中一種設定: |
|
androidInstrumentationTest |
Android 檢測設備測試。 |
androidRoboTest |
Android Robo 測試。 |
androidTestLoop |
具有測試迴圈的 Android 應用程式。 |
iosXcTest |
iOS XCTest (透過 .xctestrun 檔案執行)。 |
iosTestLoop |
有測試迴圈的 iOS 應用程式。 |
iosRoboTest |
iOS Robo 測試。 |
測試設定
說明執行測試前如何設定 Android 裝置。
JSON 表示法 |
---|
{ "filesToPush": [ { object ( |
欄位 | |
---|---|
filesToPush[] |
開始測試前要推送至裝置的檔案清單。 |
directoriesToPull[] |
測試結束時要上傳至 GCS 的裝置目錄清單;它們必須是 /sdcard、/storage 或 /data/local/tmp 下的絕對路徑。路徑名稱的字元限制為 a-z A-Z 0-9 _ - 。+ 和 / 注意:路徑 /sdcard 和 /data 將提供使用,並視為隱式路徑替代。例如:如果特定裝置上的 /sdcard 未對應至外部儲存空間,則系統將替換為該裝置的外部儲存路徑前置字串。 |
initialSetupApks[] |
選用設定。安裝受測試的應用程式前要安裝的初始設定 APK。目前上限是 100 個。 |
additionalApks[] |
直接安裝的 APK。這些將會在接受測試的應用程式之後安裝。目前上限是 100 個。 |
account |
測試期間,這部裝置會登入帳戶。 |
networkProfile |
用於執行測試的網路流量設定檔。呼叫 TestEnvironmentDiscoveryService.GetTestEnvironmentCatalog 時,您可以使用 NETWORK_CONFIGURATION 環境類型查詢可用的網路設定檔。 |
environmentVariables[] |
要為測試設定的環境變數 (僅適用於檢測設備測試)。 |
systrace |
執行作業的 Systrace 設定。已淘汰:Systrace 使用的 Python 2 已於 2020 年 1 月 1 日停用。Cloud Testing API 已不再支援 Systrace,因此結果中也不會提供 Systrace 檔案。 |
dontAutograntPermissions |
是否禁止在安裝應用程式時授予所有執行階段權限 |
裝置檔案
單一裝置檔案說明。
JSON 表示法 |
---|
{ // Union field |
欄位 | |
---|---|
聯集欄位 device_file 。執行個體類型,device_file 只能採用下列其中一種設定: |
|
obbFile |
不透明二進位 blob 檔案的參照。 |
regularFile |
一般檔案的參照。 |
ObbFile
不透明的二進位 blob 檔案,會在測試開始之前安裝在裝置上。
JSON 表示法 |
---|
{
"obbFileName": string,
"obb": {
object ( |
欄位 | |
---|---|
obbFileName |
執行個體類型,OBB 檔案名稱,必須符合 Android 指定的格式,例如[main|patch].0300110.com.example.android.obb 將安裝在裝置的 <shared-storage>/Android/obb/<package-name>/ 中。 |
obb |
執行個體類型,要安裝在裝置上的不透明二進位檔 Blob (OBB) 檔案。 |
檔案參考資料
用於使用者輸入內容的檔案參照。
JSON 表示法 |
---|
{ // Union field |
欄位 | |
---|---|
聯集欄位 file 。執行個體類型,檔案參照。file 只能採用下列其中一種設定: |
|
gcsPath |
Google Cloud Storage 中檔案的路徑。例如:gs://build-app-1414623860166/app%40debug-unaligned.apk 這些路徑應該經過網址編碼 (百分比編碼) |
一般檔案
測試開始之前,要在裝置上安裝的檔案或目錄。
JSON 表示法 |
---|
{
"content": {
object ( |
欄位 | |
---|---|
content |
執行個體類型,來源檔案。 |
devicePath |
執行個體類型,內容在裝置上的擺放位置。必須是已加入許可清單的絕對路徑。如果檔案確實存在,將被取代。下列裝置端目錄和其任何子目錄都已加入許可清單: ${EXTERNAL_STORAGE}、/sdcard 或 /storage ${ANDROID_DATA}/local/tmp 或 /data/local/tmp 指定這些目錄樹狀結構以外的路徑無效。 路徑 /sdcard 和 /data 將可用,並視為隱含路徑替代。例如:如果特定裝置上的 /sdcard 未對應至外部儲存空間,則系統會將其替換為該裝置的外部儲存路徑前置字串,並將檔案複製到該位置。 我們強烈建議你在應用程式中使用 Environment API 和測試程式碼,以透過可攜式方式存取裝置上的檔案。 |
APK
要安裝的 Android 套件檔案。
JSON 表示法 |
---|
{
"location": {
object ( |
欄位 | |
---|---|
location |
測試開始之前,要在裝置上安裝的 APK 路徑。 |
packageName |
要安裝的 APK 的 Java 套件。值會經由檢視應用程式的資訊清單而決定。 |
帳戶
識別帳戶及登入方式。
JSON 表示法 |
---|
{ // Union field |
欄位 | |
---|---|
聯集欄位 account_type 。執行個體類型,帳戶類型,以帳戶用途 (例如 Google) 和登入機制 (例如使用者名稱和密碼) 為依據。account_type 只能採用下列其中一種設定: |
|
googleAuto |
自動 Google 登入帳戶。 |
Google 汽車
這個類型沒有任何欄位。
啟用自動 Google 帳戶登入功能。如果設定的話,該服務會自動產生 Google 測試帳戶並將其新增至裝置,再執行測試。請注意,測試帳戶可能會重複使用。裝置上有帳戶時,許多應用程式都會顯示其完整功能。使用這些產生的帳戶登入裝置可測試更多功能。
環境變數
以環境變數的形式傳送至測試的鍵/值組合。
JSON 表示法 |
---|
{ "key": string, "value": string } |
欄位 | |
---|---|
key |
環境變數的金鑰。 |
value |
環境變數的值。 |
Systrace 設定
JSON 表示法 |
---|
{ "durationSeconds": integer } |
欄位 | |
---|---|
durationSeconds |
Systrace 時間長度 (以秒為單位)。長度必須介於 1 到 30 秒之間。0 會停用 systrace。 |
IosTest 設定
說明執行測試前如何設定 iOS 裝置。
JSON 表示法 |
---|
{ "networkProfile": string, "additionalIpas": [ { object ( |
欄位 | |
---|---|
networkProfile |
用於執行測試的網路流量設定檔。呼叫 TestEnvironmentDiscoveryService.GetTestEnvironmentCatalog 時,您可以使用 NETWORK_CONFIGURATION 環境類型查詢可用的網路設定檔。 |
additionalIpas[] |
選擇直接安裝的 iOS 應用程式。 |
pushFiles[] |
開始測試前要推送至裝置的檔案清單。 |
pullDirectories[] |
測試結束時,要上傳至 Cloud Storage 的裝置目錄清單。 目錄應位於共用目錄 (例如 /private/var/mobile/Media) 中,或是藉由指定軟體包 ID,位於應用程式檔案系統內的可存取目錄 (例如 /Documents)。 |
iOS 裝置檔案
測試開始之前,要在裝置上安裝的檔案或目錄。
JSON 表示法 |
---|
{
"content": {
object ( |
欄位 | |
---|---|
content |
來源檔案 |
bundleId |
這個檔案所在的應用程式軟體包 ID。 iOS 應用程式採用沙箱機制,因此應用程式檔案必須指定裝置上安裝的應用程式。 |
devicePath |
檔案在裝置上的位置 (應用程式沙箱檔案系統中) |
AndroidInstrumentationTest
測試可單獨控制 Android 元件的 Android 應用程式,不受其正常生命週期影響。Android 檢測設備測試會在虛擬或實體 AndroidDevice 的相同程序中執行應用程式 APK 和測試 APK。此外,他們也會指定測試執行工具類別 (例如 com.google.GoogleTestRunner),這可能會因為選定的檢測架構而改變。
如要進一步瞭解 Android 測試類型,請參閱 https://developer.android.com/training/testing/fundamentals。
JSON 表示法 |
---|
{ "testApk": { object ( |
欄位 | |
---|---|
testApk |
執行個體類型,包含要執行的測試程式碼的 APK。 |
appPackageId |
受測試應用程式的 Java 套件。預設值是由檢查應用程式的資訊清單決定。 |
testPackageId |
要執行測試的 Java 套件。預設值是由檢查應用程式的資訊清單決定。 |
testRunnerClass |
InstrumentationTestRunner 類別。預設值是由檢查應用程式的資訊清單決定。 |
testTargets[] |
每個目標都必須與套件名稱或類別名稱完全一致,格式如下:
如果留空,系統會執行模組中的所有目標。 |
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 |
選擇同時在多個資料分割中執行測試。 |
聯集欄位 app_under_test 。執行個體類型,app_under_test 只能採用下列其中一種設定: |
|
appApk |
受測試應用程式的 APK。 |
appBundle |
測試中應用程式的多 APK 應用程式套件。 |
AppBundle
Android App Bundle 檔案格式,內含 BundleConfig.pb 檔案、基本模組目錄,以及零或多個動態功能模組目錄。
如需建構 App Bundle 的指引,請參閱 https://developer.android.com/guide/app-bundle/build。
JSON 表示法 |
---|
{ // Union field |
欄位 | |
---|---|
聯集欄位 bundle 。執行個體類型,套裝組合位置資訊。bundle 只能採用下列其中一種設定: |
|
bundleLocation |
代表受測試應用程式套件的 .aab 檔案。 |
OrchestratorOption
指定執行測試的方式。
列舉 | |
---|---|
ORCHESTRATOR_OPTION_UNSPECIFIED |
預設值:伺服器會選擇模式。目前測試會在不使用協調程式的情況下執行。日後,所有檢測設備測試都會與自動化調度管理工具一起執行。我們強烈建議使用協調程式,因為這個程式提供的所有好處。 |
USE_ORCHESTRATOR |
使用 Orchestrator 執行測試。** 僅與 AndroidJUnitRunner 1.1 以上版本相容!** (建議採用)。 |
DO_NOT_USE_ORCHESTRATOR |
不使用 Orchestrator 執行測試。 |
ShardingOption
啟用資料分割的選項。
JSON 表示法 |
---|
{ // Union field |
欄位 | |
---|---|
聯集欄位
|
|
uniformSharding |
根據指定的資料分割總數,採用統一的資料分割測試案例。 |
manualSharding |
將測試案例資料分割為指定的套件、類別及/或方法群組。 |
smartSharding |
根據先前的測試案例時間記錄進行資料分割測試。 |
統一資料分割
根據指定的資料分割總數,採用統一的資料分割測試案例。
檢測設備測試會轉譯為「-e numShard」和「-e shardIndex」AndroidJUnitRunner 引數。啟用統一資料分割功能後,透過 environmentVariables
指定任一資料分割引數無效。
根據 AndroidJUnitRunner 使用的資料分割機制,無法保證測試案例會統一發布至所有資料分割。
JSON 表示法 |
---|
{ "numShards": integer } |
欄位 | |
---|---|
numShards |
執行個體類型,要建立的資料分割總數。這個值一律須為正數,且不會大於測試案例總數。選擇一或多部實體裝置時,資料分割數量必須小於 50。如果您選取一或多部 ARM 虛擬裝置,裝置必須小於 200。僅選取 x86 虛擬裝置時,裝置必須小於 500。 |
手動資料分割
將測試案例資料分割為指定的套件、類別及/或方法群組。
啟用手動資料分割後,透過環境變數或 InstrumentationTest 來指定測試目標無效。
JSON 表示法 |
---|
{
"testTargetsForShard": [
{
object ( |
欄位 | |
---|---|
testTargetsForShard[] |
執行個體類型,為每個手動建立資料分割執行的套件、類別及/或測試方法群組。如有這個欄位,至少須指定一個資料分割。選擇一或多個實體裝置時,重複的 testTargetsForShard 數量必須小於 50。如果您選取一或多部 ARM 虛擬裝置,裝置必須小於 200。僅選取 x86 虛擬裝置時,裝置必須小於 500。 |
TestTargetsForShard
資料分割的測試目標。
JSON 表示法 |
---|
{ "testTargets": [ string ] } |
欄位 | |
---|---|
testTargets[] |
每個資料分割要執行的套件、類別及/或測試方法群組。目標必須以 AndroidJUnitRunner 引數格式指定。例如「package com.my.packages」「class com.my.package.MyClass」。 testTarget 的數量必須大於 0。 |
智慧資料分割
根據先前的測試案例時間記錄進行資料分割測試。
JSON 表示法 |
---|
{ "targetedShardDuration": string } |
欄位 | |
---|---|
targetedShardDuration |
資料分割中測試所需的時間。 預設值:300 秒 (5 分鐘)。下限:120 秒 (2 分鐘)。 系統會按照時間動態設定資料分割數量,但不超過資料分割數量上限 (如下所述)。為了確保每個資料分割至少有一個測試案例,資料分割的數量不會超過測試案例的數量。在下列情況下,將會超過資料分割的時間長度:
系統無法保證資料分割的時間長度,因為智慧型資料分割會使用測試案例記錄和預設持續時間,但不一定準確。以下是找出測試案例時間記錄的規則:
由於實際資料分割持續時間可能會超過指定資料分割的時間長度,建議您將目標值設為低於系統允許的測試逾時上限 (實體裝置為 45 分鐘,虛擬裝置為 60 分鐘),或是使用您設定的自訂測試逾時值。這種做法可避免在所有測試完成前取消資料分割。 請注意,資料分割數量上限為上限。選擇一或多部實體裝置時,資料分割數量必須小於 50。如果您選取一或多部 ARM 虛擬裝置,裝置必須小於 200。僅選取 x86 虛擬裝置時,裝置必須小於 500。為確保每個資料分割至少有一個測試案例,資料分割數量不會超過測試案例的數量。每個建立的資料分割都會計入每日測試配額。 持續時間以秒為單位,最多 9 個小數位數,結尾為「 |
AndroidRoboTest
在虛擬或實體 Android 裝置上探索應用程式的 Android 應用程式測試,在過程中找出問題和當機問題。
JSON 表示法 |
---|
{ "appPackageId": string, "appInitialActivity": string, "maxDepth": integer, "maxSteps": integer, "roboDirectives": [ { object ( |
欄位 | |
---|---|
appPackageId |
受測試應用程式的 Java 套件。預設值是由檢查應用程式的資訊清單決定。 |
appInitialActivity |
應用來啟動應用程式的初始活動。 |
maxDepth |
Robo 可探索的周遊堆疊深度上限。需要至少 2 秒鐘,才能讓 Robo 探索應用程式,不再侷限於第一次活動。預設值為 50。 |
maxSteps |
Robo 可執行的步驟數量上限。預設值為無限制。 |
roboDirectives[] |
Robo 在檢索期間應套用的一組指令。這可讓使用者自訂檢索。舉例來說,您可以提供測試帳戶的使用者名稱和密碼。 |
roboMode |
執行 Robo 的模式。大多數用戶端都應該允許伺服器自動填入這個欄位。 |
roboScript |
含有一系列動作的 JSON 檔案應做為檢索前瞻性的做法。 |
startingIntents[] |
用於啟動檢索應用程式的意圖。如果未提供,則會啟動主要啟動器活動。如有提供部分,則只會啟動所提供的項目 (必須明確提供主要啟動器活動)。 |
聯集欄位 app_under_test 。執行個體類型,app_under_test 只能採用下列其中一種設定: |
|
appApk |
受測試應用程式的 APK。 |
appBundle |
測試中應用程式的多 APK 應用程式套件。 |
RoboDirective
在檢索期間遇到特定 UI 元素時,指示 Robo 與特定 UI 元素互動。Robo 目前可以執行文字輸入或元素點擊作業。
JSON 表示法 |
---|
{
"resourceName": string,
"inputText": string,
"actionType": enum ( |
欄位 | |
---|---|
resourceName |
執行個體類型,目標 UI 元素的 Android 資源名稱。例如,在 Java 中:XML 中的 R.string.foo:@string/foo 只有「foo」不需要的部分參考文件:https://developer.android.com/guide/topics/resources/accessing-resources.html |
inputText |
Robo 要導向設定的文字。如果留空,指令會視為與 resourceName 相符元素的 CLICK。 |
actionType |
執行個體類型,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 |
欄位 | |
---|---|
timeout |
每項意圖的逾時時間 (以秒為單位)。 持續時間以秒為單位,最多 9 個小數位數,結尾為「 |
聯集欄位 starting_intent 。執行個體類型,用來啟動活動的意圖詳細資料。starting_intent 只能採用下列其中一種設定: |
|
launcherActivity |
啟動主要啟動器活動的意圖。 |
startActivity |
以特定詳細資料啟動活動的意圖。 |
noActivity |
略過起始活動 |
LauncherActivityIntent
這個類型沒有任何欄位。
指定啟動主要啟動器活動的意圖。
開始活動意圖
由動作、URI 和類別指定的起始意圖。
JSON 表示法 |
---|
{ "action": string, "uri": string, "categories": [ string ] } |
欄位 | |
---|---|
action |
動作名稱。「START_ACTIVITY」的必要欄位。 |
uri |
動作的 URI。 |
categories[] |
要在意圖上設定的意圖類別。 |
沒有活動意圖
這個類型沒有任何欄位。
略過起始活動
AndroidTestLoop
使用測試迴圈的 Android 應用程式測試。意圖 <intent-name>由於目前遊戲是此 API 的唯一使用者,因此會以隱含形式新增。
JSON 表示法 |
---|
{ "appPackageId": string, "scenarios": [ integer ], "scenarioLabels": [ string ], // Union field |
欄位 | |
---|---|
appPackageId |
受測試應用程式的 Java 套件。系統會檢查應用程式的資訊清單,決定預設值。 |
scenarios[] |
應在測試期間執行的情境清單。預設為所有測試迴圈,衍生自應用程式的資訊清單。 |
scenarioLabels[] |
應在測試期間執行的情境標籤清單。情境標籤應對應至應用程式資訊清單中定義的標籤。舉例來說,Player_experience 和 com.google.test.loops.player_experience 將新增資訊清單中的所有迴圈,並附上 com.google.test.loops.player_experience 的名稱。情境欄位也可以指定情境欄位。 |
聯集欄位 app_under_test 。執行個體類型,要測試的 Android 套件。app_under_test 只能採用下列其中一種設定: |
|
appApk |
受測試應用程式的 APK。 |
appBundle |
測試中應用程式的多 APK 應用程式套件。 |
IosXcTest
採用 XCTest 架構的 iOS 應用程式測試。Xcode 支援「Build for test」選項,這會產生包含測試規格 (引數、測試方法等) 的 .xctestrun 檔案。這個測試類型接受 ZIP 檔案,內含 .xctestrun 檔案,以及「Build/Products」目錄中的對應內容,其中包含執行測試所需的所有二進位檔。
JSON 表示法 |
---|
{ "testsZip": { object ( |
欄位 | |
---|---|
testsZip |
執行個體類型,包含 .xctestrun 檔案的 .zip 檔案,以及 DerivedData/Build/Products 目錄的內容。如果指定 xctestrun 欄位,則會忽略這個 ZIP 檔案中的 .xctestrun 檔案。 |
xctestrun |
.xctestrun 檔案,會覆寫測試 ZIP 檔案中的 .xctestrun 檔案。由於 .xctestrun 檔案包含環境變數和執行和/或忽略的測試方法,因此很適合用於資料分割測試。系統會從測試 ZIP 擷取預設值。 |
xcodeVersion |
應用於測試的 Xcode 版本。使用 TestEnvironmentDiscoveryService 取得支援的選項。預設為 Firebase Test Lab 支援的最新 Xcode 版本。 |
appBundleId |
僅供輸出。受測試應用程式的軟體包 ID。 |
testSpecialEntitlements |
測試特殊應用程式授權的選項。這項設定會重新簽署具有明確應用程式 ID 的特殊授權。目前支援測試 Aps 環境授權。 |
IosTestLoop
實作一或多個遊戲迴圈情境的 iOS 應用程式測試。這個測試類型接受封存的應用程式 (.ipa 檔案),以及將在應用程式依序執行的整數情境清單。
JSON 表示法 |
---|
{
"appIpa": {
object ( |
欄位 | |
---|---|
appIpa |
執行個體類型,要測試的應用程式 .ipa。 |
scenarios[] |
應在測試期間執行的情境清單。如未指定,預設為單一情境 0。 |
appBundleId |
僅供輸出。受測試應用程式的軟體包 ID。 |
IosRoboTest
測試 iOS 裝置上的 iOS 應用程式。
JSON 表示法 |
---|
{ "appIpa": { object ( |
欄位 | |
---|---|
appIpa |
執行個體類型,應使用儲存在這個檔案的 ipa 執行測試。 |
appBundleId |
應用程式在背後測試的軟體包 ID。只要檢查應用程式的「Info.plist」檔案。 |
roboScript |
(選用) 用於自訂檢索的 Roboscript。如要進一步瞭解 Roboscripts,請前往 https://firebase.google.com/docs/test-lab/android/robo-scripts-reference。 |
EnvironmentMatrix
執行測試的環境矩陣。
JSON 表示法 |
---|
{ // Union field |
欄位 | |
---|---|
聯集欄位 environment_matrix 。執行個體類型,環境矩陣。environment_matrix 只能採用下列其中一種設定: |
|
androidMatrix |
Android 裝置矩陣。 |
androidDeviceList |
Android 裝置清單;測試將只會在特定裝置上執行。 |
iosDeviceList |
iOS 裝置清單。 |
AndroidMatrix
一組 Android 裝置設定排列組合是由指定軸的交叉乘積定義。系統內部會將指定的 AndroidMatrix 展開成一組 Android 裝置。
只有支援的排列方式會例項化。系統會忽略無效的排列組合 (例如不相容的模型/版本)。
JSON 表示法 |
---|
{ "androidModelIds": [ string ], "androidVersionIds": [ string ], "locales": [ string ], "orientations": [ string ] } |
欄位 | |
---|---|
androidModelIds[] |
執行個體類型,要使用的 Android 裝置組合 ID。使用 TestEnvironmentDiscoveryService 取得支援的選項。 |
androidVersionIds[] |
執行個體類型,要使用的 Android 作業系統版本組合 ID。使用 TestEnvironmentDiscoveryService 取得支援的選項。 |
locales[] |
執行個體類型,測試裝置將用於測試的語言代碼組合。使用 TestEnvironmentDiscoveryService 取得支援的選項。 |
orientations[] |
執行個體類型,要測試的螢幕方向組合。使用 TestEnvironmentDiscoveryService 取得支援的選項。 |
Android 裝置清單
要執行測試的 Android 裝置設定清單。
JSON 表示法 |
---|
{
"androidDevices": [
{
object ( |
欄位 | |
---|---|
androidDevices[] |
執行個體類型,Android 裝置清單。 |
iOS 裝置清單
要執行測試的 iOS 裝置設定清單。
JSON 表示法 |
---|
{
"iosDevices": [
{
object ( |
欄位 | |
---|---|
iosDevices[] |
執行個體類型,iOS 裝置清單。 |
iOS 裝置
一部 iOS 裝置,
JSON 表示法 |
---|
{ "iosModelId": string, "iosVersionId": string, "locale": string, "orientation": string } |
欄位 | |
---|---|
iosModelId |
執行個體類型,要使用的 iOS 裝置 ID。使用 TestEnvironmentDiscoveryService 取得支援的選項。 |
iosVersionId |
執行個體類型,要使用的 iOS 主要軟體版本編號,使用 TestEnvironmentDiscoveryService 取得支援的選項。 |
locale |
執行個體類型,用於測試的測試裝置語言代碼。使用 TestEnvironmentDiscoveryService 取得支援的選項。 |
orientation |
執行個體類型,裝置在測試期間的方向。使用 TestEnvironmentDiscoveryService 取得支援的選項。 |
測試執行
在單一環境中執行單一測試。
JSON 表示法 |
---|
{ "id": string, "matrixId": string, "projectId": string, "testSpecification": { object ( |
欄位 | |
---|---|
id |
僅供輸出。服務設定的專屬 ID。 |
matrixId |
僅供輸出。所含 TestMatrix 的 ID。 |
projectId |
僅供輸出。擁有測試執行作業的雲端專案。 |
testSpecification |
僅供輸出。如何執行測試。 |
shard |
僅供輸出。資料分割的詳細資料。 |
environment |
僅供輸出。主體機器的設定方式, |
state |
僅供輸出。表示目前的測試執行進度 (例如已完成)。 |
toolResultsStep |
僅供輸出。這項執行作業結果的寫入位置。 |
timestamp |
僅供輸出。這項測試執行作業的初始建立時間。 RFC3339 世界標準時間「Zulu」的時間戳記格式,解析度為奈秒,且最多 9 個小數位數。範例: |
testDetails |
僅供輸出。執行中測試的其他詳細資料。 |
資料分割
僅供輸出。資料分割的詳細資料。
JSON 表示法 |
---|
{
"shardIndex": integer,
"numShards": integer,
"testTargetsForShard": {
object ( |
欄位 | |
---|---|
shardIndex |
僅供輸出。所有資料分割的資料分割索引。 |
numShards |
僅供輸出。資料分割總數。 |
testTargetsForShard |
僅供輸出。每個資料分割的測試目標。只有手動資料分割設定。 |
estimatedShardDuration |
僅供輸出。根據先前的測試案例時間記錄 (如有) 估算的資料分割時間長度。 持續時間以秒為單位,最多 9 個小數位數,結尾為「 |
環境
執行測試的環境。
JSON 表示法 |
---|
{ // Union field |
欄位 | |
---|---|
聯集欄位 environment 。執行個體類型,環境。environment 只能採用下列其中一種設定: |
|
androidDevice |
必須進行 Android 測試使用的 Android 裝置。 |
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 |
僅供輸出。擁有工具結果步驟的 Cloud 專案。 |
historyId |
僅供輸出。工具結果記錄 ID。 |
executionId |
僅供輸出。工具結果執行作業 ID。 |
stepId |
僅供輸出。工具結果步驟 ID。 |
測試詳細資料
執行測試進度的其他詳細資料。
JSON 表示法 |
---|
{ "progressMessages": [ string ], "errorMessage": string } |
欄位 | |
---|---|
progressMessages[] |
僅供輸出。人類可讀的詳細說明測試進度。例如:「佈建裝置」、「啟動測試」。 在執行期間,系統可能會將新資料附加至 progressMessages 的結尾。 |
errorMessage |
僅供輸出。如果 TestState 為 ERROR,則這個字串會包含清楚易懂的錯誤詳細資料。 |
結果儲存空間
儲存測試執行結果的位置。
JSON 表示法 |
---|
{ "googleCloudStorage": { object ( |
欄位 | |
---|---|
googleCloudStorage |
必填。 |
toolResultsHistory |
工具結果記錄包含寫入工具的結果。 如未提供,服務會選擇合適的值。 |
toolResultsExecution |
僅供輸出。工具執行結果會寫入。 |
resultsUrl |
僅供輸出。Firebase 網頁控制台中的結果網址。 |
GoogleCloudStorage
Google 雲端儲存空間 (GCS) 中的儲存位置。
JSON 表示法 |
---|
{ "gcsPath": string } |
欄位 | |
---|---|
gcsPath |
執行個體類型,GCS 中的目錄路徑,該目錄最終會包含這項測試的結果。在提供的路徑中,提出要求的使用者必須具備值區的寫入權限。 |
工具結果記錄
代表工具結果記錄資源。
JSON 表示法 |
---|
{ "projectId": string, "historyId": string } |
欄位 | |
---|---|
projectId |
執行個體類型,擁有工具結果的 Cloud 專案。 |
historyId |
執行個體類型,工具結果記錄 ID。 |
ToolResultsExecution
代表工具結果執行資源。
這有 TestMatrix 的結果。
JSON 表示法 |
---|
{ "projectId": string, "historyId": string, "executionId": string } |
欄位 | |
---|---|
projectId |
僅供輸出。執行工具的 Cloud 專案。 |
historyId |
僅供輸出。工具結果記錄 ID。 |
executionId |
僅供輸出。工具結果執行作業 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/studio/build/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 中沒有使用者或在資訊清單檔案中指定的測試執行器類別。可能是下列其中一項原因所造成:
|
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 測試必須具有「IsAppHostedTestBundle」==「是」。 |
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 |
執行這項測試時發生不明權限問題。 |
矩陣錯誤詳細資料
說明矩陣的單個錯誤或問題。
JSON 表示法 |
---|
{ "reason": string, "message": string } |
欄位 | |
---|---|
reason |
僅供輸出。錯誤原因。這是 UPPER_SNAKE_CASE 中的一個常數值,表示發生錯誤的原因。 |
message |
僅供輸出。清楚易懂的訊息,說明 TestMatrix 中的錯誤情形。這會展開 |
結果摘要
已完成測試矩陣的結果摘要。
列舉 | |
---|---|
OUTCOME_SUMMARY_UNSPECIFIED |
請勿使用。僅適用於 proto 版本管理。 |
SUCCESS |
測試矩陣執行成功,例如:
|
FAILURE |
執行作業失敗,例如:
|
INCONCLUSIVE |
發生未預期的錯誤,系統應該仍會認為執行作業失敗,但這可能是暫時性問題,並重新執行測試也可能成功。 |
SKIPPED |
已略過所有測試,例如:
|
方法 |
|
---|---|
|
取消測試矩陣中的未完成測試執行作業。 |
|
根據指定規格建立並執行測試矩陣。 |
|
檢查測試矩陣的狀態和建立後的執行作業。 |