REST Resource: projects.testMatrices

Resource: TestMatrix

TestMatrix merekam semua detail tentang pengujian. Direktori ini berisi konfigurasi lingkungan, spesifikasi pengujian, eksekusi uji, serta status dan hasil secara keseluruhan.

Representasi 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),
  "extendedInvalidMatrixDetails": [
    {
      object (MatrixErrorDetail)
    }
  ],
  "flakyTestAttempts": integer,
  "outcomeSummary": enum (OutcomeSummary),
  "failFast": boolean
}
Kolom
testMatrixId

string

Hanya output. ID unik yang ditetapkan oleh layanan.

projectId

string

Project cloud yang memiliki matriks uji.

clientInfo

object (ClientInfo)

Informasi tentang klien yang mengaktifkan pengujian.

testSpecification

object (TestSpecification)

Wajib diisi. Cara menjalankan pengujian.

environmentMatrix

object (EnvironmentMatrix)

Wajib diisi. Perangkat tempat pengujian dijalankan.

testExecutions[]

object (TestExecution)

Hanya output. Daftar eksekusi uji yang dibuat oleh layanan untuk matriks ini.

resultStorage

object (ResultStorage)

Wajib diisi. Tempat penulisan hasil untuk matriks.

state

enum (TestState)

Hanya output. Menunjukkan progres matriks uji saat ini.

timestamp

string (Timestamp format)

Hanya output. Waktu matriks uji ini pertama kali dibuat.

Stempel waktu dalam RFC3339 UTC "Zulu" , dengan resolusi nanodetik dan hingga sembilan digit pecahan. Contoh: "2014-10-02T15:01:23Z" dan "2014-10-02T15:01:23.045123456Z".

invalidMatrixDetails

enum (InvalidMatrixDetails)

Hanya output. Menjelaskan mengapa matriks dianggap tidak valid. Hanya berguna untuk matriks yang berstatus INVALID.

extendedInvalidMatrixDetails[]

object (MatrixErrorDetail)

Hanya output. Detail tentang alasan matriks dianggap tidak valid. Jika beberapa pemeriksaan dapat dilakukan dengan aman, pemeriksaan tersebut akan dilaporkan, tetapi tidak ada asumsi yang harus dibuat mengenai panjang daftar ini.

flakyTestAttempts

integer

Frekuensi TestExecution harus dicoba ulang jika satu atau beberapa kasus pengujiannya gagal karena alasan apa pun. Jumlah maksimum pengulangan yang diizinkan adalah 10.

Defaultnya adalah 0, yang menyiratkan tidak ada pengulangan proses.

outcomeSummary

enum (OutcomeSummary)

Hanya Output. Hasil keseluruhan pengujian. Hanya ditetapkan jika status matriks uji FINISHED.

failFast

boolean

Jika true (benar), hanya satu upaya maksimal yang akan dilakukan untuk menjalankan setiap eksekusi/shard dalam matriks. Upaya pengujian yang tidak stabil tidak akan terpengaruh.

Biasanya, 2 percobaan atau lebih dilakukan jika potensi masalah infrastruktur terdeteksi.

Fitur ini ditujukan untuk workload yang sensitif terhadap latensi. Insiden kegagalan eksekusi mungkin jauh lebih besar untuk matriks gagal cepat dan dukungannya lebih terbatas karena ekspektasi tersebut.

ClientInfo

Informasi tentang klien yang mengaktifkan pengujian.

Representasi JSON
{
  "name": string,
  "clientInfoDetails": [
    {
      object (ClientInfoDetail)
    }
  ]
}
Kolom
name

string

Wajib ada. Nama klien, misalnya gcloud.

clientInfoDetails[]

object (ClientInfoDetail)

Daftar informasi terperinci tentang klien.

ClientInfoDetail

Key-value pair yang tersusun atas informasi terperinci tentang klien yang mengaktifkan pengujian. Contoh: {'Version', '1.0'}, {'Release Track', 'BETA'}.

Representasi JSON
{
  "key": string,
  "value": string
}
Kolom
key

string

Wajib ada. Kunci dari informasi klien yang terperinci.

value

string

Wajib ada. Nilai dari informasi klien yang terperinci.

TestSpecification

Deskripsi tentang cara menjalankan pengujian.

Representasi 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)
  },
  "iosRoboTest": {
    object (IosRoboTest)
  }
  // End of list of possible types for union field test.
}
Kolom
testTimeout

string (Duration format)

Waktu maksimum eksekusi pengujian boleh berjalan sebelum otomatis dibatalkan. Nilai defaultnya adalah 5 mnt.

Durasi dalam detik dengan maksimal sembilan digit pecahan, yang diakhiri dengan 's'. Contoh: "3.5s".

disableVideoRecording

boolean

Menonaktifkan perekaman video. Dapat mengurangi latensi pengujian.

disablePerformanceMetrics

boolean

Menonaktifkan perekaman metrik performa. Dapat mengurangi latensi pengujian.

Kolom union setup. Persyaratan penyiapan pengujian. setup hanya ada berupa salah satu diantara berikut:
testSetup

object (TestSetup)

Persyaratan penyiapan pengujian untuk Android, misalnya file yang akan diinstal, skrip bootstrap.

iosTestSetup

object (IosTestSetup)

Persyaratan penyiapan pengujian untuk iOS.

Kolom union test. Wajib diisi. Jenis pengujian yang akan dijalankan. test hanya ada berupa salah satu diantara berikut:
androidInstrumentationTest

object (AndroidInstrumentationTest)

Uji instrumentasi Android.

androidRoboTest

object (AndroidRoboTest)

Uji robo Android.

androidTestLoop

object (AndroidTestLoop)

Aplikasi Android dengan Test Loop.

iosXcTest

object (IosXcTest)

IOS XCTest, melalui file .xctestrun.

iosTestLoop

object (IosTestLoop)

Aplikasi iOS dengan loop pengujian.

iosRoboTest

object (IosRoboTest)

Uji Robo iOS.

TestSetup

Deskripsi cara menyiapkan perangkat Android sebelum menjalankan pengujian.

Representasi JSON
{
  "filesToPush": [
    {
      object (DeviceFile)
    }
  ],
  "directoriesToPull": [
    string
  ],
  "initialSetupApks": [
    {
      object (Apk)
    }
  ],
  "additionalApks": [
    {
      object (Apk)
    }
  ],
  "account": {
    object (Account)
  },
  "networkProfile": string,
  "environmentVariables": [
    {
      object (EnvironmentVariable)
    }
  ],
  "systrace": {
    object (SystraceSetup)
  },
  "dontAutograntPermissions": boolean
}
Kolom
filesToPush[]

object (DeviceFile)

Daftar file yang akan dikirim ke perangkat sebelum memulai pengujian.

directoriesToPull[]

string

