Buka konsol

Memulai Firebase Test Lab dari Command Line gcloud

Firebase Test Lab menyediakan infrastruktur berbasis cloud untuk menguji aplikasi Android, termasuk integrasi penuh dengan antarmuka command-line (CLI) gcloud. Dokumen ini membahas penginstalan dan konfigurasi yang diperlukan untuk memulai penggunaan Test Lab dari antarmuka command-line gcloud.

Untuk mengetahui daftar lengkap perintah gcloud firebase test android yang dapat Anda gunakan dengan Test Lab, baca bagian gcloud firebase test android.

Membuat project Firebase

Jika Anda belum memiliki project Firebase untuk aplikasi yang dimiliki, buka Firebase console, lalu klik Buat Project Baru untuk membuat project baru. Anda memerlukan izin kepemilikan atau izin untuk mengedit dalam project.

Anda dapat menggunakan Test Lab untuk melakukan sejumlah pengujian harian yang terbatas pada paket Spark dan Flame. Untuk menggunakan Test Lab tanpa batas kuota harian, Anda harus melakukan upgrade ke paket Firebase Blaze.

Mengonfigurasi lingkungan Google Cloud SDK lokal

  1. Download fitur command-line gcloud jika belum: Google Cloud SDK
  2. Pastikan Anda menginstal Cloud SDK yang terbaru dan menyertakan perintah gcloud firebase:
    gcloud components update
  3. Pastikan kredensial autentikasi Anda adalah yang terbaru:
    gcloud auth login
  4. Tetapkan project Anda saat ini di gcloud:
    gcloud config set project PROJECT_ID

Memilih konfigurasi pengujian

Pada contoh ini, Anda akan menjalankan beberapa pengujian pada Notepad, yaitu aplikasi pembuat catatan sederhana di Android.

  1. Download file APK biner untuk aplikasi Notepad (app-debug-unaligned.apk) beserta pengujian instrumentasinya yang sesuai (app-debug-test-unaligned.apk), yang tersedia di direktori NotePad/app/build/outputs/apk/ pada notepad.zip.

  2. Dapatkan daftar perangkat Android terbaru yang dapat diuji, seperti berikut:

    
    $ gcloud firebase test android models list
    
    output daftar model gcloud firebase test androidKolom pertama output perintah, MODEL_ID, berisi ID yang nanti dapat Anda gunakan untuk menjalankan pengujian pada model tertentu. Kolom OS_VERSION_ID mencantumkan daftar versi sistem operasi yang didukung oleh perangkat tersebut. Jika Anda tidak menentukan MODEL_ID yang akan diuji, versi default yang tercantum di bawah kolom TAGS akan digunakan.

  3. Pelajari lebih lanjut MODEL_ID Android tertentu dengan perintah firebase test android models describe, seperti yang berikut:

    
    $ gcloud firebase test android models describe Nexus5
    
    Contoh perintah yang ditunjukkan di atas memberikan informasi terperinci tentang model Nexus5, termasuk merek, produsen, dan level API yang didukung, serta apakah modelnya bersifat fisik atau virtual.

  4. Dapatkan daftar versi OS Android terbaru yang dapat diuji:

    
    $ gcloud firebase test android versions list
    
    daftar versi android gcloudAnda dapat menggunakan ID yang tercantum di salah satu dari dua kolom pertama output perintah (OS_VERSION_ID dan VERSION), untuk nanti menjalankan pengujian pada versi OS Android. Jika Anda tidak menetapkan versi OS Android yang akan diuji, versi default yang tercantum pada kolom TAGS akan digunakan.

  5. Dapatkan daftar bahasa lokal terbaru yang bisa diuji:

    
    $ gcloud firebase test android locales list
    
    Kolom pertama pada output perintah, LOCALE, berisi ID yang bisa Anda gunakan nanti untuk menjalankan pengujian pada suatu bahasa lokal. Jika Anda tidak menetapkan bahasa lokal yang akan diuji, bahasa Inggris akan digunakan sebagai bahasa lokal default. Output perintah tidak ditampilkan di sini karena terdapat ratusan bahasa lokal.

Menjalankan pengujian

Setelah mengetahui berbagai model perangkat, versi OS, dan bahasa lokal yang tersedia untuk diuji ketika menguji aplikasi, Anda dapat menggunakan informasi tersebut untuk menentukan perangkat uji menggunakan perintah gcloud firebase test android run dan tanda --device. Perintah dan tanda ini digunakan baik ketika Anda menggunakan uji Robo untuk menguji aplikasi secara otomatis, maupun ketika menjalankan uji instrumentasi yang ditulis khusus untuk menguji aplikasi.

Menjalankan uji Robo

Walaupun tidak melakukan uji instrumentasi, Anda masih dapat mencari bug dalam aplikasi Anda. Gunakan uji Robo untuk melakukan peninjauan otomatis terhadap antarmuka pengguna di aplikasi Anda. Uji robo mencoba aplikasi dengan melakukan analisis statis pada berbagai lokasi melalui antarmuka pengguna aplikasi, lalu melakukan crawling pada aplikasi untuk menemukan error dan potensi masalah lainnya.

Mari mulai dengan menjalankan contoh perintah:

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

Parameter --type robo bersifat implisit jika tidak ada nilai --type yang ditentukan. Anda dapat melihat kumpulan opsi command line lengkap untuk menjalankan pengujian dengan mengetik: gcloud help firebase test android run. Selain menetapkan semua 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.

