- 資源:測試矩陣
- 客戶資訊
- 客戶資訊詳情
- 測試規範
- 測試設定
- 裝置檔案
- OBB文件
- 文件參考
- 常規文件
- 應用程式
- 帳戶
- Google汽車
- 環境變數
- Systrace設定
- Ios測試設定
- Ios設備文件
- Android儀器測試
- 應用程式包
- Orchestrator選項
- 分片選項
- 統一分片
- 手動分片
- 分片測試目標
- 智慧分片
- AndroidRobo測試
- 機器人指令
- 機器人動作類型
- 機器人模式
- 機器人啟動意圖
- 啟動器活動意圖
- 啟動活動意圖
- Android測試循環
- IOSXc測試
- IOS測試循環
- 環境矩陣
- Android矩陣
- Android裝置列表
- Android裝置
- Ios設備列表
- IOS設備
- 測試執行
- 碎片
- 環境
- 測試狀態
- 工具結果步驟
- 測試詳情
- 結果存儲
- 谷歌雲端儲存
- 工具結果歷史記錄
- 工具結果執行
- 無效矩陣詳情
- 結果總結
- 方法
資源:測試矩陣
TestMatrix 擷取有關測試的所有詳細資訊。它包含環境配置、測試規格、測試執行以及整體狀態和結果。
JSON 表示 |
---|
{ "testMatrixId": string, "projectId": string, "clientInfo": { object ( |
領域 | |
---|---|
testMatrixId | 僅輸出。由服務設定的唯一 ID。 |
projectId | 擁有測試矩陣的雲端項目。 |
clientInfo | 有關調用測試的客戶端的資訊。 |
testSpecification | 必需的。如何運行測試。 |
environmentMatrix | 必需的。正在執行測試的設備。 |
testExecutions[] | 僅輸出。服務為此矩陣建立的測試執行清單。 |
resultStorage | 必需的。寫入矩陣結果的位置。 |
state | 僅輸出。指示測試矩陣的當前進度。 |
timestamp | 僅輸出。最初建立此測試矩陣的時間。 RFC3339 UTC「Zulu」格式的時間戳,具有奈秒解析度和最多九個小數位。範例: |
invalidMatrixDetails | 僅輸出。描述矩陣被視為無效的原因。僅對處於 INVALID 狀態的矩陣有用。 |
flakyTestAttempts | 如果一個或多個測試案例因任何原因失敗,則應重新嘗試 TestExecution 的次數。允許的最大重新運行次數為 10。 預設值為 0,這表示不重新運行。 |
outcomeSummary | 僅輸出。測試的整體結果。僅在測試矩陣狀態為 FINISHED 時才設定。 |
failFast | 如果為 true,則最多只會嘗試一次來執行矩陣中的每個執行/分片。不穩定的測試嘗試不受影響。 通常,如果偵測到潛在的基礎設施問題,則會進行 2 次或多次嘗試。 此功能適用於延遲敏感的工作負載。對於快速失敗矩陣,執行失敗的發生率可能明顯更高,而且由於這種期望,支持也更加有限。 |
客戶資訊
有關調用測試的客戶端的資訊。
JSON 表示 |
---|
{
"name": string,
"clientInfoDetails": [
{
object ( |
領域 | |
---|---|
name | 必需的。客戶端名稱,例如 gcloud。 |
clientInfoDetails[] | 有關客戶的詳細資訊清單。 |
客戶資訊詳情
有關調用測試的客戶端的詳細資訊的鍵值對。例:{'版本'、'1.0'}、{'發佈軌道'、'BETA'}。
JSON 表示 |
---|
{ "key": string, "value": string } |
領域 | |
---|---|
key | 必需的。詳細客戶資訊的關鍵。 |
value | 必需的。詳細的客戶資訊的價值。 |
測試規範
如何運行測試的描述。
JSON 表示 |
---|
{ "testTimeout": string, "disableVideoRecording": boolean, "disablePerformanceMetrics": boolean, // Union field |
領域 | |
---|---|
testTimeout | 在自動取消之前允許測試執行運行的最長時間。預設值為 5 分鐘。 以秒為單位的持續時間,最多包含九個小數位,以「 |
disableVideoRecording | 禁用視訊錄製。可以減少測試延遲。 |
disablePerformanceMetrics | 禁用性能指標記錄。可以減少測試延遲。 |
聯盟字段setup 。測試設定要求。 setup 只能是以下其中一項: | |
testSetup | 測試 Android 的設定要求,例如要安裝的檔案、引導腳本。 |
iosTestSetup | iOS 的測試設定要求。 |
聯盟實地test 。必需的。要運行的測試的類型。 test 只能是以下之一: | |
androidInstrumentationTest | Android 儀器測試。 |
androidRoboTest | Android 機器人測試。 |
androidTestLoop | 帶有測試循環的 Android 應用程式。 |
iosXcTest | iOS XCTest,透過 .xctestrun 檔案。 |
iosTestLoop | 具有測試循環的 iOS 應用程式。 |
測試設定
有關如何在運行測試之前設定 Android 裝置的說明。
JSON 表示 |
---|
{ "filesToPush": [ { object ( |
領域 | |
---|---|
filesToPush[] | 開始測試之前要推送到裝置的檔案清單。 |
directoriesToPull[] | 測試結束時上傳到 GCS 的裝置上的目錄清單;它們必須是 /sdcard、/storage 或 /data/local/tmp 下的絕對路徑。路徑名僅限於字元 az AZ 0-9 _ - 。 + 和 / 注意:路徑 /sdcard 和 /data 將可用並被視為隱式路徑替換。例如,如果特定裝置上的 /sdcard 未對應到外部存儲,系統會將其取代為該裝置的外部儲存路徑前綴。 |
additionalApks[] | 除了直接測試的 APK 之外還要安裝的 APK。目前上限為 100。 |
account | 在測試期間,設備將使用此帳戶登入。 |
networkProfile | 用於運行測試的網路流量設定檔。呼叫 TestEnvironmentDiscoveryService.GetTestEnvironmentCatalog 時,可以使用 NETWORK_CONFIGURATION 環境類型查詢可用的網路設定檔。 |
environmentVariables[] | 為測試設定的環境變數(僅適用於儀器測試)。 |
systrace | 運行的 Systrace 配置。已棄用:Systrace 使用 Python 2,該版本已於 2020 年 1 月 1 日停用。 Cloud Test API 不再支援 Systrace,結果中不會提供 Systrace 檔案。 |
dontAutograntPermissions | 是否阻止在應用程式安裝時授予所有運行時權限 |
裝置檔案
單一設備文件描述。
JSON 表示 |
---|
{ // Union field |
領域 | |
---|---|
聯合欄位device_file 。必需的。 device_file 只能是以下之一: | |
obbFile | 對不透明二進位 blob 檔案的引用。 |
regularFile | 常規文件的引用。 |
OBB文件
在測試開始之前要在設備上安裝的不透明二進位 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這些路徑預計會進行 url 編碼(百分比編碼) |
常規文件
測試開始前要安裝在裝置上的檔案或目錄。
JSON 表示 |
---|
{
"content": {
object ( |
領域 | |
---|---|
content | 必需的。來源文件。 |
devicePath | 必需的。將內容放置在設備上的位置。必須是絕對的、允許的路徑。如果該檔案存在,它將被替換。以下設備端目錄及其任何子目錄均已列入白名單: ${EXTERNAL_STORAGE}、/sdcard 或 /storage ${ANDROID_DATA}/local/tmp 或 /data/local/tmp 指定這些目錄樹之外的路徑是無效的。 路徑 /sdcard 和 /data 將可用並被視為隱式路徑替換。例如,如果特定裝置上的 /sdcard 未對應到外部存儲,系統將用該裝置的外部儲存路徑前綴取代它,並將檔案複製到那裡。 強烈建議在應用程式和測試程式碼中使用環境 API以便攜式方式存取裝置上的檔案。 |
應用程式
要安裝的 Android 套件檔案。
JSON 表示 |
---|
{
"location": {
object ( |
領域 | |
---|---|
location | 測試開始前要安裝在裝置上的 APK 的路徑。 |
packageName | 要安裝的APK的java套件。值是透過檢查應用程式的清單來確定的。 |
帳戶
識別帳戶以及如何登入該帳戶。
JSON 表示 |
---|
{ // Union field |
領域 | |
---|---|
聯合欄位account_type 。必需的。帳戶類型,基於其用途(例如 Google)及其登入機制(例如使用者名稱和密碼)。 account_type 只能是以下之一: | |
googleAuto | 自動谷歌登入帳號。 |
Google汽車
啟用自動 Google 帳戶登入。如果設定,服務會在執行測試之前自動產生 Google 測試帳戶並將其新增至裝置。請注意,測試帳戶可能會重複使用。當裝置上存在帳戶時,許多應用程式會顯示其全套功能。使用這些產生的帳戶登入裝置可以測試更多功能。
環境變數
鍵值對作為環境變數傳遞給測試。
JSON 表示 |
---|
{ "key": string, "value": string } |
領域 | |
---|---|
key | 環境變數的鍵。 |
value | 環境變數的值。 |
Systrace設定
JSON 表示 |
---|
{ "durationSeconds": integer } |
領域 | |
---|---|
durationSeconds | Systrace 持續時間(以秒為單位)。應介於 1 到 30 秒之間。 0 禁用系統追蹤。 |
Ios測試設定
有關如何在運行測試之前設定 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 | 文件在裝置上、應用程式的沙盒檔案系統內的位置 |
Android儀器測試
對 Android 應用程式的測試,該應用程式可以獨立於正常生命週期控制 Android 元件。 Android 儀器測試運行應用程式 APK 並在虛擬或實體 Android 裝置上的相同進程內測試 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 應用程式套件。 |
應用程式包
Android App Bundle 檔案格式,包含 BundleConfig.pb 檔案、基本模組目錄、零個或多個動態功能模組目錄。
有關建立應用程式套件的指南,請參閱https://developer.android.com/guide/app-bundle/build 。
JSON 表示 |
---|
{ // Union field |
領域 | |
---|---|
聯盟場bundle 。必需的。捆綁位置資訊。 bundle 只能是以下之一: | |
bundleLocation | .aab 檔案代表正在測試的應用程式套件。 |
Orchestrator選項
指定如何執行測試。
列舉 | |
---|---|
ORCHESTRATOR_OPTION_UNSPECIFIED | 預設值:伺服器將選擇模式。目前意味著測試將在沒有協調器的情況下運行。將來,所有儀器測試都將使用協調器運作。由於它提供的所有好處,我們強烈鼓勵使用編排器。 |
USE_ORCHESTRATOR | 使用 Orchestrator 執行測試。 ** 僅與 AndroidJUnitRunner 1.1 或更高版本相容! ** 受到推崇的。 |
DO_NOT_USE_ORCHESTRATOR | 不使用 Orchestrator 執行測試。 |
分片選項
啟用分片的選項。
JSON 表示 |
---|
{ // Union field |
領域 | |
---|---|
聯合字段 | |
uniformSharding | 給定分片總數,對測試案例進行統一分片。 |
manualSharding | 將測試案例分成指定的套件、類別和/或方法群組。 |
smartSharding | 基於先前的測試案例計時記錄進行分片測試。 |
統一分片
給定分片總數,對測試案例進行統一分片。
對於儀器測試,它將被轉換為“-e numShard”和“-e shardIndex”AndroidJUnitRunner 參數。啟用統一分片後,透過environmentVariables
指定這些分片參數中的任何一個都是無效的。
基於 AndroidJUnitRunner 所使用的分片機制,無法保證測試案例將均勻分佈在所有分片上。
JSON 表示 |
---|
{ "numShards": integer } |
領域 | |
---|---|
numShards | 必需的。要建立的分片總數。這必須始終是一個不大於測試案例總數的正數。當您選擇一個或多個實體設備時,分片數量必須<= 50。當您選擇一個或多個ARM 虛擬設備時,它必須<= 200。當您只選擇x86 虛擬設備時,它必須<= 500 。 |
手動分片
將測試案例分成指定的套件、類別和/或方法群組。
啟用手動分片後,透過environmentVariables或InstrumentationTest指定測試目標無效。
JSON 表示 |
---|
{
"testTargetsForShard": [
{
object ( |
領域 | |
---|---|
testTargetsForShard[] | 必需的。要為每個手動建立的分片運行的一組套件、類別和/或測試方法。如果存在此字段,則您必須至少指定一個分片。當您選擇一台或多台實體裝置時,重複testTargetsForShard的數量必須<= 50。當您選擇一台或多台ARM虛擬裝置時,它必須<= 200。當您只選擇x86虛擬裝置時,它必須<= 500。 |
分片測試目標
分片的測試目標。
JSON 表示 |
---|
{ "testTargets": [ string ] } |
領域 | |
---|---|
testTargets[] | 要為每個分片運行的套件、類別和/或測試方法組。需要以 AndroidJUnitRunner 參數格式指定目標。例如,「package com.my.packages」「class com.my.package.MyClass」。 testTargets 的數量必須大於 0。 |
智慧分片
基於先前的測試案例計時記錄進行分片測試。
JSON 表示 |
---|
{ "targetedShardDuration": string } |
領域 | |
---|---|
targetedShardDuration | 分片內測試應花費的時間量。 預設值:300 秒(5 分鐘)。允許的最短時間:120 秒(2 分鐘)。 分片計數根據時間動態設置,最高可達最大分片限制(如下所述)。為了確保每個分片至少有一個測試案例,分片的數量不會超過測試案例的數量。如果滿足以下條件,則將超出分片持續時間:
分片持續時間無法保證,因為智慧分片使用測試案例歷史記錄和預設持續時間,這可能不準確。尋找測試用例計時記錄的規則是:
由於實際分片持續時間可能會超過目標分片持續時間,因此我們建議您將目標值設定為比允許的最大測試超時至少短5 分鐘(實體設備為45 分鐘,虛擬設備為60 分鐘),或使用自訂測試您設定的逾時值。這種方法可以避免在所有測試完成之前取消分片。 請注意,最大分片數量是有限制的。當您選擇一個或多個實體設備時,分片數量必須<= 50。當您選擇一個或多個ARM 虛擬設備時,它必須<= 200。當您只選擇x86 虛擬設備時,它必須<= 500 . 為了確保每個分片至少有一個測試用例,分片的數量不會超過測試用例的數量。創建的每個分片都計入每日測試配額。 以秒為單位的持續時間,最多包含九個小數位,以「 |
AndroidRobo測試
對 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 | 包含 Robo 應執行的一系列操作的 JSON 檔案作為爬行的序言。 |
startingIntents[] | 用於啟動應用程式進行爬網的意圖。如果未提供,則啟動主啟動器活動。如果提供了一些,則僅啟動提供的那些(必須明確提供主啟動器活動)。 |
聯合欄位app_under_test 。必需的。 app_under_test 只能是以下之一: | |
appApk | 正在測試的應用程式的 APK。 |
appBundle | 用於被測應用程式的多 apk 應用程式套件。 |
機器人指令
如果在爬網過程中遇到特定的 UI 元素,則指示 Robo 與該元素進行互動。目前,Robo 可以執行文字輸入或元素單擊。
JSON 表示 |
---|
{
"resourceName": string,
"inputText": string,
"actionType": enum ( |
領域 | |
---|---|
resourceName | 必需的。目標 UI 元素的 Android 資源名稱。例如,在 Java 中: R.string.foo 在 xml 中: @string/foo 只需要「foo」部分。參考文件: https ://developer.android.com/guide/topics/resources/accessing-resources.html |
inputText | Robo 被指示設定的文字。如果留空,則指令將被視為與資源名稱相符的元素的點選。 |
actionType | 必需的。 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 |
領域 | |
---|---|
timeout | 每個意圖的超時(以秒為單位)。 以秒為單位的持續時間,最多包含九個小數位,以「 |
聯合欄位starting_intent 。必需的。開始活動的意圖詳細資訊。 starting_intent 只能是以下其中之一: | |
launcherActivity | 啟動主啟動器活動的意圖。 |
startActivity | 啟動具有特定細節的活動的意圖。 |
啟動器活動意圖
指定啟動主啟動器活動的意圖。
啟動活動意圖
由操作、uri 和類別指定的起始意圖。
JSON 表示 |
---|
{ "action": string, "uri": string, "categories": [ string ] } |
領域 | |
---|---|
action | 動作名稱。 START_ACTIVITY 必需。 |
uri | 操作的 URI。 |
categories[] | 在意圖上設定的意圖類別。 |
Android測試循環
使用測試循環對 Android 應用程式進行測試。意圖 <intent-name> 將被隱式添加,因為 Games 目前是該 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 應用程式套件。 |
IOSXc測試
使用 XCTest 框架對 iOS 應用程式進行測試。 Xcode 支援「建置測試」選項,該選項會產生包含測試規範(參數、測試方法等)的 .xctestrun 檔案。此測試類型接受包含 .xctestrun 檔案的 zip 檔案以及包含執行測試所需的所有二進位檔案的 Build/Products 目錄的相應內容。
JSON 表示 |
---|
{ "testsZip": { object ( |
領域 | |
---|---|
testsZip | 必需的。包含 .xctestrun 檔案和 DerivedData/Build/Products 目錄內容的 .zip。如果指定了 xctestrun 字段,則該 zip 中的 .xctestrun 檔案將被忽略。 |
xctestrun | .xctestrun 檔案將覆蓋測試 zip 中的 .xctestrun 檔案。由於 .xctestrun 檔案包含環境變數以及要運行和/或忽略的測試方法,因此這對於分片測試非常有用。預設值取自測試 zip。 |
xcodeVersion | 用於測試的 Xcode 版本。使用 TestEnvironmentDiscoveryService 取得支援的選項。預設為 Firebase 測試實驗室支援的最新 Xcode 版本。 |
appBundleId | 僅輸出。正在測試的應用程式的捆綁包 ID。 |
testSpecialEntitlements | 用於測試特殊應用程式權利的選項。設定此選項將使用明確應用程式識別碼重新簽署具有特殊權利的應用程式。目前支援測試 aps-environment 權利。 |
IOS測試循環
實現一個或多個遊戲循環場景的 iOS 應用程式的測試。此測試類型接受已存檔的應用程式(.ipa 檔案)和將在應用程式上按順序執行的整數場景清單。
JSON 表示 |
---|
{
"appIpa": {
object ( |
領域 | |
---|---|
appIpa | 必需的。要測試的應用程式的 .ipa。 |
scenarios[] | 測試期間應運行的場景清單。如果未指定,則預設為單一場景 0。 |
appBundleId | 僅輸出。正在測試的應用程式的捆綁包 ID。 |
環境矩陣
要執行測試的環境矩陣。
JSON 表示 |
---|
{ // Union field |
領域 | |
---|---|
聯合字段environment_matrix 。必需的。環境矩陣。 environment_matrix 只能是以下之一: | |
androidMatrix | Android 裝置矩陣。 |
androidDeviceList | Android 裝置清單;該測試將僅在指定的設備上運行。 |
iosDeviceList | iOS 裝置列表。 |
Android矩陣
一組 Android 裝置配置排列由給定軸的叉積定義。在內部,給定的 AndroidMatrix 將擴展為一組 AndroidDevices。
只有支援的排列才會被實例化。無效排列(例如,不相容的型號/版本)將被忽略。
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 裝置清單。 |
Android裝置
單一 Android 裝置。
JSON 表示 |
---|
{ "androidModelId": string, "androidVersionId": string, "locale": string, "orientation": string } |
領域 | |
---|---|
androidModelId | 必需的。要使用的 Android 裝置的 ID。使用 TestEnvironmentDiscoveryService 取得支援的選項。 |
androidVersionId | 必需的。要使用的 Android 作業系統版本的 ID。使用 TestEnvironmentDiscoveryService 取得支援的選項。 |
locale | 必需的。測試設備用於測試的區域設定。使用 TestEnvironmentDiscoveryService 取得支援的選項。 |
orientation | 必需的。測試期間設備的方向如何。使用 TestEnvironmentDiscoveryService 取得支援的選項。 |
Ios設備列表
要在其中執行測試的 iOS 裝置配置清單。
JSON 表示 |
---|
{
"iosDevices": [
{
object ( |
領域 | |
---|---|
iosDevices[] | 必需的。 iOS 裝置列表。 |
IOS設備
單一 iOS 裝置。
JSON 表示 |
---|
{ "iosModelId": string, "iosVersionId": string, "locale": string, "orientation": string } |
領域 | |
---|---|
iosModelId | 必需的。要使用的 iOS 裝置的 ID。使用 TestEnvironmentDiscoveryService 取得支援的選項。 |
iosVersionId | 必需的。要使用的iOS主要軟體版本的id。使用 TestEnvironmentDiscoveryService 取得支援的選項。 |
locale | 必需的。測試設備用於測試的區域設定。使用 TestEnvironmentDiscoveryService 取得支援的選項。 |
orientation | 必需的。測試期間設備的方向如何。使用 TestEnvironmentDiscoveryService 取得支援的選項。 |
測試執行
在單一環境中執行的單一測試。
JSON 表示 |
---|
{ "id": string, "matrixId": string, "projectId": string, "testSpecification": { object ( |
領域 | |
---|---|
id | 僅輸出。由服務設定的唯一 ID。 |
matrixId | 僅輸出。包含 TestMatrix 的 ID。 |
projectId | 僅輸出。擁有測試執行的雲端項目。 |
testSpecification | 僅輸出。如何運行測試。 |
shard | 僅輸出。有關分片的詳細資訊。 |
environment | 僅輸出。主機是如何配置的。 |
state | 僅輸出。指示測試執行的當前進度(例如,FINISHED)。 |
toolResultsStep | 僅輸出。寫入此執行結果的位置。 |
timestamp | 僅輸出。最初建立此測試執行的時間。 RFC3339 UTC「Zulu」格式的時間戳,具有奈秒解析度和最多九個小數位。範例: |
testDetails | 僅輸出。有關運行測試的其他詳細資訊。 |
碎片
僅輸出。有關分片的詳細資訊。
JSON 表示 |
---|
{
"shardIndex": integer,
"numShards": integer,
"testTargetsForShard": {
object ( |
領域 | |
---|---|
shardIndex | 僅輸出。該分片在所有分片中的索引。 |
numShards | 僅輸出。分片總數。 |
testTargetsForShard | 僅輸出。每個分片的測試目標。僅設定為手動分片。 |
estimatedShardDuration | 僅輸出。根據先前的測試案例計時記錄(如果有)估計的分片持續時間。 以秒為單位的持續時間,最多包含九個小數位,以「 |
環境
運行測試的環境。
JSON 表示 |
---|
{ // Union field |
領域 | |
---|---|
聯盟場environment 。必需的。環境。 environment 只能是以下其中之一: | |
androidDevice | 必須用於 Android 測試的 Android 裝置。 |
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 | 僅輸出。擁有該工具結果步驟的雲端項目。 |
historyId | 僅輸出。工具結果歷史 ID。 |
executionId | 僅輸出。工具結果執行 ID。 |
stepId | 僅輸出。工具結果步驟 ID。 |
測試詳情
有關運行測試進度的其他詳細資訊。
JSON 表示 |
---|
{ "progressMessages": [ string ], "errorMessage": string } |
領域 | |
---|---|
progressMessages[] | 僅輸出。人類可讀的測試進度的詳細描述。例如:「配置設備」、「開始測試」。 在執行過程中,新資料可能會附加到 ProgressMessages 的末端。 |
errorMessage | 僅輸出。如果 TestState 為 ERROR,則此字串將包含有關錯誤的人類可讀詳細資訊。 |
結果存儲
儲存運行測試結果的位置。
JSON 表示 |
---|
{ "googleCloudStorage": { object ( |
領域 | |
---|---|
googleCloudStorage | 必需的。 |
toolResultsHistory | 工具結果歷史記錄包含結果寫入的工具結果執行。 如果未提供,服務將選擇適當的值。 |
toolResultsExecution | 僅輸出。結果寫入的工具結果執行。 |
resultsUrl | 僅輸出。 Firebase Web 控制台中結果的 URL。 |
谷歌雲端儲存
Google 雲端儲存 (GCS) 中的儲存位置。
JSON 表示 |
---|
{ "gcsPath": string } |
領域 | |
---|---|
gcsPath | 必需的。 GCS 中最終包含此測試結果的目錄的路徑。請求使用者必須對所提供路徑中的儲存桶具有寫入權限。 |
工具結果歷史記錄
代表工具結果歷史資源。
JSON 表示 |
---|
{ "projectId": string, "historyId": string } |
領域 | |
---|---|
projectId | 必需的。擁有工具結果歷史記錄的雲端項目。 |
historyId | 必需的。工具結果歷史 ID。 |
工具結果執行
代表工具結果執行資源。
這有 TestMatrix 的結果。
JSON 表示 |
---|
{ "projectId": string, "historyId": string, "executionId": string } |
領域 | |
---|---|
projectId | 僅輸出。擁有該工具結果執行的雲端項目。 |
historyId | 僅輸出。工具結果歷史 ID。 |
executionId | 僅輸出。工具結果執行 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 不包含使用者指定的或清單檔案中指定的測試運行器類別。這可能是由以下原因之一引起的:
|
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 | 測試矩陣運作成功,例如:
|
FAILURE | 運行失敗,例如:
|
INCONCLUSIVE | 意想不到的事情發生了。運行仍應被視為不成功,但這可能是暫時性問題,重新運行測試可能會成功。 |
SKIPPED | 所有測試都被跳過,例如:
|
方法 | |
---|---|
| 取消測試矩陣中未完成的測試執行。 |
| 根據給定的規格建立並運行測試矩陣。 |
| 檢查測試矩陣的狀態及其建立後的執行。 |