Daftar direktori di perangkat yang akan diupload ke GCS di akhir pengujian; mereka harus berupa jalur absolut di bawah {i> /sdcard<i}, {i>/storage<i} atau {i> /data/local/tmp<i}. Nama jalur dibatasi hingga karakter a-z A-Z 0-9 _ - . + dan /

Catatan: Lokasi /sdcard dan /data akan tersedia dan diperlakukan sebagai substitusi lokasi yang implisit. Misalnya, jika /sdcard pada perangkat tertentu tidak dipetakan ke penyimpanan eksternal, sistem akan menggantinya dengan prefiks lokasi penyimpanan eksternal untuk perangkat itu.

initialSetupApks[]

object (Apk)

Opsional. Penyiapan awal APK yang perlu diinstal sebelum aplikasi yang sedang diuji diinstal. Saat ini batas maksimalnya adalah 100.

additionalApks[]

object (Apk)

APK yang akan diinstal, selain APK yang sedang diuji secara langsung. Solusi ini akan diinstal setelah aplikasi yang sedang diuji. Saat ini batas maksimalnya adalah 100.

account

object (Account)

Perangkat akan login ke akun ini selama durasi pengujian.

networkProfile

string

Profil traffic jaringan yang digunakan untuk menjalankan pengujian. Profil jaringan yang tersedia dapat dikueri menggunakan jenis lingkungan NETWORK_CONFIGURATION saat memanggil TestEnvironmentDiscoveryService.GetTestEnvironmentCatalog.

environmentVariables[]

object (EnvironmentVariable)

Variabel lingkungan yang ditetapkan untuk pengujian (hanya berlaku untuk uji instrumentasi).

systrace
(deprecated)

object (SystraceSetup)

Konfigurasi Systrace untuk dijalankan. Tidak digunakan lagi: Systrace menggunakan Python 2 yang dihentikan pada 01-01-2020. Systrace tidak lagi didukung di Cloud Testing API, dan tidak ada file Systrace yang akan disediakan dalam hasilnya.

dontAutograntPermissions

boolean

Apakah akan mencegah semua izin runtime diberikan saat penginstalan aplikasi

DeviceFile

Deskripsi file perangkat tunggal.

Representasi 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.
}
Kolom
Kolom union device_file. Wajib diisi. device_file hanya ada berupa salah satu diantara berikut:
obbFile

object (ObbFile)

Referensi ke file opaque biner blob.

regularFile

object (RegularFile)

Referensi ke file biasa.

ObbFile

File opaque binary blob (OBB) yang akan diinstal ke perangkat sebelum pengujian dimulai.

Representasi JSON
{
  "obbFileName": string,
  "obb": {
    object (FileReference)
  }
}
Kolom
obbFileName

string

Wajib ada. Nama file OBB yang harus sesuai dengan format yang ditentukan oleh Android, misalnya [main|patch].0300110.com.example.android.obb yang akan diinstal ke <shared-storage>/Android/obb/<package-name>/ pada perangkat.

obb

object (FileReference)

Wajib diisi. File Opaque Binary Blob (OBB) yang akan diinstal ke perangkat.

FileReference

Referensi ke file, digunakan untuk input pengguna.

Representasi JSON
{

  // Union field file can be only one of the following:
  "gcsPath": string
  // End of list of possible types for union field file.
}
Kolom
Kolom union file. Wajib diisi. Referensi file. file hanya ada berupa salah satu diantara berikut:
gcsPath

string

Lokasi ke file di Google Cloud Storage. Contoh: gs://build-app-1414623860166/app%40debug-unaligned.apk Jalur ini diharapkan telah dienkode ke URL (encoding persen)

RegularFile

File atau direktori yang akan diinstal ke perangkat sebelum pengujian dimulai.

Representasi JSON
{
  "content": {
    object (FileReference)
  },
  "devicePath": string
}
Kolom
content

object (FileReference)

Wajib diisi. File sumber.

devicePath

string

Wajib ada. Tempat menaruh konten di perangkat. Harus berupa jalur absolut dan diizinkan. File yang ada akan diganti. Direktori sisi perangkat berikut dan subdirektorinya diizinkan:

${EXTERNAL_STORAGE}, /sdcard, atau /storage

${ANDROID_DATA}/local/tmp, atau /data/local/tmp

Penetapan lokasi di luar hierarki direktori ini tidak valid.

Lokasi /sdcard dan /data akan tersedia dan diperlakukan sebagai substitusi lokasi yang implisit. Misalnya, jika /sdcard pada perangkat tertentu tidak dipetakan ke penyimpanan eksternal, sistem akan menggantinya dengan prefiks lokasi penyimpanan eksternal untuk perangkat tersebut dan menyalin file ke sana.

Sebaiknya gunakan Environment API dalam aplikasi dan kode uji untuk mengakses file pada perangkat dengan cara yang portabel.

APK

File paket Android yang akan diinstal.

Representasi JSON
{
  "location": {
    object (FileReference)
  },
  "packageName": string
}
Kolom
location

object (FileReference)

Lokasi ke APK yang akan diinstal pada perangkat sebelum pengujian dimulai.

packageName

string

Paket Java untuk APK yang akan diinstal. Nilai ditentukan dengan memeriksa manifes aplikasi.

Account

Mengidentifikasi akun dan cara login ke akun tersebut.

Representasi 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.
}
Kolom
Kolom union account_type. Wajib diisi. Jenis akun, berdasarkan untuk apa akun tersebut (misalnya, Google) dan mekanisme loginnya (misalnya, nama pengguna dan sandi). account_type hanya ada berupa salah satu diantara berikut:
googleAuto

object (GoogleAuto)

Akun login Google otomatis.

GoogleAuto

Jenis ini tidak memiliki kolom.

Mengaktifkan login akun Google otomatis. Jika disetel, layanan akan otomatis membuat akun pengujian Google dan menambahkannya ke perangkat, sebelum menjalankan pengujian. Perhatikan bahwa akun pengujian dapat digunakan kembali. Banyak aplikasi menampilkan fungsionalitasnya secara lengkap jika akun ada di perangkat. Dengan login menggunakan akun yang dihasilkan ini, perangkat dapat menguji lebih banyak fungsionalitas.

EnvironmentVariable

Key-value pair yang diteruskan sebagai variabel lingkungan ke pengujian.

Representasi JSON
{
  "key": string,
  "value": string
}
Kolom
key

string

Kunci untuk variabel lingkungan.

value

string

Nilai untuk variabel lingkungan.

Penyiapan Systrace

Representasi JSON
{
  "durationSeconds": integer
}
Kolom
durationSeconds
(deprecated)

integer

Durasi Systrace dalam detik. Harus berdurasi antara 1 dan 30 detik. 0 menonaktifkan systrace.

IosTestSetup

Deskripsi cara menyiapkan perangkat iOS sebelum menjalankan pengujian.