Lihat bagian Menganalisis hasil pengujian untuk mempelajari cara memeriksa hasil pengujian dari uji Robo.

Menjalankan uji instrumentasi

Sekarang, gunakan fitur command-line gcloud untuk menjalankan pengujian Espresso dari aplikasi Notepad pada konfigurasi perangkat Android yang Anda tentukan menggunakan 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

Parameter --type instrumentation bersifat implisit jika APK pengujian telah ditentukan dengan --test. Selain menetapkan semua 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.

CLI gcloud mendukung Android Test Orchestrator. Orchestrator membutuhkan AndroidJUnitRunner v1.0 atau yang lebih tinggi. Untuk mengaktifkannya, gunakan gcloud firebase test android run dengan tanda
--use-orchestrator. Untuk menonaktifkannya, gunakan tanda --no-use-orchestrator.

Catatan: Anda juga dapat mengontrol cara Test Lab menjalankan uji instrumentasi menggunakan tanda tambahan yang tidak ditampilkan di atas. Misalnya, Anda dapat menggunakan tanda --test-targets untuk menguji hanya satu class yang digunakan oleh APK pengujian atau untuk menguji hanya satu metode dari class yang digunakan oleh APK pengujian. Untuk mempelajari lebih lanjut, baca bagian gcloud firebase test android run.

Laporan cakupan kode untuk pengujian instrumentasi

Test Lab mendukung fitur pelaporan cakupan kode EMMA dan JaCoCo. Jika memiliki fitur yang terintegrasikan dengan build untuk aplikasi, Anda bisa mendapatkan laporan cakupan kode untuk pengujian Test Lab dengan menjalankan perintah gcloud firebase test android run menggunakan argumen berikut:

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/coverage.ec" \
  --directories-to-pull /sdcard

Setelah Test Lab selesai menjalankan pengujian, cari laporan cakupan kode Anda di Google Cloud Storage:

  1. Buka link Firebase console yang dicetak oleh fitur gcloud di atas tabel hasil pengujian di terminal Anda.
  2. Klik eksekusi pengujian dari daftar di link tersebut untuk membuka halaman detail eksekusi.
  3. Klik Hasil pengujian untuk membuka bucket Google Cloud Storage beserta hasil pengujian eksekusi tersebut.
  4. Buka artifacts/coverage.ec untuk melihat laporan cakupan kode Anda.

Menganalisis hasil pengujian

Setelah beberapa saat, rangkuman dasar hasil pengujian Anda dicetak oleh fitur gcloud:

Hasil pengujian perintah

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 khusus dan input teks dengan uji Robo

Uji Robo secara 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 adalah nama resource Android pada elemen UI target, sedangkan value adalah string teks. Kolom EditText didukung, tetapi tidak untuk kolom teks dalam elemen UI WebView.

Misalnya, Anda dapat menggunakan parameter berikut untuk login kustom:

--robo-directives username_resource=username,password_resource=password

Perintah dan tanda beta

CLI gcloud Test Lab memiliki beberapa perintah dan tanda yang tersedia dalam beta versi publik:

  • Tanda profil traffic jaringan: tanda 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.

  • Tanda uji game loop: jenis pengujian dan tanda konfigurasi yang menyertainya, yang mengaktifkan dan mengontrol "mode demo" untuk menyimulasikan tindakan pemain dalam aplikasi game. Pelajari lebih lanjut tentang uji game loop.

  • Tanda Android Test Orchestrator: tanda untuk mengaktifkan Orchestrator, yakni fitur yang dapat digunakan untuk menjalankan setiap pengujian aplikasi dalam pemanggilan Instrumentasi itu sendiri. Test Lab selalu menjalankan Orchestrator versi terbaru. Pelajari lebih lanjut Android Test Orchestrator.

  • Tanda Upaya Pengujian Tidak Stabil: tanda yang menentukan berapa kali pelaksanaan pengujian harus dicoba ulang jika satu atau beberapa kasus pengujiannya gagal karena alasan apa pun. Semua upaya tambahan dijalankan secara paralel.

  • Abaikan Perintah Direktif Robo : perintah yang menginstruksikan uji robo untuk mengabaikan elemen UI dengan nama resource yang sama atau dimulai dengan nilai yang ditentukan pengguna.

Membuat skrip perintah gcloud dengan Test Lab

Anda dapat menggunakan skrip shell atau file batch untuk mengotomatiskan perintah pengujian aplikasi seluler yang diinginkan, atau jalankan dengan command line gcloud. Contoh skrip bash berikut menjalankan uji instrumentasi dengan waktu tunggu dua menit, dan melaporkan bahwa 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 agar lebih baik dalam memahami hasil pengujian yang dijalankan menggunakan skrip atau file batch.

Membuat skrip exit code untuk Test Lab

Exit Code Catatan
0 Semua pelaksanaan pengujian lulus.
1 Terjadi kesalahan umum. Kemungkinan penyebab: nama file tidak ada atau error pada HTTP/jaringan.
2 Pengujian dikeluarkan karena ada perintah atau argumen yang tidak dikenal.
10 Satu atau beberapa kasus pengujian (class atau metode class yang diuji) dalam pelaksanaan pengujian tidak lulus.
15 Firebase Test Lab tidak bisa menentukan apakah matriks pengujian lulus atau gagal karena terjadinya error yang tidak terduga.
18 Lingkungan pengujian untuk pelaksanaan pengujian 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 pengujian dibatalkan oleh pengguna.
20 Terjadi error pada infrastruktur pengujian.