Panduan ini menjelaskan cara menjalankan uji instrumentasi, Robo, atau Game Loop menggunakan gcloud CLI.
Untuk mengetahui daftar lengkap perintah gcloud
yang dapat Anda gunakan dengan aplikasi Android di Test Lab, baca dokumentasi referensi untuk gcloud firebase test android
.
Sebelum memulai
Tambahkan Firebase ke project Android jika Anda belum melakukannya.
Langkah 1. Menyiapkan gcloud CLI
- Download Google Cloud SDK.
- Pastikan penginstalan Anda sudah yang terbaru:
gcloud components update
- Login ke gcloud CLI menggunakan Akun Google Anda:
gcloud auth login
- Tetapkan project Firebase Anda di gcloud, dengan PROJECT_ID sebagai ID project Firebase Anda:
gcloud config set project PROJECT_ID
Ini mencakup alat gcloud CLI.
Langkah 2. Periksa perangkat pengujian yang tersedia
Gunakan perintah gcloud berikut untuk melihat perangkat pengujian dan lokal yang tersedia untuk pengujian Anda.
Sebagai opsi, Anda juga dapat mendownload aplikasi contoh Notepad untuk langsung menjalankan perintah. Gunakan file biner app-debug-unaligned.apk
dan file pengujian instrumentasi app-debug-test-unaligned.apk
, yang terletak di NotePad/app/build/outputs/apk/
.
models list
: Mendapatkan daftar perangkat Android yang saat ini dapat diuji.gcloud firebase test android models list
Dalam output perintah:
- Kolom
MODEL_ID
berisi ID yang nantinya dapat Anda gunakan untuk menjalankan pengujian pada model perangkat. - Kolom
OS_VERSION_ID
berisi versi sistem operasi yang didukung oleh perangkat.
Contoh output
- Kolom
models describe
: Mendapatkan informasi lebih lanjut tentangMODEL_ID
Android tertentu.gcloud firebase test android models describe MODEL_ID
Output-nya berisi merek model perangkat, produsen, versi OS, level API yang didukung, Antarmuka Biner Aplikasi (ABI) yang didukung, dan apakah perangkat tersebut fisik atau virtual.
versions list
: Mendapatkan daftar versi OS yang saat ini tersedia untuk diuji.gcloud firebase test android versions list
Anda dapat menggunakan ID yang tercantum di salah satu dari dua kolom pertama output perintah (
OS_VERSION_ID
danVERSION
), untuk menjalankan pengujian nanti terhadap versi OS Android. Jika Anda tidak menetapkan versi OS Android yang akan diuji, versi default yang tercantum pada kolomTAGS
akan digunakan.Contoh output
locales list
: Mendapatkan daftar lokalitas yang saat ini bisa diuji.gcloud firebase test android versions list
Kolom pertama pada output perintah,
LOCALE
, berisi ID yang bisa Anda gunakan nanti untuk menjalankan pengujian pada suatu lokalitas. Jika Anda tidak menetapkan lokalitas yang akan diuji, bahasa Inggris akan digunakan sebagai lokalitas default.
Langkah 3. Jalankan pengujian
Setelah mengetahui berbagai model perangkat, lokal, dan versi OS yang tersedia untuk menguji aplikasi, Anda dapat menentukan perangkat menggunakan perintah gcloud firebase test android run
dan flag --device
untuk menjalankan uji Robo atau instrumentasi.
Menjalankan uji Robo
Walaupun tidak memiliki uji instrumentasi, Anda masih dapat mencari bug dalam aplikasi. Gunakan uji Robo untuk melakukan peninjauan otomatis terhadap antarmuka pengguna aplikasi Anda. Uji Robo mencoba aplikasi dengan melakukan analisis statis pada berbagai jalur antarmuka pengguna aplikasi, lalu melakukan crawl pada aplikasi untuk menemukan error dan potensi masalah lainnya.
Untuk menjalankan Uji Robo, jalankan contoh perintah berikut:
gcloud firebase test android run \ --type robo \ --app app-debug-unaligned.apk \ --device model=Nexus6,version=21,locale=en,orientation=portrait \ --device model=Nexus7,version=19,locale=fr,orientation=landscape \ --timeout 90s \ --client-details matrixLabel="Example matrix label"
- Parameter
--type robo
bersifat implisit jika tidak ada nilai--type
yang ditentukan. - Untuk membantu mengidentifikasi dan menemukan matriks uji di Firebase console, Anda dapat menggunakan flag
--client-details matrixLabel="Example matrix label"
opsional untuk memberi label pada matriks uji. - Anda dapat melihat kumpulan opsi command line lengkap untuk menjalankan pengujian dengan mengetik:
gcloud help firebase test android run
.
Selain menetapkan argumen ini pada command line, Anda juga bisa menetapkannya dalam file argumen berformat YAML. Jalankan gcloud topic arg-files
untuk mempelajari cara menggunakan fitur ini.
Untuk mempelajari cara menyelidiki hasil pengujian dari uji Robo, lihat Menganalisis hasil pengujian.
Menjalankan uji instrumentasi
Sekarang, gunakan alat command line gcloud
untuk menjalankan uji Espresso dari aplikasi Notepad pada konfigurasi perangkat Android yang Anda tentukan. Gunakan jenis pengujian instrumentation
untuk menjalankan pengujian di app-debug-test-unaligned.apk
seperti berikut:
gcloud firebase test android run \ --type instrumentation \ --app app-debug-unaligned.apk \ --test app-debug-test-unaligned.apk \ --device model=Nexus6,version=21,locale=en,orientation=portrait \ --device model=Nexus7,version=19,locale=fr,orientation=landscape --client-details matrixLabel="Example matrix label"
- Parameter instrumentasi
--type
bersifat implisit jika APK pengujian ditentukan dengan--test
. - Untuk membantu mengidentifikasi dan menemukan matriks uji di Firebase console, Anda dapat menggunakan flag
--client-details matrixLabel="Example matrix label"
opsional untuk memberi label pada matriks uji. - Anda dapat melihat kumpulan opsi command line lengkap untuk menjalankan pengujian dengan mengetik
gcloud help firebase test android run
.
Selain menetapkan argumen ini pada command line, Anda juga bisa menetapkannya dalam file argumen berformat YAML. Jalankan gcloud topic arg-files
untuk mempelajari cara menggunakan fitur ini.
Gcloud CLI mendukung Android Test Orchestrator.
Orchestrator membutuhkan AndroidJUnitRunner v1.1 atau yang lebih tinggi. Untuk mengaktifkannya, gunakan gcloud firebase test android run
dengan flag --use-orchestrator
. Untuk menonaktifkannya, gunakan flag --no-use-orchestrator
.
Anda juga dapat mengontrol cara Test Lab menjalankan uji instrumentasi menggunakan flag tambahan yang tidak ditampilkan di atas. Misalnya, Anda dapat menggunakan flag --test-targets
untuk menguji satu class atau metode class yang digunakan oleh APK pengujian Anda. Anda juga dapat mencari tahu apakah pengujian Anda yang gagal sebenarnya konsisten atau tidak dengan menggunakan flag --num-flaky-test-attempts
. Flag ini menentukan berapa kali eksekusi uji harus dicoba ulang jika satu atau beberapa kasus pengujiannya gagal karena alasan apa pun. Untuk mempelajari lebih lanjut, lihat gcloud firebase test android run.
Laporan cakupan kode untuk uji instrumentasi
Test Lab mendukung alat pelaporan cakupan kode EMMA dan JaCoCo. Jika salah satu alat tersebut telah terintegrasi dengan build aplikasi, Anda bisa mendapatkan laporan cakupan kode untuk pengujian Test Lab dengan menjalankan gcloud firebase test android run
dengan beberapa argumen tambahan. Jika Android Test Orchestrator tidak diaktifkan, gunakan:
gcloud firebase test android run \ --type instrumentation \ --app your-app.apk \ --test your-app-test.apk \ --device model=TestDevice,version=AndroidVersion \ --environment-variables coverage=true,coverageFile="/sdcard/Download/coverage.ec" \ --directories-to-pull /sdcard/Download
Jika Anda membuat laporan cakupan kode selagi menggunakan Android Test Orchestrator, ubah variabel lingkungan sebagai berikut:
gcloud firebase test android run \ --type instrumentation \ --app your-app.apk \ --test your-app-test.apk \ --device model=TestDevice,version=AndroidVersion \ --environment-variables clearPackageData=true,coverage=true,coverageFilePath="/sdcard/Download/" \ --directories-to-pull /sdcard/Download
Setelah Test Lab selesai menjalankan pengujian, cari laporan cakupan kode Anda di Google Cloud Storage:
- Buka link Firebase console yang dicetak oleh alat
gcloud
di atas tabel hasil pengujian di terminal Anda. - Klik eksekusi uji dari daftar di link tersebut untuk membuka halaman detail eksekusi.
- Klik Test results untuk membuka bucket Cloud Storage yang menyimpan hasil pengujian eksekusi tersebut.
- Buka
artifacts/coverage.ec
untuk melihat laporan cakupan kode Anda.
Menganalisis hasil pengujian
Setelah beberapa saat, rangkuman dasar hasil pengujian Anda dicetak oleh alat gcloud:
Output dari pengujian command line Anda juga menyertakan link untuk melihat hasil pengujian. Untuk mempelajari lebih lanjut cara menafsirkan hasil ini, lihat Menganalisis Hasil Firebase Test Lab for Android.
Login dan input teks kustom dengan uji Robo
Uji Robo otomatis melengkapi layar login yang menggunakan akun Google untuk autentikasi, kecuali jika Anda menggunakan parameter --no-auto-google-login
. Uji Robo juga dapat melengkapi layar login khusus menggunakan kredensial akun pengujian yang Anda berikan. Anda juga dapat menggunakan parameter ini untuk memasukkan teks input kustom untuk kolom teks lain yang digunakan oleh aplikasi Anda.
Untuk melengkapi kolom teks di aplikasi Anda, gunakan parameter --robo-directives
, lalu berikan daftar pasangan key-value
yang dipisahkan koma, dengan key
sebagai nama resource Android dari elemen UI target, sedangkan value
sebagai string teks. Anda juga dapat menggunakan flag ini untuk memberi tahu Robo agar mengabaikan elemen UI tertentu (misalnya, tombol "logout").
Kolom EditText
didukung, tetapi kolom teks dalam elemen UI WebView
tidak didukung.
Misalnya, Anda dapat menggunakan parameter berikut untuk login kustom:
--robo-directives username_resource=username,password_resource=password
Perintah dan flag yang tersedia
Gcloud CLI Test Lab memiliki beberapa perintah dan flag yang memungkinkan Anda menjalankan pengujian dengan spesifikasi yang berbeda:
Flag Android Test Orchestrator: Flag untuk mengaktifkan Orchestrator, yakni alat yang dapat digunakan untuk menjalankan setiap pengujian aplikasi dalam pemanggilan
Instrumentation
-nya sendiri. Test Lab selalu menjalankan Orchestrator versi terbaru.Flag uji Game Loop: Sekumpulan flag konfigurasi yang mengaktifkan dan mengontrol "mode demo" untuk menyimulasikan tindakan pemain dalam aplikasi game. Pelajari lebih lanjut cara menjalankan uji Game Loop dengan Test Lab.
Flag sharding seragam (dalam versi beta): Flag yang menentukan jumlah shard yang akan digunakan untuk distribusi kasus pengujian secara merata. Shard dijalankan secara paralel di perangkat terpisah.
Flag sharding manual (dalam versi beta): Flag yang menentukan grup paket, class, dan/atau kasus pengujian untuk dijalankan di shard (grup kasus pengujian). Shard dijalankan secara paralel di perangkat terpisah.
Flag profil traffic jaringan (dalam versi beta): Flag yang menentukan profil jaringan yang digunakan pengujian Anda di perangkat fisik. Profil jaringan meniru berbagai kondisi jaringan sehingga Anda dapat menguji performa aplikasi pada jaringan yang tidak dapat diandalkan atau tidak dapat diprediksi.
Membuat skrip perintah gcloud dengan Test Lab
Anda dapat menggunakan skrip shell atau file batch untuk mengotomatiskan perintah pengujian aplikasi seluler yang juga dapat Anda jalankan dengan command line gcloud. Contoh skrip bash berikut menjalankan uji instrumentasi dengan waktu tunggu dua menit, dan melaporkan jika pengujian berjalan dengan sukses:
if gcloud firebase test android run --app my-app.apk --test my-test.apk --timeout 2m then echo "Test matrix successfully finished" else echo "Test matrix exited abnormally with non-zero exit code: " $? fi
Membuat skrip exit code
Test Lab menyediakan beberapa exit code yang dapat Anda gunakan untuk lebih memahami hasil pengujian yang dijalankan menggunakan skrip atau file batch.
Membuat skrip exit code untuk Test Lab
Exit Code | Catatan |
---|---|
0 | Semua eksekusi uji lulus. |
1 | Terjadi kesalahan umum. Kemungkinan penyebab: nama file tidak ada atau error pada HTTP/jaringan. |
2 | Keluar dari pengujian karena ada perintah atau argumen yang tidak dikenal. |
10 | Satu atau beberapa kasus pengujian (class atau metode class yang diuji) dalam eksekusi uji tidak lulus. |
15 | Firebase Test Lab tidak bisa menentukan apakah matriks uji lulus atau gagal karena terjadinya error yang tidak terduga. |
18 | Lingkungan pengujian untuk eksekusi uji ini tidak didukung karena dimensi pengujian tidak kompatibel. Error ini mungkin terjadi jika level Android API yang dipilih tidak didukung oleh jenis perangkat yang dipilih. |
19 | Matriks uji dibatalkan oleh pengguna. |
20 | Terjadi error pada infrastruktur pengujian. |