Representasi JSON
{
  "networkProfile": string,
  "additionalIpas": [
    {
      object (FileReference)
    }
  ],
  "pushFiles": [
    {
      object (IosDeviceFile)
    }
  ],
  "pullDirectories": [
    {
      object (IosDeviceFile)
    }
  ]
}
Kolom
networkProfile

string

Profil traffic jaringan yang digunakan untuk menjalankan pengujian. Profil jaringan yang tersedia dapat dikueri menggunakan jenis lingkungan NETWORK_CONFIGURATION saat memanggil TestEnvironmentDiscoveryService.GetTestEnvironmentCatalog.

additionalIpas[]

object (FileReference)

aplikasi iOS yang akan diinstal selain aplikasi yang sedang diuji secara langsung.

pushFiles[]

object (IosDeviceFile)

Daftar file yang akan dikirim ke perangkat sebelum memulai pengujian.

pullDirectories[]

object (IosDeviceFile)

Daftar direktori pada perangkat yang akan diupload ke Cloud Storage di akhir pengujian.

Direktori harus berada di direktori bersama (seperti /private/var/mobile/Media) atau dalam direktori yang dapat diakses di dalam sistem file aplikasi (seperti /Documents) dengan menentukan ID paket.

FileIosDevice

File atau direktori yang akan diinstal ke perangkat sebelum pengujian dimulai.

Representasi JSON
{
  "content": {
    object (FileReference)
  },
  "bundleId": string,
  "devicePath": string
}
Kolom
content

object (FileReference)

File sumber

bundleId

string

ID paket aplikasi tempat file ini berada.

Aplikasi iOS akan melakukan sandbox sistem filenya sendiri, sehingga file aplikasi harus menentukan aplikasi mana yang diinstal di perangkat.

devicePath

string

Lokasi file di perangkat, di dalam sistem file dalam sandbox aplikasi

AndroidInstrumentationTest

Pengujian aplikasi Android yang dapat mengendalikan komponen Android secara terpisah dari siklus proses normalnya. Uji instrumentasi Android menjalankan APK aplikasi dan menguji APK di dalam proses yang sama baik pada AndroidDevice versi fisik maupun virtual. Pengujian ini juga menentukan class runner pengujian, seperti com.google.GoogleTestRunner, yang dapat bervariasi sesuai framework instrumentasi tertentu yang dipilih.

Lihat https://developer.android.com/training/testing/fundamentals untuk mengetahui informasi selengkapnya tentang jenis pengujian Android.

Representasi 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.
}
Kolom
testApk

object (FileReference)

Wajib diisi. APK yang memuat kode uji yang akan dieksekusi.

appPackageId

string

Paket Java untuk aplikasi yang diuji. Nilai defaultnya ditentukan dengan memeriksa manifes aplikasi.

testPackageId

string

Paket Java untuk pengujian yang akan dieksekusi. Nilai defaultnya ditentukan dengan memeriksa manifes aplikasi.

testRunnerClass

string

Class InstrumentationTestRunner. Nilai defaultnya ditentukan dengan memeriksa manifes aplikasi.

testTargets[]

string

Setiap target harus sepenuhnya memenuhi syarat dengan nama paket atau nama class, dalam salah satu format berikut:

  • "namapaket paket"
  • "class packageName.class_name"
  • "class packageName.class_name#methodName"

Jika kosong, semua target dalam modul akan dijalankan.

orchestratorOption

enum (OrchestratorOption)

Pilihan apakah setiap pengujian dijalankan dalam pemanggilan instrumentasi itu sendiri dengan Android Test Orchestrator atau tidak. ** Orchestrator hanya kompatibel dengan AndroidJUnitRunner versi 1.1 atau yang lebih tinggi. ** Orchestrator menawarkan manfaat berikut:

  • Tidak ada status yang dibagikan
  • Error terisolasi
  • Log tercakup per pengujian

Lihat https://developer.android.com/training/testing/junit-runner.html#using-android-test-orchestrator untuk informasi lebih lanjut tentang Android Test Orchestrator.

Jika tidak ditetapkan, pengujian akan berjalan tanpa orchestrator.

shardingOption

object (ShardingOption)

Opsi untuk menjalankan pengujian di beberapa shard secara paralel.

Kolom union app_under_test. Wajib diisi. app_under_test hanya ada berupa salah satu diantara berikut:
appApk

object (FileReference)

APK untuk aplikasi yang sedang diuji.

appBundle

object (AppBundle)

App bundle multi-APK untuk aplikasi yang sedang diuji.

AppBundle

Format file Android App Bundle, berisi file BundleConfig.pb, direktori modul dasar, dan nol atau beberapa direktori modul fitur dinamis.

Lihat https://developer.android.com/guide/app-bundle/build untuk panduan cara membuat App Bundle.

Representasi JSON
{

  // Union field bundle can be only one of the following:
  "bundleLocation": {
    object (FileReference)
  }
  // End of list of possible types for union field bundle.
}
Kolom
Kolom union bundle. Wajib diisi. Informasi lokasi paket. bundle hanya ada berupa salah satu diantara berikut:
bundleLocation

object (FileReference)

File .aab yang menunjukkan app bundle yang sedang diuji.

OrchestratorOption

Menentukan cara menjalankan pengujian.

Enum
ORCHESTRATOR_OPTION_UNSPECIFIED Nilai default: server akan memilih mode. Saat ini menyiratkan bahwa pengujian akan berjalan tanpa orchestrator. Ke depannya, semua uji instrumentasi akan dijalankan dengan orchestrator. Penggunaan orchestrator sangat direkomendasikan mengingat semua manfaat yang ditawarkannya.
USE_ORCHESTRATOR Jalankan pengujian menggunakan orchestrator. ** Hanya kompatibel dengan AndroidJUnitRunner versi 1.1 atau yang lebih tinggi. Direkomendasikan.
DO_NOT_USE_ORCHESTRATOR Jalankan pengujian tanpa menggunakan orchestrator.

Opsi Sharding

Opsi untuk mengaktifkan sharding.

Representasi 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.
}
Kolom

Kolom union option.

option hanya dapat berupa salah satu dari yang berikut:

uniformSharding

object (UniformSharding)

Melakukan sharding kasus pengujian secara seragam berdasarkan jumlah total shard.

manualSharding

object (ManualSharding)

Melakukan sharding kasus pengujian ke dalam grup paket, class, dan/atau metode tertentu.

smartSharding

object (SmartSharding)

Uji shard berdasarkan catatan waktu kasus pengujian sebelumnya.

Penghancuran Seragam

Melakukan sharding kasus pengujian secara seragam berdasarkan jumlah total shard.

