- Sumber daya: TestMatrix
- Info Klien
- Detail Info Klien
- Spesifikasi Tes
- Pengaturan Tes
- File Perangkat
- File Obb
- Referensi File
- File Biasa
- Apk
- Akun
- GoogleOtomatis
- Variabel Lingkungan
- Pengaturan Systrace
- Pengaturan IosTest
- File Perangkat Ios
- Tes Instrumentasi Android
- Paket Aplikasi
- Opsi Orchestrator
- Opsi Sharding
- Sharding Seragam
- Pembagian Manual
- TestTargetsForShard
- Sharding Cerdas
- AndroidRoboTest
- RoboDirective
- Tipe Aksi Robo
- Mode Robo
- RoboStartingIntent
- PeluncurActivityIntent
- MulaiActivityIntent
- AndroidTestLoop
- Tes IosXc
- IosTestLoop
- Matriks Lingkungan
- AndroidMatrix
- Daftar Perangkat Android
- Perangkat Android
- Daftar Perangkat Ios
- Perangkat Ios
- Eksekusi Tes
- Beling
- Lingkungan
- Status Uji
- AlatHasilLangkah
- Detail Tes
- Penyimpanan Hasil
- Penyimpanan GoogleCloud
- AlatHasilSejarah
- Eksekusi Hasil Alat
- DetailMatrix Tidak Valid
- Ringkasan Hasil
- Metode
Sumber daya: TestMatrix
TestMatrix menangkap semua detail tentang suatu pengujian. Ini berisi konfigurasi lingkungan, spesifikasi pengujian, eksekusi pengujian, serta status dan hasil keseluruhan.
Representasi JSON |
---|
{ "testMatrixId": string, "projectId": string, "clientInfo": { object ( |
Bidang | |
---|---|
testMatrixId | Hanya keluaran. Id unik yang ditetapkan oleh layanan. |
projectId | Proyek cloud yang memiliki matriks pengujian. |
clientInfo | Informasi tentang klien yang menjalankan tes. |
testSpecification | Diperlukan. Cara menjalankan tes. |
environmentMatrix | Diperlukan. Perangkat tempat pengujian dijalankan. |
testExecutions[] | Hanya keluaran. Daftar eksekusi pengujian yang dibuat layanan untuk matriks ini. |
resultStorage | Diperlukan. Dimana hasil matriks ditulis. |
state | Hanya keluaran. Menunjukkan kemajuan matriks pengujian saat ini. |
timestamp | Hanya keluaran. Waktu matriks pengujian ini pertama kali dibuat. Stempel waktu dalam format RFC3339 UTC "Zulu", dengan resolusi nanodetik dan hingga sembilan digit pecahan. Contoh: |
invalidMatrixDetails | Hanya keluaran. Menjelaskan mengapa matriks dianggap tidak valid. Hanya berguna untuk matriks dalam keadaan INVALID. |
flakyTestAttempts | Berapa kali TestExecution harus dicoba ulang jika satu atau lebih kasus pengujiannya gagal karena alasan apa pun. Jumlah maksimum tayangan ulang yang diperbolehkan adalah 10. Defaultnya adalah 0, yang berarti tidak ada tayangan ulang. |
outcomeSummary | Keluaran Saja. Hasil tes secara keseluruhan. Hanya disetel ketika status matriks pengujian SELESAI. |
failFast | Jika benar, paling banyak hanya satu upaya yang akan dilakukan untuk menjalankan setiap eksekusi/shard dalam matriks. Upaya pengujian yang tidak stabil tidak terpengaruh. Biasanya, 2 upaya atau lebih dilakukan jika potensi masalah infrastruktur terdeteksi. Fitur ini ditujukan untuk beban kerja yang sensitif terhadap latensi. Insiden kegagalan eksekusi mungkin jauh lebih besar untuk matriks fail-fast dan dukungan lebih terbatas karena ekspektasi tersebut. |
Info Klien
Informasi tentang klien yang menjalankan tes.
Representasi JSON |
---|
{
"name": string,
"clientInfoDetails": [
{
object ( |
Bidang | |
---|---|
name | Diperlukan. Nama klien, seperti gcloud. |
clientInfoDetails[] | Daftar informasi rinci tentang klien. |
Detail Info Klien
Pasangan nilai kunci informasi mendetail tentang klien yang menjalankan pengujian. Contoh: {'Versi', '1.0'}, {'Release Track', 'BETA'}.
Representasi JSON |
---|
{ "key": string, "value": string } |
Bidang | |
---|---|
key | Diperlukan. Kunci informasi klien terperinci. |
value | Diperlukan. Nilai informasi klien yang terperinci. |
Spesifikasi Tes
Penjelasan tentang cara menjalankan tes.
Representasi JSON |
---|
{ "testTimeout": string, "disableVideoRecording": boolean, "disablePerformanceMetrics": boolean, // Union field |
Bidang | |
---|---|
testTimeout | Waktu maksimum eksekusi pengujian diizinkan untuk dijalankan sebelum dibatalkan secara otomatis. Nilai defaultnya adalah 5 menit. Durasi dalam detik hingga sembilan digit pecahan, diakhiri dengan ' |
disableVideoRecording | Menonaktifkan perekaman video. Dapat mengurangi latensi pengujian. |
disablePerformanceMetrics | Menonaktifkan perekaman metrik kinerja. Dapat mengurangi latensi pengujian. |
setup bidang serikat pekerja. Persyaratan pengaturan pengujian. setup hanya dapat berupa salah satu dari berikut ini: | |
testSetup | Persyaratan pengaturan pengujian untuk Android misalnya file yang akan diinstal, skrip bootstrap. |
iosTestSetup | Persyaratan pengaturan pengujian untuk iOS. |
test lapangan serikat pekerja. Diperlukan. Jenis tes yang akan dijalankan. test hanya dapat berupa salah satu dari berikut ini: | |
androidInstrumentationTest | Tes instrumentasi Android. |
androidRoboTest | Tes robo Android. |
androidTestLoop | Aplikasi Android dengan Test Loop. |
iosXcTest | iOS XCTest, melalui file .xctestrun. |
iosTestLoop | Aplikasi iOS dengan loop pengujian. |
Pengaturan Tes
Penjelasan tentang cara menyiapkan perangkat Android sebelum menjalankan pengujian.
Representasi JSON |
---|
{ "filesToPush": [ { object ( |
Bidang | |
---|---|
filesToPush[] | Daftar file yang akan dikirim ke perangkat sebelum memulai pengujian. |
directoriesToPull[] | Daftar direktori pada perangkat yang akan diunggah ke GCS di akhir pengujian; jalur tersebut harus berupa jalur absolut di bawah /sdcard, /storage, atau /data/local/tmp. Nama jalur dibatasi pada karakter az AZ 0-9 _ - . + dan / Catatan: Jalur /sdcard dan /data akan tersedia dan diperlakukan sebagai substitusi jalur implisit. Misalnya jika /sdcard pada perangkat tertentu tidak dipetakan ke penyimpanan eksternal, sistem akan menggantinya dengan awalan jalur penyimpanan eksternal untuk perangkat tersebut. |
additionalApks[] | APK yang akan dipasang selain yang sedang diuji secara langsung. Saat ini dibatasi pada 100. |
account | Perangkat akan masuk ke akun ini selama pengujian. |
networkProfile | Profil lalu lintas jaringan yang digunakan untuk menjalankan pengujian. Profil jaringan yang tersedia dapat ditanyakan dengan menggunakan jenis lingkungan NETWORK_CONFIGURATION saat memanggil TestEnvironmentDiscoveryService.GetTestEnvironmentCatalog. |
environmentVariables[] | Variabel lingkungan yang akan ditetapkan untuk pengujian (hanya berlaku untuk pengujian instrumentasi). |
systrace | Konfigurasi Systrace untuk dijalankan. Tidak berlaku 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 diberikan dalam hasilnya. |
dontAutograntPermissions | Apakah akan mencegah semua izin waktu proses diberikan saat pemasangan aplikasi |
File Perangkat
Deskripsi file perangkat tunggal.
Representasi JSON |
---|
{ // Union field |
Bidang | |
---|---|
Bidang gabungan device_file . Diperlukan. device_file hanya dapat berupa salah satu dari berikut ini: | |
obbFile | Referensi ke file gumpalan biner buram. |
regularFile | Referensi ke file biasa. |
File Obb
File gumpalan biner buram untuk diinstal pada perangkat sebelum pengujian dimulai.
Representasi JSON |
---|
{
"obbFileName": string,
"obb": {
object ( |
Bidang | |
---|---|
obbFileName | Diperlukan. Nama file OBB 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 | Diperlukan. File Opaque Binary Blob (OBB) untuk diinstal pada perangkat. |
Referensi File
Referensi ke file, digunakan untuk input pengguna.
Representasi JSON |
---|
{ // Union field |
Bidang | |
---|---|
file bidang serikat pekerja. Diperlukan. Referensi file. file hanya dapat berupa salah satu dari berikut ini: | |
gcsPath | Jalur ke file di Google Cloud Storage. Contoh: gs://build-app-1414623860166/app%40debug-unaligned.apk Jalur ini diharapkan berupa url yang dikodekan (persen pengkodean) |
File Biasa
File atau direktori untuk diinstal pada perangkat sebelum pengujian dimulai.
Representasi JSON |
---|
{
"content": {
object ( |
Bidang | |
---|---|
content | Diperlukan. File sumber. |
devicePath | Diperlukan. Tempat meletakkan konten di perangkat. Harus merupakan jalur yang mutlak dan diperbolehkan. Jika file tersebut ada, maka akan diganti. Direktori sisi perangkat berikut dan salah satu subdirektorinya diizinkan: ${EXTERNAL_STORAGE}, /sdcard, atau /storage ${ANDROID_DATA}/local/tmp, atau /data/local/tmp Menentukan jalur di luar pohon direktori ini tidak valid. Jalur /sdcard dan /data akan tersedia dan diperlakukan sebagai substitusi jalur implisit. Misalnya jika /sdcard pada perangkat tertentu tidak dipetakan ke penyimpanan eksternal, sistem akan menggantinya dengan awalan jalur penyimpanan eksternal untuk perangkat tersebut dan menyalin file di sana. Sangat disarankan untuk menggunakan API Lingkungan dalam aplikasi dan menguji kode untuk mengakses file di perangkat dengan cara portabel. |
Apk
File paket Android untuk diinstal.
Representasi JSON |
---|
{
"location": {
object ( |
Bidang | |
---|---|
location | Jalur ke APK yang akan diinstal pada perangkat sebelum pengujian dimulai. |
packageName | Paket java untuk APK yang akan diinstal. Nilai ditentukan dengan memeriksa manifes aplikasi. |
Akun
Mengidentifikasi akun dan cara masuk ke dalamnya.
Representasi JSON |
---|
{ // Union field |
Bidang | |
---|---|
Bidang gabungan account_type . Diperlukan. Jenis akun, berdasarkan kegunaannya (misalnya Google) dan mekanisme loginnya (misalnya nama pengguna dan kata sandi). account_type hanya dapat berupa salah satu dari berikut ini: | |
googleAuto | Akun login google otomatis. |
GoogleOtomatis
Mengaktifkan login akun Google otomatis. Jika disetel, layanan secara otomatis membuat akun pengujian Google dan menambahkannya ke perangkat, sebelum menjalankan pengujian. Perhatikan bahwa akun pengujian mungkin digunakan kembali. Banyak aplikasi menunjukkan serangkaian fungsi lengkapnya saat ada akun di perangkat. Masuk ke perangkat dengan akun yang dihasilkan ini memungkinkan pengujian lebih banyak fungsi.
Variabel Lingkungan
Pasangan kunci-nilai diteruskan sebagai variabel lingkungan ke pengujian.
Representasi JSON |
---|
{ "key": string, "value": string } |
Bidang | |
---|---|
key | Kunci untuk variabel lingkungan. |
value | Nilai untuk variabel lingkungan. |
Pengaturan Systrace
Representasi JSON |
---|
{ "durationSeconds": integer } |
Bidang | |
---|---|
durationSeconds | Durasi Systrace dalam hitungan detik. Harus antara 1 dan 30 detik. 0 menonaktifkan systrace. |
Pengaturan IosTest
Deskripsi tentang cara menyiapkan perangkat iOS sebelum menjalankan pengujian.
Representasi JSON |
---|
{ "networkProfile": string, "additionalIpas": [ { object ( |
Bidang | |
---|---|
networkProfile | Profil lalu lintas jaringan yang digunakan untuk menjalankan pengujian. Profil jaringan yang tersedia dapat ditanyakan dengan menggunakan jenis lingkungan NETWORK_CONFIGURATION saat memanggil TestEnvironmentDiscoveryService.GetTestEnvironmentCatalog. |
additionalIpas[] | Aplikasi iOS yang akan dipasang selain yang diuji secara langsung. |
pushFiles[] | Daftar file yang akan dikirim ke perangkat sebelum memulai pengujian. |
pullDirectories[] | Daftar direktori pada perangkat yang akan diupload ke Cloud Storage di akhir pengujian. Direktori harus berada dalam direktori bersama (seperti /private/var/mobile/Media) atau dalam direktori yang dapat diakses di dalam sistem file aplikasi (seperti /Documents) dengan menentukan ID bundel. |
File Perangkat Ios
File atau direktori untuk diinstal pada perangkat sebelum pengujian dimulai.
Representasi JSON |
---|
{
"content": {
object ( |
Bidang | |
---|---|
content | File sumber |
bundleId | Id bundel aplikasi tempat file ini berada. Aplikasi iOS melakukan sandbox pada sistem filenya sendiri, jadi file aplikasi harus menentukan aplikasi mana yang diinstal pada perangkat. |
devicePath | Lokasi file di perangkat, di dalam sistem file sandbox aplikasi |
Tes Instrumentasi Android
Pengujian aplikasi Android yang dapat mengontrol komponen Android secara independen dari siklus hidup normalnya. Pengujian instrumentasi Android menjalankan APK aplikasi dan menguji APK dalam proses yang sama pada Perangkat Android virtual atau fisik. Mereka juga menentukan kelas test runner, seperti com.google.GoogleTestRunner, yang dapat bervariasi berdasarkan kerangka instrumentasi spesifik yang dipilih.
Lihat https://developer.android.com/training/testing/fundamentals untuk informasi selengkapnya tentang jenis pengujian Android.
Representasi JSON |
---|
{ "testApk": { object ( |
Bidang | |
---|---|
testApk | Diperlukan. APK berisi kode pengujian yang akan dieksekusi. |
appPackageId | Paket java untuk aplikasi yang sedang diuji. Nilai default ditentukan dengan memeriksa manifes aplikasi. |
testPackageId | Paket java untuk pengujian yang akan dijalankan. Nilai default ditentukan dengan memeriksa manifes aplikasi. |
testRunnerClass | Kelas InstrumentationTestRunner. Nilai default ditentukan dengan memeriksa manifes aplikasi. |
testTargets[] | Setiap target harus sepenuhnya memenuhi syarat dengan nama paket atau nama kelas, dalam salah satu format berikut:
Jika kosong, semua target dalam modul akan dijalankan. |
orchestratorOption | Opsi untuk menjalankan setiap pengujian dalam pemanggilan instrumentasinya sendiri dengan Android Test Orchestrator atau tidak. ** Orchestrator hanya kompatibel dengan AndroidJUnitRunner versi 1.1 atau lebih tinggi! ** Orchestrator menawarkan manfaat berikut:
Lihat https://developer.android.com/training/testing/junit-runner.html#using-android-test-orchestrator untuk informasi selengkapnya tentang Android Test Orchestrator. Jika tidak disetel, pengujian akan dijalankan tanpa orkestrator. |
shardingOption | Opsi untuk menjalankan pengujian di beberapa pecahan secara paralel. |
Bidang gabungan app_under_test . Diperlukan. app_under_test hanya dapat berupa salah satu dari berikut ini: | |
appApk | APK untuk aplikasi yang sedang diuji. |
appBundle | Paket aplikasi multi-apk untuk aplikasi yang sedang diuji. |
Paket Aplikasi
Format file Android App Bundle, berisi file BundleConfig.pb, direktori modul dasar, nol atau lebih direktori modul fitur dinamis.
Lihat https://developer.android.com/guide/app-bundle/build untuk panduan membuat App Bundle.
Representasi JSON |
---|
{ // Union field |
Bidang | |
---|---|
bundle bidang serikat pekerja. Diperlukan. Informasi lokasi bundel. bundle hanya dapat berupa salah satu dari berikut ini: | |
bundleLocation | File .aab yang mewakili app bundle yang sedang diuji. |
Opsi Orchestrator
Menentukan cara menjalankan pengujian.
Enum | |
---|---|
ORCHESTRATOR_OPTION_UNSPECIFIED | Nilai default: server akan memilih mode. Saat ini menyiratkan bahwa pengujian akan berjalan tanpa orkestrator. Kedepannya, seluruh uji instrumentasi akan dijalankan bersama orkestrator. Penggunaan orkestrator sangat dianjurkan karena semua manfaat yang ditawarkannya. |
USE_ORCHESTRATOR | Jalankan pengujian menggunakan orkestrator. ** Hanya kompatibel dengan AndroidJUnitRunner versi 1.1 atau lebih tinggi! ** Direkomendasikan. |
DO_NOT_USE_ORCHESTRATOR | Jalankan pengujian tanpa menggunakan orkestrator. |
Opsi Sharding
Opsi untuk mengaktifkan sharding.
Representasi JSON |
---|
{ // Union field |
Bidang | |
---|---|
| |
uniformSharding | Kasus uji shard secara seragam berdasarkan jumlah total shard. |
manualSharding | Pecahan kasus uji ke dalam grup paket, kelas, dan/atau metode tertentu. |
smartSharding | Tes pecahan berdasarkan catatan waktu kasus uji sebelumnya. |
Sharding Seragam
Kasus uji shard secara seragam berdasarkan jumlah total shard.
Untuk uji instrumentasi, ini akan diterjemahkan ke argumen AndroidJUnitRunner "-e numShard" dan "-e shardIndex". Jika sharding seragam diaktifkan, menentukan salah satu argumen sharding ini melalui environmentVariables
tidak valid.
Berdasarkan mekanisme sharding yang digunakan AndroidJUnitRunner, tidak ada jaminan bahwa kasus uji akan didistribusikan secara seragam ke seluruh shard.
Representasi JSON |
---|
{ "numShards": integer } |
Bidang | |
---|---|
numShards | Diperlukan. Jumlah total pecahan yang akan dibuat. Angka ini harus selalu berupa angka positif yang tidak lebih besar dari jumlah total kasus uji. Saat Anda memilih satu atau lebih perangkat fisik, jumlah pecahannya harus <= 50. Saat Anda memilih satu atau lebih perangkat virtual ARM, jumlahnya harus <= 200. Saat Anda memilih perangkat virtual x86 saja, jumlahnya harus <= 500 . |
Pembagian Manual
Pecahan kasus uji ke dalam grup paket, kelas, dan/atau metode tertentu.
Jika sharding manual diaktifkan, menentukan target pengujian melalui environmentVariables atau di InstrumentationTest tidak valid.
Representasi JSON |
---|
{
"testTargetsForShard": [
{
object ( |
Bidang | |
---|---|
testTargetsForShard[] | Diperlukan. Kelompok paket, kelas, dan/atau metode pengujian yang akan dijalankan untuk setiap pecahan yang dibuat secara manual. Anda harus menentukan setidaknya satu pecahan jika bidang ini ada. Saat Anda memilih satu atau lebih perangkat fisik, jumlah testTargetsForShard yang diulang harus <= 50. Saat Anda memilih satu atau lebih perangkat virtual ARM, jumlahnya harus <= 200. Saat Anda memilih perangkat virtual x86 saja, jumlahnya harus <= 500. |
TestTargetsForShard
Uji target untuk pecahan.
Representasi JSON |
---|
{ "testTargets": [ string ] } |
Bidang | |
---|---|
testTargets[] | Sekelompok paket, kelas, dan/atau metode pengujian yang akan dijalankan untuk setiap shard. Target harus ditentukan dalam format argumen AndroidJUnitRunner. Misalnya, "paket com.my.packages" "kelas com.my.package.MyClass". Jumlah testTargets harus lebih besar dari 0. |
Sharding Cerdas
Tes pecahan berdasarkan catatan waktu kasus uji sebelumnya.
Representasi JSON |
---|
{ "targetedShardDuration": string } |
Bidang | |
---|---|
targetedShardDuration | Jumlah waktu yang diperlukan untuk pengujian dalam sebuah pecahan. Default: 300 detik (5 menit). Minimum yang diperbolehkan: 120 detik (2 menit). Jumlah pecahan diatur secara dinamis berdasarkan waktu, hingga batas maksimum pecahan (dijelaskan di bawah). Untuk menjamin setidaknya satu kasus uji untuk setiap shard, jumlah shard tidak akan melebihi jumlah kasus uji. Durasi shard akan terlampaui jika:
Durasi shard tidak dijamin karena smart sharding menggunakan riwayat kasus uji dan durasi default yang mungkin tidak akurat. Aturan untuk menemukan catatan waktu kasus uji adalah:
Karena durasi shard sebenarnya dapat melebihi durasi shard yang ditargetkan, kami menyarankan Anda menetapkan nilai yang ditargetkan setidaknya 5 menit kurang dari batas waktu pengujian maksimum yang diperbolehkan (45 menit untuk perangkat fisik dan 60 menit untuk perangkat virtual), atau Anda menggunakan kustom nilai batas waktu pengujian yang Anda tetapkan. Pendekatan ini menghindari pembatalan pecahan sebelum semua pengujian selesai. Perhatikan bahwa ada batasan jumlah maksimum pecahan. Saat Anda memilih satu atau lebih perangkat fisik, jumlah pecahannya harus <= 50. Saat Anda memilih satu atau lebih perangkat virtual ARM, jumlahnya harus <= 200. Saat Anda memilih perangkat virtual x86 saja, jumlahnya harus <= 500 . Untuk menjamin setidaknya satu kasus pengujian untuk setiap pecahan, jumlah pecahan tidak akan melebihi jumlah kasus pengujian. Setiap pecahan yang dibuat diperhitungkan dalam kuota pengujian harian. Durasi dalam detik hingga sembilan digit pecahan, diakhiri dengan ' |
AndroidRoboTest
Pengujian aplikasi Android yang menjelajahi aplikasi pada Perangkat Android virtual atau fisik, menemukan penyebab dan mengalami error seiring berjalannya waktu.
Representasi JSON |
---|
{ "appPackageId": string, "appInitialActivity": string, "maxDepth": integer, "maxSteps": integer, "roboDirectives": [ { object ( |
Bidang | |
---|---|
appPackageId | Paket java untuk aplikasi yang sedang diuji. Nilai default ditentukan dengan memeriksa manifes aplikasi. |
appInitialActivity | Aktivitas awal yang harus digunakan untuk memulai aplikasi. |
maxDepth | Kedalaman maksimum tumpukan traversal yang dapat dijelajahi Robo. Setidaknya harus ada 2 agar Robo dapat menjelajahi aplikasi lebih dari aktivitas pertama. Standarnya adalah 50. |
maxSteps | Jumlah langkah maksimal yang dapat dijalankan Robo. Standarnya tidak ada batasnya. |
roboDirectives[] | Serangkaian arahan yang harus diterapkan Robo selama penjelajahan. Hal ini memungkinkan pengguna untuk menyesuaikan perayapan. Misalnya, nama pengguna dan kata sandi untuk akun pengujian dapat diberikan. |
roboMode | Mode di mana Robo harus dijalankan. Kebanyakan klien harus mengizinkan server untuk mengisi kolom ini secara otomatis. |
roboScript | File JSON dengan serangkaian tindakan yang harus dilakukan Robo sebagai prolog untuk perayapan. |
startingIntents[] | Maksud yang digunakan untuk meluncurkan aplikasi untuk perayapan. Jika tidak ada yang disediakan, maka aktivitas peluncur utama akan diluncurkan. Jika ada yang disediakan, maka hanya yang disediakan saja yang diluncurkan (aktivitas peluncur utama harus disediakan secara eksplisit). |
Bidang gabungan app_under_test . Diperlukan. app_under_test hanya dapat berupa salah satu dari berikut ini: | |
appApk | APK untuk aplikasi yang sedang diuji. |
appBundle | Paket aplikasi multi-apk untuk aplikasi yang sedang diuji. |
RoboDirective
Mengarahkan Robo untuk berinteraksi dengan elemen UI tertentu jika ditemukan selama perayapan. Saat ini, Robo dapat melakukan entri teks atau klik elemen.
Representasi JSON |
---|
{
"resourceName": string,
"inputText": string,
"actionType": enum ( |
Bidang | |
---|---|
resourceName | Diperlukan. Nama sumber daya Android dari elemen UI target. Misalnya, di Java: R.string.foo di xml: @string/foo Hanya bagian "foo" yang diperlukan. Dokumen referensi: https://developer.android.com/guide/topics/resources/accessing-resources.html |
inputText | Teks yang diarahkan untuk diatur oleh Robo. Jika dibiarkan kosong, direktif akan dianggap sebagai CLICK pada elemen yang cocok dengan resourceName. |
actionType | Diperlukan. Jenis tindakan yang harus dilakukan Robo pada elemen tertentu. |
Tipe Aksi Robo
Tindakan yang dapat dilakukan Robo pada elemen UI.
Enum | |
---|---|
ACTION_TYPE_UNSPECIFIED | JANGAN GUNAKAN. Hanya untuk versi proto. |
SINGLE_CLICK | Arahkan Robo untuk mengklik elemen yang ditentukan. Tidak boleh dijalankan jika elemen tertentu tidak dapat diklik. |
ENTER_TEXT | Arahkan Robo untuk memasukkan teks pada elemen yang ditentukan. Tidak boleh dijalankan jika elemen tertentu tidak diaktifkan atau tidak mengizinkan entri teks. |
IGNORE | Arahkan Robo untuk mengabaikan interaksi dengan elemen tertentu. |
Mode Robo
Mode di mana Robo harus dijalankan.
Enum | |
---|---|
ROBO_MODE_UNSPECIFIED | Ini berarti server harus memilih mode. Direkomendasikan. |
ROBO_VERSION_1 | Menjalankan Robo dalam mode khusus UIAutomator tanpa aplikasi mengundurkan diri |
ROBO_VERSION_2 | Menjalankan Robo dalam Espresso standar dengan fallback UIAutomator |
RoboStartingIntent
Pesan untuk menentukan aktivitas awal yang akan dirayapi.
Representasi JSON |
---|
{ "timeout": string, // Union field |
Bidang | |
---|---|
timeout | Batas waktu dalam hitungan detik untuk setiap maksud. Durasi dalam detik hingga sembilan digit pecahan, diakhiri dengan ' |
Bidang gabungan starting_intent . Diperlukan. Detail maksud untuk memulai aktivitas. starting_intent hanya dapat berupa salah satu dari berikut ini: | |
launcherActivity | Niat yang memulai aktivitas peluncur utama. |
startActivity | Niat yang memulai aktivitas dengan detail spesifik. |
PeluncurActivityIntent
Menentukan maksud yang memulai aktivitas peluncur utama.
MulaiActivityIntent
Niat awal yang ditentukan oleh tindakan, uri, dan kategori.
Representasi JSON |
---|
{ "action": string, "uri": string, "categories": [ string ] } |
Bidang | |
---|---|
action | Nama tindakan. Diperlukan untuk START_ACTIVITY. |
uri | URI untuk tindakan tersebut. |
categories[] | Kategori maksud untuk ditetapkan pada maksud. |
AndroidTestLoop
Pengujian Aplikasi Android dengan Test Loop. Intent <intent-name> akan ditambahkan secara implisit, karena Games adalah satu-satunya pengguna api ini, untuk saat ini.
Representasi JSON |
---|
{ "appPackageId": string, "scenarios": [ integer ], "scenarioLabels": [ string ], // Union field |
Bidang | |
---|---|
appPackageId | Paket java untuk aplikasi yang sedang diuji. Defaultnya ditentukan dengan memeriksa manifes aplikasi. |
scenarios[] | Daftar skenario yang harus dijalankan selama pengujian. Standarnya adalah semua loop pengujian, yang berasal dari manifes aplikasi. |
scenarioLabels[] | 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 di bidang skenario. |
Bidang gabungan app_under_test . Diperlukan. Paket Android untuk diuji. app_under_test hanya dapat berupa salah satu dari berikut ini: | |
appApk | APK untuk aplikasi yang sedang diuji. |
appBundle | Paket aplikasi multi-apk untuk aplikasi yang sedang diuji. |
Tes IosXc
Pengujian aplikasi iOS yang menggunakan framework XCTest. Xcode mendukung opsi untuk "membangun untuk pengujian", yang menghasilkan file .xctestrun yang berisi spesifikasi pengujian (argumen, metode pengujian, dll). Jenis pengujian ini menerima file zip yang berisi file .xctestrun dan konten terkait dari direktori Build/Products yang berisi semua binari yang diperlukan untuk menjalankan pengujian.
Representasi JSON |
---|
{ "testsZip": { object ( |
Bidang | |
---|---|
testsZip | Diperlukan. .zip yang berisi file .xctestrun dan konten direktori DerivedData/Build/Products. File .xctestrun dalam zip ini diabaikan jika bidang xctestrun ditentukan. |
xctestrun | File .xctestrun yang akan menggantikan file .xctestrun di zip tes. Karena file .xctestrun berisi variabel lingkungan beserta metode pengujian yang harus dijalankan dan/atau diabaikan, ini dapat berguna untuk pengujian sharding. Default diambil dari zip tes. |
xcodeVersion | Versi Xcode yang harus digunakan untuk pengujian. Gunakan TestEnvironmentDiscoveryService untuk mendapatkan opsi yang didukung. Defaultnya adalah versi Xcode terbaru yang didukung Firebase Test Lab. |
appBundleId | Hanya keluaran. Id bundel untuk aplikasi yang sedang diuji. |
testSpecialEntitlements | Opsi untuk menguji hak aplikasi khusus. Menyetel ini akan menandatangani ulang aplikasi yang memiliki hak khusus dengan pengidentifikasi aplikasi eksplisit. Saat ini mendukung pengujian hak lingkungan aps. |
IosTestLoop
Pengujian aplikasi iOS yang mengimplementasikan satu atau lebih skenario game loop. Jenis pengujian ini menerima aplikasi yang diarsipkan (file .ipa) dan daftar skenario bilangan bulat yang akan dijalankan pada aplikasi secara berurutan.
Representasi JSON |
---|
{
"appIpa": {
object ( |
Bidang | |
---|---|
appIpa | Diperlukan. .ipa aplikasi yang akan diuji. |
scenarios[] | Daftar skenario yang harus dijalankan selama pengujian. Defaultnya adalah skenario tunggal 0 jika tidak ditentukan. |
appBundleId | Hanya keluaran. Id bundel untuk aplikasi yang sedang diuji. |
Matriks Lingkungan
Matriks lingkungan tempat pengujian akan dijalankan.
Representasi JSON |
---|
{ // Union field |
Bidang | |
---|---|
Bidang gabungan environment_matrix . Diperlukan. Matriks lingkungan. environment_matrix hanya dapat berupa salah satu dari berikut ini: | |
androidMatrix | Matriks perangkat Android. |
androidDeviceList | Daftar perangkat Android; pengujian hanya akan dijalankan pada perangkat yang ditentukan. |
iosDeviceList | Daftar perangkat iOS. |
AndroidMatrix
Kumpulan permutasi konfigurasi perangkat Android ditentukan oleh perkalian silang sumbu tertentu. Secara internal, AndroidMatrix yang diberikan akan diperluas ke sekumpulan Perangkat Android.
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 ] } |
Bidang | |
---|---|
androidModelIds[] | Diperlukan. Id kumpulan perangkat Android yang akan digunakan. Gunakan TestEnvironmentDiscoveryService untuk mendapatkan opsi yang didukung. |
androidVersionIds[] | Diperlukan. Id kumpulan versi OS Android yang akan digunakan. Gunakan TestEnvironmentDiscoveryService untuk mendapatkan opsi yang didukung. |
locales[] | Diperlukan. Kumpulan lokal yang akan diaktifkan perangkat pengujian untuk pengujian. Gunakan TestEnvironmentDiscoveryService untuk mendapatkan opsi yang didukung. |
orientations[] | Diperlukan. Kumpulan orientasi untuk diuji. Gunakan TestEnvironmentDiscoveryService untuk mendapatkan opsi yang didukung. |
Daftar Perangkat Android
Daftar konfigurasi perangkat Android tempat pengujian akan dijalankan.
Representasi JSON |
---|
{
"androidDevices": [
{
object ( |
Bidang | |
---|---|
androidDevices[] | Diperlukan. Daftar perangkat Android. |
Perangkat Android
Satu perangkat Android.
Representasi JSON |
---|
{ "androidModelId": string, "androidVersionId": string, "locale": string, "orientation": string } |
Bidang | |
---|---|
androidModelId | Diperlukan. Id perangkat Android yang akan digunakan. Gunakan TestEnvironmentDiscoveryService untuk mendapatkan opsi yang didukung. |
androidVersionId | Diperlukan. Id versi OS Android yang akan digunakan. Gunakan TestEnvironmentDiscoveryService untuk mendapatkan opsi yang didukung. |
locale | Diperlukan. Lokal perangkat pengujian yang digunakan untuk pengujian. Gunakan TestEnvironmentDiscoveryService untuk mendapatkan opsi yang didukung. |
orientation | Diperlukan. Bagaimana perangkat diorientasikan selama pengujian. Gunakan TestEnvironmentDiscoveryService untuk mendapatkan opsi yang didukung. |
Daftar Perangkat Ios
Daftar konfigurasi perangkat iOS tempat pengujian akan dijalankan.
Representasi JSON |
---|
{
"iosDevices": [
{
object ( |
Bidang | |
---|---|
iosDevices[] | Diperlukan. Daftar perangkat iOS. |
Perangkat Ios
Satu perangkat iOS.
Representasi JSON |
---|
{ "iosModelId": string, "iosVersionId": string, "locale": string, "orientation": string } |
Bidang | |
---|---|
iosModelId | Diperlukan. Id perangkat iOS yang akan digunakan. Gunakan TestEnvironmentDiscoveryService untuk mendapatkan opsi yang didukung. |
iosVersionId | Diperlukan. Id versi perangkat lunak utama iOS yang akan digunakan. Gunakan TestEnvironmentDiscoveryService untuk mendapatkan opsi yang didukung. |
locale | Diperlukan. Lokal perangkat pengujian yang digunakan untuk pengujian. Gunakan TestEnvironmentDiscoveryService untuk mendapatkan opsi yang didukung. |
orientation | Diperlukan. Bagaimana perangkat diorientasikan selama pengujian. Gunakan TestEnvironmentDiscoveryService untuk mendapatkan opsi yang didukung. |
Eksekusi Tes
Satu pengujian dijalankan dalam satu lingkungan.
Representasi JSON |
---|
{ "id": string, "matrixId": string, "projectId": string, "testSpecification": { object ( |
Bidang | |
---|---|
id | Hanya keluaran. Id unik yang ditetapkan oleh layanan. |
matrixId | Hanya keluaran. Id dari TestMatrix yang berisi. |
projectId | Hanya keluaran. Proyek cloud yang memiliki eksekusi pengujian. |
testSpecification | Hanya keluaran. Cara menjalankan tes. |
shard | Hanya keluaran. Detail tentang pecahannya. |
environment | Hanya keluaran. Bagaimana mesin host dikonfigurasi. |
state | Hanya keluaran. Menunjukkan kemajuan pelaksanaan pengujian saat ini (misalnya, SELESAI). |
toolResultsStep | Hanya keluaran. Dimana hasil eksekusi ini ditulis. |
timestamp | Hanya keluaran. Waktu eksekusi pengujian ini pertama kali dibuat. Stempel waktu dalam format RFC3339 UTC "Zulu", dengan resolusi nanodetik dan hingga sembilan digit pecahan. Contoh: |
testDetails | Hanya keluaran. Detail tambahan tentang tes berjalan. |
Beling
Hanya keluaran. Detail tentang pecahannya.
Representasi JSON |
---|
{
"shardIndex": integer,
"numShards": integer,
"testTargetsForShard": {
object ( |
Bidang | |
---|---|
shardIndex | Hanya keluaran. Indeks pecahan di antara semua pecahan. |
numShards | Hanya keluaran. Jumlah total pecahan. |
testTargetsForShard | Hanya keluaran. Uji target untuk setiap pecahan. Hanya disetel untuk sharding manual. |
estimatedShardDuration | Hanya keluaran. Perkiraan durasi pecahan berdasarkan catatan waktu uji kasus sebelumnya, jika tersedia. Durasi dalam detik hingga sembilan digit pecahan, diakhiri dengan ' |
Lingkungan
Lingkungan tempat pengujian dijalankan.
Representasi JSON |
---|
{ // Union field |
Bidang | |
---|---|
environment bidang serikat pekerja. Diperlukan. Lingkungan. environment hanya dapat berupa salah satu dari berikut ini: | |
androidDevice | Perangkat Android yang harus digunakan dengan pengujian Android. |
iosDevice | Perangkat iOS yang harus digunakan dengan pengujian iOS. |
Status Uji
Keadaan (yaitu, kemajuan) dari eksekusi tes atau matriks.
Enum | |
---|---|
TEST_STATE_UNSPECIFIED | Jangan gunakan. Hanya untuk versi proto. |
VALIDATING | Eksekusi atau matriks sedang divalidasi. |
PENDING | Eksekusi atau matriks sedang menunggu sumber daya tersedia. |
RUNNING | Eksekusinya sedang diproses. Hanya dapat diatur pada eksekusi. |
FINISHED | Eksekusi atau matriks telah berakhir secara normal. Pada matriks, hal ini berarti pemrosesan tingkat matriks selesai secara normal, namun eksekusi individual mungkin berada dalam status ERROR. |
ERROR | Eksekusi atau matriks terhenti karena mengalami kegagalan infrastruktur. |
UNSUPPORTED_ENVIRONMENT | Eksekusi tidak dijalankan karena berhubungan dengan lingkungan yang tidak didukung. Hanya dapat diatur pada eksekusi. |
INCOMPATIBLE_ENVIRONMENT | Eksekusi tidak dijalankan karena masukan yang diberikan tidak sesuai dengan lingkungan yang diminta. Contoh: AndroidVersion yang diminta lebih rendah dari minSdkVersion APK Hanya dapat diatur pada eksekusi. |
INCOMPATIBLE_ARCHITECTURE | Eksekusi tidak dijalankan karena input yang diberikan tidak kompatibel dengan arsitektur yang diminta. Contoh: perangkat yang diminta tidak mendukung menjalankan kode asli di APK yang disediakan Hanya dapat diatur pada eksekusi. |
CANCELLED | Pengguna membatalkan eksekusi. Hanya dapat diatur pada eksekusi. |
INVALID | Eksekusi atau matriks tidak dijalankan karena input yang diberikan tidak valid. Contoh: file masukan bukan jenis yang diharapkan, formatnya salah/rusak, atau ditandai sebagai malware |
AlatHasilLangkah
Mewakili sumber daya langkah hasil alat.
Ini memiliki hasil TestExecution.
Representasi JSON |
---|
{ "projectId": string, "historyId": string, "executionId": string, "stepId": string } |
Bidang | |
---|---|
projectId | Hanya keluaran. Proyek cloud yang memiliki langkah hasil alat. |
historyId | Hanya keluaran. ID riwayat hasil alat. |
executionId | Hanya keluaran. ID eksekusi hasil alat. |
stepId | Hanya keluaran. ID langkah hasil alat. |
Detail Tes
Detail tambahan tentang kemajuan tes lari.
Representasi JSON |
---|
{ "progressMessages": [ string ], "errorMessage": string } |
Bidang | |
---|---|
progressMessages[] | Hanya keluaran. Deskripsi kemajuan tes yang dapat dibaca manusia dan mendetail. Misalnya: "Menyediakan perangkat", "Memulai Tes". Selama eksekusi, data baru dapat ditambahkan ke akhir pesan kemajuan. |
errorMessage | Hanya keluaran. Jika TestState adalah ERROR, maka string ini akan berisi detail kesalahan yang dapat dibaca manusia. |
Penyimpanan Hasil
Lokasi dimana hasil pengujian yang dijalankan disimpan.
Representasi JSON |
---|
{ "googleCloudStorage": { object ( |
Bidang | |
---|---|
googleCloudStorage | Diperlukan. |
toolResultsHistory | Riwayat hasil alat yang berisi eksekusi hasil alat tempat hasil ditulis. Jika tidak disediakan, layanan akan memilih nilai yang sesuai. |
toolResultsExecution | Hanya keluaran. Alat ini menghasilkan eksekusi tempat hasil ditulis. |
resultsUrl | Hanya keluaran. URL ke hasil di Firebase Web Console. |
Penyimpanan GoogleCloud
Lokasi penyimpanan dalam penyimpanan cloud Google (GCS).
Representasi JSON |
---|
{ "gcsPath": string } |
Bidang | |
---|---|
gcsPath | Diperlukan. 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. |
AlatHasilSejarah
Mewakili sumber daya riwayat hasil alat.
Representasi JSON |
---|
{ "projectId": string, "historyId": string } |
Bidang | |
---|---|
projectId | Diperlukan. Proyek cloud yang memiliki riwayat hasil alat. |
historyId | Diperlukan. ID riwayat hasil alat. |
Eksekusi Hasil Alat
Mewakili sumber daya eksekusi hasil alat.
Ini memiliki hasil TestMatrix.
Representasi JSON |
---|
{ "projectId": string, "historyId": string, "executionId": string } |
Bidang | |
---|---|
projectId | Hanya keluaran. Proyek cloud yang memiliki alat tersebut menghasilkan eksekusi. |
historyId | Hanya keluaran. ID riwayat hasil alat. |
executionId | Hanya keluaran. ID eksekusi hasil alat. |
DetailMatrix Tidak Valid
Alasan rinci mengapa Matriks dianggap TIDAK VALID.
Enum | |
---|---|
INVALID_MATRIX_DETAILS_UNSPECIFIED | Jangan gunakan. Hanya untuk versi proto. |
DETAILS_UNAVAILABLE | Matriksnya INVALID, namun tidak ada rincian lebih lanjut yang tersedia. |
MALFORMED_APK | APK aplikasi masukan tidak dapat diuraikan. |
MALFORMED_TEST_APK | APK pengujian masukan tidak dapat diuraikan. |
NO_MANIFEST | AndroidManifest.xml tidak dapat ditemukan. |
NO_PACKAGE_NAME | Manifes APK tidak mendeklarasikan nama paket. |
INVALID_PACKAGE_NAME | ID aplikasi APK (alias nama paket) tidak valid. Lihat juga https://developer.android.com/build/configure-app-module#set-application-id |
TEST_SAME_AS_APP | Paket pengujian dan paket aplikasi sama. |
NO_INSTRUMENTATION | APK pengujian tidak mendeklarasikan instrumentasi. |
NO_SIGNATURE | APK aplikasi masukan tidak memiliki tanda tangan. |
INSTRUMENTATION_ORCHESTRATOR_INCOMPATIBLE | Kelas test runner 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 lebih tinggi. Orchestrator dapat dinonaktifkan dengan menggunakan DO_NOT_USE_ORCHESTRATOR OrchestratorOption. |
NO_TEST_RUNNER_CLASS | APK pengujian tidak berisi kelas runner pengujian yang ditentukan oleh pengguna atau dalam file manifes. Hal ini dapat disebabkan oleh salah satu alasan berikut:
|
NO_LAUNCHER_ACTIVITY | Aktivitas peluncur utama tidak dapat ditemukan. |
FORBIDDEN_PERMISSIONS | Aplikasi mendeklarasikan satu atau lebih izin yang tidak diperbolehkan. |
INVALID_ROBO_DIRECTIVES | Ada konflik dalam roboDirectives yang disediakan. |
INVALID_RESOURCE_NAME | Setidaknya ada satu nama sumber daya yang tidak valid dalam arahan robo yang diberikan |
INVALID_DIRECTIVE_ACTION | Definisi tindakan yang tidak valid dalam arahan robo (misalnya tindakan klik atau abaikan menyertakan bidang teks masukan) |
TEST_LOOP_INTENT_FILTER_NOT_FOUND | Tidak ada filter maksud perulangan pengujian, atau filter yang diberikan tidak diformat dengan benar. |
SCENARIO_LABEL_NOT_DECLARED | Permintaan tersebut berisi label skenario yang tidak dideklarasikan dalam manifes. |
SCENARIO_LABEL_MALFORMED | Terjadi kesalahan saat mengurai nilai label. |
SCENARIO_NOT_DECLARED | Permintaan tersebut berisi nomor skenario yang tidak dideklarasikan dalam manifes. |
DEVICE_ADMIN_RECEIVER | Aplikasi administrator perangkat tidak diperbolehkan. |
MALFORMED_XC_TEST_ZIP | XCTest yang di-zip salah formatnya. Zip tidak berisi satu pun file .xctestrun dan konten direktori DerivedData/Build/Products. |
BUILT_FOR_IOS_SIMULATOR | XCTest yang di-zip dibuat untuk simulator iOS, bukan untuk perangkat fisik. |
NO_TESTS_IN_XC_TEST_ZIP | File .xctestrun tidak menentukan target pengujian apa pun. |
USE_DESTINATION_ARTIFACTS | Satu atau lebih target pengujian yang ditentukan dalam file .xctestrun menentukan "UseDestinationArtifacts", yang tidak diizinkan. |
TEST_NOT_APP_HOSTED | Pengujian XC yang dijalankan pada perangkat fisik harus memiliki "IsAppHostedTestBundle" == "true" di file xctestrun. |
PLIST_CANNOT_BE_PARSED | File Info.plist di zip XCTest tidak dapat diuraikan. |
TEST_ONLY_APK | APK ditandai sebagai "testOnly". Tidak digunakan lagi dan saat ini tidak digunakan. |
MALFORMED_IPA | IPA masukan tidak dapat diuraikan. |
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 | Entah format jalur APK masukan yang diberikan salah, 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 untuk memuat terlalu banyak eksekusi. |
TEST_QUOTA_EXCEEDED | Kuota pengujian 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 | Ada masalah izin yang tidak diketahui saat menjalankan pengujian ini. |
Ringkasan Hasil
Ringkasan hasil untuk matriks pengujian yang telah selesai.
Enum | |
---|---|
OUTCOME_SUMMARY_UNSPECIFIED | Jangan gunakan. Hanya untuk versi proto. |
SUCCESS | Uji matriks yang dijalankan berhasil, misalnya:
|
FAILURE | Proses gagal, misalnya:
|
INCONCLUSIVE | Sesuatu yang tidak terduga terjadi. Proses ini tetap dianggap tidak berhasil, namun hal ini kemungkinan merupakan masalah sementara dan menjalankan kembali pengujian mungkin akan berhasil. |
SKIPPED | Semua tes dilewati, misalnya:
|
Metode | |
---|---|
| Membatalkan eksekusi pengujian yang belum selesai dalam matriks pengujian. |
| Membuat dan menjalankan matriks pengujian sesuai dengan spesifikasi yang diberikan. |
| Memeriksa status matriks pengujian dan eksekusi setelah dibuat. |