Untuk uji instrumentasi, parameter ini akan diterjemahkan ke "-e numShard" dan "-e shardIndex" Argumen AndroidJUnitRunner. Jika sharding seragam diaktifkan, penentuan salah satu argumen sharding ini melalui environmentVariables menjadi tidak valid.

Berdasarkan mekanisme sharding yang digunakan AndroidJUnitRunner, tidak ada jaminan bahwa kasus pengujian akan didistribusikan secara merata di semua shard.

Representasi JSON
{
  "numShards": integer
}
Kolom
numShards

integer

Wajib diisi. Jumlah total shard yang akan dibuat. Nilai ini harus selalu berupa bilangan positif yang tidak lebih besar dari jumlah total kasus pengujian. Saat Anda memilih satu atau beberapa perangkat fisik, jumlah shard harus <= 50. Jika Anda memilih satu atau beberapa perangkat virtual ARM, nilainya harus <= 200. Jika Anda hanya memilih perangkat virtual x86, nilainya harus <= 500.

Pecahan Manual

Melakukan sharding kasus pengujian ke dalam grup paket, class, dan/atau metode tertentu.

Jika sharding manual diaktifkan, penentuan target pengujian melalui environmentVariables atau di InstrumentationTest tidak valid.

Representasi JSON
{
  "testTargetsForShard": [
    {
      object (TestTargetsForShard)
    }
  ]
}
Kolom
testTargetsForShard[]

object (TestTargetsForShard)

Wajib diisi. Grup paket, class, dan/atau metode pengujian yang akan dijalankan untuk setiap shard yang dibuat secara manual. Anda harus menentukan setidaknya satu shard jika kolom ini ada. Saat Anda memilih satu atau beberapa perangkat fisik, jumlah testTargetsForShard berulang harus <= 50. Jika Anda memilih satu atau beberapa perangkat virtual ARM, nilainya harus <= 200. Jika Anda hanya memilih perangkat virtual x86, nilainya harus <= 500.

TargetPengujianForShard

Menguji target untuk shard.

Representasi JSON
{
  "testTargets": [
    string
  ]
}
Kolom
testTargets[]

string

Grup paket, class, dan/atau metode pengujian yang akan dijalankan untuk setiap shard. Target harus ditentukan dalam format argumen AndroidJUnitRunner. Misalnya, "paket com.my.packages" "class com.my.package.MyClass".

Jumlah testTarget harus lebih besar dari 0.

{i>SmartSharding<i}

Uji shard berdasarkan catatan waktu kasus pengujian sebelumnya.

Representasi JSON
{
  "targetedShardDuration": string
}
Kolom
targetedShardDuration

string (Duration format)

Jumlah waktu yang diperlukan pengujian dalam shard.

Default: 300 detik (5 menit). Batas minimum yang diizinkan: 120 detik (2 menit).

Jumlah shard ditetapkan secara dinamis berdasarkan waktu, hingga batas shard maksimum (dijelaskan di bawah). Untuk menjamin setidaknya satu kasus pengujian untuk setiap shard, jumlah shard tidak akan melebihi jumlah kasus pengujian. Durasi shard akan terlampaui jika:

  • Batas shard maksimum telah tercapai dan ada lebih banyak sisa waktu pengujian yang dihitung untuk dialokasikan ke dalam shard.
  • Setiap pengujian diperkirakan akan lebih lama dari durasi shard yang ditargetkan.

Durasi shard tidak dijamin karena sharding cerdas menggunakan histori kasus pengujian dan durasi default yang mungkin tidak akurat. Aturan untuk menemukan catatan waktu kasus pengujian adalah:

  • Jika layanan telah memproses kasus pengujian dalam 30 hari terakhir, data kasus pengujian terbaru yang berhasil akan digunakan.
  • Untuk kasus uji baru, durasi rata-rata kasus pengujian lain yang diketahui akan digunakan.
  • Jika tidak ada catatan waktu kasus pengujian sebelumnya yang tersedia, durasi kasus pengujian default adalah 15 detik.

Karena durasi shard yang sebenarnya dapat melebihi durasi shard yang ditargetkan, sebaiknya Anda menetapkan nilai yang ditargetkan minimal 5 menit lebih cepat dari waktu tunggu pengujian maksimum yang diizinkan (45 menit untuk perangkat fisik dan 60 menit untuk virtual), atau sebaiknya Anda menggunakan nilai waktu tunggu pengujian kustom yang Anda tetapkan. Pendekatan ini menghindari pembatalan shard sebelum semua pengujian dapat selesai.

Perlu diperhatikan bahwa ada batas jumlah maksimum shard. Saat Anda memilih satu atau beberapa perangkat fisik, jumlah shard harus <= 50. Jika Anda memilih satu atau beberapa perangkat virtual ARM, nilainya harus <= 200. Jika Anda hanya memilih perangkat virtual x86, nilainya harus <= 500. Untuk menjamin setidaknya satu kasus pengujian untuk per shard, jumlah shard tidak akan melebihi jumlah kasus pengujian. Setiap shard yang dibuat diperhitungkan dalam kuota pengujian harian.

Durasi dalam detik dengan maksimal sembilan digit pecahan, yang diakhiri dengan 's'. Contoh: "3.5s".

AndroidRoboTest

Pengujian aplikasi Android yang mengeksplorasi aplikasi pada Perangkat Android fisik atau virtual, menemukan penyebab dan error saat aplikasi dijalankan.

Representasi 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.
}
Kolom
appPackageId

string

Paket Java untuk aplikasi yang diuji. Nilai defaultnya ditentukan dengan memeriksa manifes aplikasi.

appInitialActivity

string

Aktivitas awal yang harus digunakan untuk memulai aplikasi.

maxDepth
(deprecated)

integer

Kedalaman maksimum tumpukan traversal yang dapat dieksplorasi Robo. Nilai minimalnya adalah 2 agar Robo dapat mengeksplorasi aplikasi di luar aktivitas pertama. Default-nya adalah 50.

maxSteps
(deprecated)

integer

Jumlah langkah maksimum yang dapat dieksekusi Robo. Nilai defaultnya tidak terbatas.

roboDirectives[]

object (RoboDirective)

Serangkaian perintah yang harus diterapkan Robo selama crawling. Dengan demikian, pengguna dapat menyesuaikan crawling. Misalnya, nama pengguna dan sandi untuk akun pengujian dapat ditentukan.

roboMode

enum (RoboMode)

Mode tempat Robo harus dijalankan. Sebagian besar klien harus mengizinkan server mengisi kolom ini secara otomatis.

roboScript

object (FileReference)

File JSON dengan urutan tindakan yang harus dijalankan Robo sebagai pendahuluan crawling.

startingIntents[]

object (RoboStartingIntent)

Intent yang digunakan meluncurkan aplikasi untuk crawling. Jika tidak ada intent yang ditentukan, maka aktivitas peluncur utama akan diluncurkan. Jika ada intent yang ditentukan, maka hanya intent yang ditentukan yang akan diluncurkan (aktivitas peluncur utama harus ditentukan secara eksplisit).

Kolom union app_under_test. Wajib diisi. app_under_test hanya ada berupa salah satu diantara berikut:
appApk

object (FileReference)

APK untuk aplikasi yang sedang diuji.

appBundle

object (AppBundle)

App bundle multi-APK untuk aplikasi yang sedang diuji.

RoboDirective

Mengarahkan Robo agar berinteraksi dengan elemen UI tertentu jika Robo ditemui selama crawling. Saat ini, Robo dapat melakukan entri teks atau klik elemen.

Representasi JSON
{
  "resourceName": string,
  "inputText": string,
  "actionType": enum (RoboActionType)
}
Kolom
resourceName

string

Wajib ada. Nama resource Android dari elemen UI target. Misalnya, pada Java: R.string.foo dan pada XML: @string/foo. Hanya bagian "foo" yang diperlukan. Dokumen referensi: https://developer.android.com/guide/topics/resources/accessing-resources.html

inputText

string

Teks yang harus ditetapkan Robo. Jika dibiarkan kosong, perintah ini akan diperlakukan sebagai KLIK pada elemen yang cocok dengan resourceName.

actionType

enum (RoboActionType)

Wajib diisi. Jenis tindakan yang harus dilakukan Robo pada elemen yang ditentukan.

RoboActionType

Tindakan yang dapat dilakukan Robo pada elemen UI.

Enum
ACTION_TYPE_UNSPECIFIED JANGAN GUNAKAN. Untuk pembuatan versi proto saja.
SINGLE_CLICK Mengarahkan Robo untuk mengklik elemen yang ditentukan. Tidak ada operasi jika elemen yang ditentukan tidak dapat diklik.
ENTER_TEXT Mengarahkan Robo untuk memasukkan teks ke elemen yang ditentukan. Tidak ada operasi jika elemen yang ditentukan tidak diaktifkan atau tidak menerima entri teks.
IGNORE Mengarahkan Robo untuk mengabaikan interaksi dengan elemen tertentu.

Mode Robot

Mode tempat Robo harus dijalankan.

Enum
ROBO_MODE_UNSPECIFIED Artinya, server harus memilih mode tersebut. Disarankan.
ROBO_VERSION_1 Menjalankan Robo dalam mode khusus UIAutomator tanpa penandatanganan ulang aplikasi
ROBO_VERSION_2 Menjalankan Robo di Espresso standar dengan penggantian UIAutomator

RoboStartingIntent

Pesan untuk menentukan aktivitas awal yang akan di-crawl.

Representasi JSON
{
  "timeout": string,

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

string (Duration format)

Waktu tunggu dalam detik untuk setiap intent.

Durasi dalam detik dengan maksimal sembilan digit pecahan, yang diakhiri dengan 's'. Contoh: "3.5s".

Kolom union starting_intent. Wajib diisi. Detail intent untuk memulai aktivitas. starting_intent hanya ada berupa salah satu diantara berikut:
launcherActivity

object (LauncherActivityIntent)

Intent yang memulai aktivitas peluncur utama.

startActivity

object (StartActivityIntent)

Intent yang memulai aktivitas dengan detail tertentu.

noActivity

object (NoActivityIntent)

Melewati aktivitas awal

LauncherActivityIntent

Jenis ini tidak memiliki kolom.

Menentukan intent yang memulai aktivitas peluncur utama.

StartActivityIntent

Intent awal yang ditentukan oleh tindakan, URI, dan kategori.

Representasi JSON
{
  "action": string,
  "uri": string,
  "categories": [
    string
  ]
}
Kolom
action

string

Nama tindakan. Wajib ada untuk START_ACTIVITY.

uri

string

URI untuk tindakan.

categories[]

string

Kategori intent untuk ditetapkan pada intent.

NoActivityIntent

Jenis ini tidak memiliki kolom.

Melewati aktivitas awal

AndroidTestLoop

Pengujian Aplikasi Android dengan Test Loop. Intent <intent-name> akan ditambahkan secara implisit, karena Game adalah satu-satunya pengguna untuk API ini untuk saat ini.

Representasi 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.
}
Kolom
appPackageId

string

Paket Java untuk aplikasi yang sedang diuji. Nilai defaultnya ditentukan dengan memeriksa manifes aplikasi.

scenarios[]

integer

Daftar skenario yang harus dijalankan selama pengujian. Nilai defaultnya adalah semua loop pengujian, yang diambil dari manifes aplikasi.

scenarioLabels[]

string

Daftar label skenario yang harus dijalankan selama pengujian. Label skenario harus dipetakan ke label yang ditentukan dalam manifes aplikasi. Misalnya, player_experience dan com.google.test.loops.player_experience menambahkan semua loop yang diberi label dalam manifes dengan nama com.google.test.loops.player_experience ke eksekusi. Skenario juga dapat ditentukan dalam kolom skenario.

Kolom union app_under_test. Wajib diisi. Paket Android yang akan diuji. app_under_test hanya ada berupa salah satu diantara berikut:
appApk

object (FileReference)

APK untuk aplikasi yang sedang diuji.

appBundle

object (AppBundle)

App bundle multi-APK untuk aplikasi yang sedang diuji.

IosXcTest

Pengujian aplikasi iOS yang menggunakan framework XCTest. Xcode mendukung opsi untuk "build for testing", yang menghasilkan file .xctestrun yang berisi spesifikasi pengujian (argumen, metode pengujian, dll). Jenis pengujian ini menerima file zip yang berisi file .xctestrun dan isi yang sesuai dari direktori Build/Products yang berisi semua file biner yang diperlukan untuk menjalankan pengujian.

Representasi JSON
{
  "testsZip": {
    object (FileReference)
  },
  "xctestrun": {
    object (FileReference)
  },
  "xcodeVersion": string,
  "appBundleId": string,
  "testSpecialEntitlements": boolean
}
Kolom
testsZip

object (FileReference)

Wajib diisi. File .zip yang berisi file .xctestrun dan isi direktori DerivedData/Build/Products. File .xctestrun di zip ini diabaikan jika kolom xctestrun ditentukan.

xctestrun

object (FileReference)

File .xctestrun yang akan menggantikan file .xctestrun pada zip pengujian. Karena file .xctestrun berisi variabel lingkungan beserta metode pengujian yang akan dijalankan dan/atau diabaikan, setelan ini dapat berguna untuk uji sharding. Nilai defaultnya diambil dari zip pengujian.

xcodeVersion

string

Versi Xcode yang harus digunakan untuk pengujian. Gunakan TestEnvironmentDiscoveryService untuk mendapatkan opsi yang didukung. Ditetapkan secara default ke versi Xcode terbaru yang didukung Firebase Test Lab.

appBundleId

string

Hanya output. ID paket untuk aplikasi yang sedang diuji.

testSpecialEntitlements

boolean

Opsi untuk menguji hak aplikasi khusus. Menyetel ini akan menandatangani ulang aplikasi yang memiliki hak khusus dengan ID aplikasi eksplisit. Saat ini mendukung pengujian hak aps-environment.

IosTestLoop

Pengujian aplikasi iOS yang mengimplementasikan satu atau beberapa skenario game loop. Jenis pengujian ini menerima aplikasi yang diarsipkan (file .ipa) dan daftar skenario bilangan bulat yang akan dijalankan di aplikasi secara berurutan.

Representasi JSON
{
  "appIpa": {
    object (FileReference)
  },
  "scenarios": [
    integer
  ],
  "appBundleId": string
}
Kolom
appIpa

object (FileReference)

Wajib diisi. .ipa aplikasi yang akan diuji.

scenarios[]

integer

Daftar skenario yang harus dijalankan selama pengujian. Setelan defaultnya adalah skenario tunggal 0 jika tidak ditentukan.

appBundleId

string

Hanya output. ID paket untuk aplikasi yang sedang diuji.

Tes IosRobo

Pengujian yang menjelajahi aplikasi iOS di perangkat iOS.

Representasi JSON
{
  "appIpa": {
    object (FileReference)
  },
  "appBundleId": string,
  "roboScript": {
    object (FileReference)
  }
}
Kolom
appIpa

object (FileReference)

Wajib diisi. IPa yang disimpan dalam file ini harus digunakan untuk menjalankan pengujian.

appBundleId

string

ID paket untuk aplikasi yang sedang diuji. Hal ini ditentukan dengan memeriksa "Info.plist" aplikasi .

roboScript

object (FileReference)

Roboscript opsional untuk menyesuaikan crawl. Lihat https://firebase.google.com/docs/test-lab/android/robo-scripts-reference untuk mengetahui informasi selengkapnya tentang Roboscript.

EnvironmentMatrix

Matriks lingkungan tempat pengujian akan dijalankan.

Representasi 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.
}
Kolom
Kolom union environment_matrix. Wajib diisi. Matriks lingkungan. environment_matrix hanya ada berupa salah satu diantara berikut:
androidMatrix

object (AndroidMatrix)

Matriks perangkat Android.

androidDeviceList

object (AndroidDeviceList)

Daftar perangkat Android; pengujian akan dijalankan hanya pada perangkat yang ditentukan.

iosDeviceList

object (IosDeviceList)

Daftar perangkat iOS.

AndroidMatrix

Kumpulan permutasi konfigurasi perangkat Android ditetapkan oleh produk silang sumbu yang ditentukan. Secara internal, AndroidMatrix yang ditentukan akan diperluas menjadi sekumpulan AndroidDevice.

Hanya permutasi yang didukung yang akan dipakai. Permutasi yang tidak valid (misalnya model/versi yang tidak kompatibel) akan diabaikan.

Representasi JSON
{
  "androidModelIds": [
    string
  ],
  "androidVersionIds": [
    string
  ],
  "locales": [
    string
  ],
  "orientations": [
    string
  ]
}
Kolom
androidModelIds[]

string

Wajib ada. ID dari kumpulan perangkat Android yang akan digunakan. Gunakan TestEnvironmentDiscoveryService untuk mendapatkan opsi yang didukung.

androidVersionIds[]

string

Wajib diisi. ID dari kumpulan versi OS Android yang akan digunakan. Gunakan TestEnvironmentDiscoveryService untuk mendapatkan opsi yang didukung.

locales[]

string

Wajib diisi. Rangkaian lokal yang akan diaktifkan perangkat uji untuk pengujian. Gunakan TestEnvironmentDiscoveryService untuk mendapatkan opsi yang didukung.

orientations[]

string

Wajib diisi. Kumpulan orientasi yang ingin diuji. Gunakan TestEnvironmentDiscoveryService untuk mendapatkan opsi yang didukung.

AndroidDeviceList

Daftar konfigurasi perangkat Android tempat pengujian akan dijalankan.

Representasi JSON
{
  "androidDevices": [
    {
      object (AndroidDevice)
    }
  ]
}
Kolom
androidDevices[]

object (AndroidDevice)

Wajib diisi. Daftar perangkat Android.

IosDeviceList

Daftar konfigurasi perangkat iOS tempat pengujian akan dijalankan.

Representasi JSON
{
  "iosDevices": [
    {
      object (IosDevice)
    }
  ]
}
Kolom
iosDevices[]

object (IosDevice)

Wajib diisi. Daftar perangkat iOS.

IosDevice

Perangkat iOS tunggal.

Representasi JSON
{
  "iosModelId": string,
  "iosVersionId": string,
  "locale": string,
  "orientation": string
}
Kolom
iosModelId

string

Wajib ada. ID perangkat iOS yang akan digunakan. Gunakan TestEnvironmentDiscoveryService untuk mendapatkan opsi yang didukung.

iosVersionId

string

Wajib diisi. ID dari versi software utama iOS yang akan digunakan. Gunakan TestEnvironmentDiscoveryService untuk mendapatkan opsi yang didukung.

locale

string

Wajib diisi. Lokal yang digunakan perangkat uji untuk pengujian. Gunakan TestEnvironmentDiscoveryService untuk mendapatkan opsi yang didukung.

orientation

string

Wajib diisi. Cara perangkat diorientasikan selama pengujian. Gunakan TestEnvironmentDiscoveryService untuk mendapatkan opsi yang didukung.

TestExecution

Satu pengujian yang dijalankan dalam satu lingkungan.

Representasi 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)
  }
}
Kolom
id

string

Hanya output. ID unik yang ditetapkan oleh layanan.

matrixId

string

Hanya output. ID TestMatrix yang memuat.

projectId

string

Hanya output. Project cloud yang memiliki eksekusi uji.

testSpecification

object (TestSpecification)

Hanya output. Cara menjalankan pengujian.

shard

object (Shard)

Hanya output. Detail tentang shard.

environment

object (Environment)

Hanya output. Seperti apa konfigurasi mesin host.

state

enum (TestState)

Hanya output. Menunjukkan progres eksekusi uji saat ini (misalnya SELESAI).

toolResultsStep

object (ToolResultsStep)

Hanya output. Tempat penulisan hasil untuk eksekusi ini.

timestamp

string (Timestamp format)

Hanya output. Waktu eksekusi uji ini pertama kali dibuat.

Stempel waktu dalam RFC3339 UTC "Zulu" , dengan resolusi nanodetik dan hingga sembilan digit pecahan. Contoh: "2014-10-02T15:01:23Z" dan "2014-10-02T15:01:23.045123456Z".

testDetails

object (TestDetails)

Hanya output. Detail tambahan tentang menjalankan pengujian.

Shard

Hanya output. Detail tentang shard.

Representasi JSON
{
  "shardIndex": integer,
  "numShards": integer,
  "testTargetsForShard": {
    object (TestTargetsForShard)
  },
  "estimatedShardDuration": string
}
Kolom
shardIndex

integer

Hanya output. Indeks shard di antara semua shard.

numShards

integer

Hanya output. Jumlah total shard.

testTargetsForShard

object (TestTargetsForShard)

Hanya output. Uji target untuk setiap shard. Hanya ditetapkan untuk sharding manual.

estimatedShardDuration

string (Duration format)

Hanya output. Estimasi durasi shard berdasarkan catatan waktu kasus pengujian sebelumnya, jika tersedia.

Durasi dalam detik dengan maksimal sembilan digit pecahan, yang diakhiri dengan 's'. Contoh: "3.5s".

Lingkungan

Lingkungan tempat pengujian dijalankan.

Representasi 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.
}
Kolom
Kolom union environment. Wajib diisi. Lingkungan. environment hanya ada berupa salah satu diantara berikut:
androidDevice

object (AndroidDevice)

Perangkat Android yang harus digunakan untuk pengujian Android.

iosDevice

object (IosDevice)

Perangkat iOS yang harus digunakan untuk pengujian iOS.

TestState

Status (progres) dari eksekusi atau matriks uji.

Enum
TEST_STATE_UNSPECIFIED Jangan gunakan. Untuk penetapan versi proto saja.
VALIDATING Eksekusi atau matriks sedang divalidasi.
PENDING Eksekusi atau matriks menunggu resource disediakan.
RUNNING

Eksekusi sedang diproses.

Hanya dapat ditetapkan pada eksekusi.

FINISHED

Eksekusi atau matriks berhenti secara normal.

Pada matriks, hal ini berarti pemrosesan level matriks selesai secara normal, tetapi eksekusi individual mungkin saja mengalami ERROR.

ERROR Eksekusi atau matriks berhenti karena mengalami kegagalan infrastruktur.
UNSUPPORTED_ENVIRONMENT

Eksekusi tidak berjalan karena berkaitan dengan lingkungan yang tidak didukung.

Hanya dapat ditetapkan pada eksekusi.

INCOMPATIBLE_ENVIRONMENT

Eksekusi tidak dijalankan karena input yang diberikan tidak kompatibel dengan lingkungan yang diminta.

Contoh: AndroidVersion yang diminta lebih rendah daripada MinSdkVersion APK

Hanya dapat ditetapkan pada eksekusi.

INCOMPATIBLE_ARCHITECTURE

Eksekusi tidak dijalankan karena input yang diberikan tidak kompatibel dengan arsitektur yang diminta.

Contoh: perangkat yang diminta tidak mendukung eksekusi kode native di APK yang disediakan

Hanya dapat ditetapkan pada eksekusi.

CANCELLED

Pengguna membatalkan eksekusi.

Hanya dapat ditetapkan pada eksekusi.

INVALID

Eksekusi atau matriks tidak dijalankan karena input yang diberikan tidak valid.

Contoh: file yang diinput bukan jenis yang diharapkan, salah format/rusak, atau ditandai sebagai malware.

ToolResultsStep

Menunjukkan resource langkah hasil fitur.

Ini memiliki hasil TestExecution.

Representasi JSON
{
  "projectId": string,
  "historyId": string,
  "executionId": string,
  "stepId": string
}
Kolom
projectId

string

Hanya output. Project cloud yang memiliki langkah hasil fitur.

historyId

string

Hanya output. ID histori hasil fitur.

executionId

string

Hanya output. ID eksekusi hasil fitur.

stepId

string

Hanya output. ID langkah hasil fitur.

TestDetails

Detail tambahan tentang progres pengujian yang berjalan.

Representasi JSON
{
  "progressMessages": [
    string
  ],
  "errorMessage": string
}
Kolom
progressMessages[]

string

Hanya output. Deskripsi terperinci yang dapat dibaca manusia tentang progres pengujian. Misalnya: "Menyediakan perangkat", "Memulai Pengujian".

Selama berjalannya eksekusi, data baru dapat ditambahkan ke bagian akhir progressMessages.

errorMessage

string

Hanya output. Jika TestState bernilai ERROR, maka string ini akan memuat detail yang dapat dibaca manusia tentang error tersebut.

ResultStorage

Lokasi tempat menyimpan hasil pengujian yang berjalan.

Representasi JSON
{
  "googleCloudStorage": {
    object (GoogleCloudStorage)
  },
  "toolResultsHistory": {
    object (ToolResultsHistory)
  },
  "toolResultsExecution": {
    object (ToolResultsExecution)
  },
  "resultsUrl": string
}
Kolom
googleCloudStorage

object (GoogleCloudStorage)

Wajib diisi.

toolResultsHistory

object (ToolResultsHistory)

Histori hasil fitur yang memuat eksekusi hasil fitur ke mana hasil dituliskan.

Jika tidak ditentukan, layanan akan memilih nilai yang sesuai.

toolResultsExecution

object (ToolResultsExecution)

Hanya output. Eksekusi hasil fitur ke mana hasil dituliskan.

resultsUrl

string

Hanya output. URL ke hasil di Firebase Web Console.

GoogleCloudStorage

Lokasi penyimpanan dalam Google Cloud Storage (GCS).

Representasi JSON
{
  "gcsPath": string
}
Kolom
gcsPath

string

Wajib diisi. Jalur ke direktori di GCS yang pada akhirnya akan berisi hasil pengujian ini. Pengguna yang meminta harus memiliki akses tulis pada bucket di jalur yang disediakan.

ToolResultsHistory

Menunjukkan resource histori hasil fitur.

Representasi JSON
{
  "projectId": string,
  "historyId": string
}
Kolom
projectId

string

Wajib ada. Project cloud yang memiliki histori hasil fitur.

historyId

string

Wajib ada. ID histori hasil fitur.

ToolResultsExecution

Menunjukkan resource eksekusi hasil fitur.

Ini memiliki hasil TestMatrix.

Representasi JSON
{
  "projectId": string,
  "historyId": string,
  "executionId": string
}
Kolom
projectId

string

Hanya output. Project cloud yang memiliki eksekusi hasil fitur.

historyId

string

Hanya output. ID histori hasil fitur.

executionId

string

Hanya output. ID eksekusi hasil fitur.

InvalidMatrixDetails

Alasan terperinci Matriks dianggap INVALID.

Enum
INVALID_MATRIX_DETAILS_UNSPECIFIED Jangan gunakan. Untuk penetapan versi proto saja.
DETAILS_UNAVAILABLE Matriks INVALID, tetapi tidak ada detail lebih lanjut yang tersedia.
MALFORMED_APK APK aplikasi input tidak dapat diurai.
MALFORMED_TEST_APK APK pengujian input tidak dapat diurai.
NO_MANIFEST AndroidManifest.xml tidak dapat ditemukan.
NO_PACKAGE_NAME Manifes APK tidak menyatakan nama paket.
INVALID_PACKAGE_NAME ID aplikasi APK (alias nama paket) tidak valid. Lihat juga https://developer.android.com/studio/build/application-id
TEST_SAME_AS_APP Paket pengujian dan paket aplikasi sama.
NO_INSTRUMENTATION APK pengujian tidak menyatakan instrumentasi.
NO_SIGNATURE APK aplikasi input tidak memiliki tanda tangan.
INSTRUMENTATION_ORCHESTRATOR_INCOMPATIBLE Class runner pengujian yang ditentukan oleh pengguna atau dalam file manifes APK pengujian tidak kompatibel dengan Android Test Orchestrator. Orchestrator hanya kompatibel dengan AndroidJUnitRunner versi 1.1 atau yang lebih tinggi. Orchestrator dapat dinonaktifkan dengan OrchestratorOption DO_NOT_USE_ORCHESTRATOR.
NO_TEST_RUNNER_CLASS

APK pengujian tidak berisi class runner pengujian yang ditentukan oleh pengguna atau dalam file manifes. Hal ini dapat disebabkan oleh salah satu alasan berikut:

  • pengguna memberikan nama kelas runner yang salah, atau
  • runner pengujian tidak disertakan dalam APK pengujian (mungkin dalam APK aplikasi).
NO_LAUNCHER_ACTIVITY Aktivitas peluncur utama tidak dapat ditemukan.
FORBIDDEN_PERMISSIONS Aplikasi menyatakan satu atau beberapa izin yang tidak diperbolehkan.
INVALID_ROBO_DIRECTIVES Ada konflik dalam roboDirectives yang disediakan.
INVALID_RESOURCE_NAME Setidaknya ada satu nama resource yang tidak valid dalam perintah robo yang diberikan
INVALID_DIRECTIVE_ACTION Definisi tindakan dalam perintah robo yang tidak valid (misalnya, tindakan klik atau abaikan menyertakan kolom teks input)
TEST_LOOP_INTENT_FILTER_NOT_FOUND Tidak ada filter intent test loop, atau filter yang diberikan tidak diformat dengan benar.
SCENARIO_LABEL_NOT_DECLARED Permintaan berisi label skenario yang tidak dinyatakan dalam manifes.
SCENARIO_LABEL_MALFORMED Terjadi error saat menguraikan nilai label.
SCENARIO_NOT_DECLARED Permintaan berisi nomor skenario yang tidak dinyatakan dalam manifes.
DEVICE_ADMIN_RECEIVER Aplikasi administrator perangkat tidak diizinkan.
MALFORMED_XC_TEST_ZIP XCTest yang di-zip salah format. Zip tidak berisi file .xctestrun tunggal dan isi direktori DerivedData/Build/Products.
BUILT_FOR_IOS_SIMULATOR XCTest yang di-zip dibuat untuk simulator iOS dan bukan untuk perangkat fisik.
NO_TESTS_IN_XC_TEST_ZIP File .xctestrun tidak menentukan target pengujian apa pun.
USE_DESTINATION_ARTIFACTS Satu atau beberapa target pengujian yang ditentukan dalam file .xctestrun menetapkan "UseDestinationArtifacts", yang tidak diizinkan.
TEST_NOT_APP_HOSTED Pengujian XC yang berjalan pada perangkat fisik harus memiliki "IsAppHostedTestBundle" == "true" dalam file xctestrun.
PLIST_CANNOT_BE_PARSED File Info.plist di zip XCTest tidak dapat diurai.
TEST_ONLY_APK

APK ditandai sebagai "testOnly". Tidak digunakan lagi dan saat ini tidak digunakan.

MALFORMED_IPA IPA input tidak dapat diurai.
MISSING_URL_SCHEME Aplikasi tidak mendaftarkan skema URL game loop.
MALFORMED_APP_BUNDLE Paket aplikasi iOS (.app) tidak dapat diproses.
NO_CODE_APK APK tidak berisi kode. Lihat juga https://developer.android.com/guide/topics/manifest/application-element.html#code
INVALID_INPUT_APK Lokasi APK input yang disediakan salah format, file APK tidak ada, atau pengguna tidak memiliki izin untuk mengakses file APK.
INVALID_APK_PREVIEW_SDK APK dibuat untuk SDK pratinjau yang tidak didukung
MATRIX_TOO_LARGE Matriks diperluas agar berisi terlalu banyak eksekusi.
TEST_QUOTA_EXCEEDED Kuota uji tidak cukup untuk menjalankan eksekusi dalam matriks ini.
SERVICE_NOT_ACTIVATED API layanan cloud yang diperlukan tidak diaktifkan. Lihat: https://firebase.google.com/docs/test-lab/android/continuous#requirements
UNKNOWN_PERMISSION_ERROR Terjadi masalah izin yang tidak diketahui saat menjalankan pengujian ini.

MatrixErrorDetail

Menggambarkan satu kesalahan atau masalah dengan matriks.

Representasi JSON
{
  "reason": string,
  "message": string
}
Kolom
reason

string

Hanya output. Alasan error. Ini adalah nilai konstan dalam UP_SNAKE_CASE yang mengidentifikasi penyebab kesalahan.

message

string

Hanya output. Pesan yang dapat dibaca manusia tentang bagaimana error dalam TestMatrix. Dibentangkan di kolom reason dengan detail tambahan dan opsi yang mungkin untuk memperbaiki masalah.

RingkasanHasil

Ringkasan hasil untuk matriks uji yang sudah selesai.

Enum
OUTCOME_SUMMARY_UNSPECIFIED Jangan gunakan. Untuk penetapan versi proto saja.
SUCCESS

Operasi matriks uji berhasil, misalnya:

  • Semua kasus pengujian lulus.
  • Robo tidak mendeteksi error aplikasi yang sedang diuji.
FAILURE

Operasi gagal, misalnya:

  • Satu atau beberapa kasus pengujian gagal.
  • Waktu pengujian habis.
  • Aplikasi yang sedang diuji mengalami error.
INCONCLUSIVE Terjadi error yang tidak terduga. Operasi ini harus tetap dianggap gagal, tetapi ini kemungkinan masalah sementara dan pengujian ulang mungkin berhasil dijalankan.
SKIPPED

Semua pengujian dilewati, misalnya:

  • Semua konfigurasi perangkat tidak kompatibel.

Metode

cancel

Membatalkan eksekusi uji yang belum selesai dalam matriks uji.

create

Membuat dan menjalankan matriks uji sesuai dengan spesifikasi yang diberikan.

get

Memeriksa status matriks uji dan eksekusi setelah dibuat.