Integrasikan Test Lab ke dalam sistem CI/CD Anda

1. Perkenalan

Terakhir Diperbarui: 07-04-2022

Cara menjalankan pengujian seluler dengan sistem CI/CD

Menjalankan pengujian seluler bisa jadi sulit: banyak aplikasi berjalan di platform, perangkat, dan versi API yang berbeda. Pengembang aplikasi ingin menguji sebanyak mungkin konfigurasi untuk mengetahui masalah sebelum penggunanya melakukannya. Namun, kendala biaya dan sumber daya membatasi jumlah perangkat pengujian dan jumlah pemeliharaan manual yang dapat dilakukan oleh masing-masing pengembang. Ketika proses pengembangan ditingkatkan, terutama untuk sistem integrasi berkelanjutan/pengembangan berkelanjutan (CI/CD), proses pengujian perlu dilakukan. untuk diotomatisasi sambil meminimalkan biaya dan upaya pemeliharaan.

Untuk membantu Anda memahami bagaimana kinerja aplikasi Anda di perangkat pengguna, Firebase Test Lab menghosting berbagai perangkat fisik dan virtual seluler di pusat data kami. Kami juga menyediakan Google Cloud CLI, alat baris perintah yang independen terhadap platform, yang mengatur pengujian yang berjalan pada perangkat di pusat data kami. Gcloud CLI memudahkan pengintegrasian solusi pengujian berbasis cloud Test Lab ke dalam alur kerja CI/CD yang ada.

Dukungan lintas platform

Test Lab menyediakan solusi pengujian untuk aplikasi Android dan iOS serta dukungan khusus untuk game seluler seperti Unity. Opsi pengujian mencakup kerangka pengujian populer seperti Android Espresso, UI Automator, dan iOS XCTest. Dengan menggunakan perayap otomatis kami, Robo , Test Lab bahkan dapat menjalankan pengujian tanpa kode pengujian apa pun.

Tidak ada persyaratan perangkat keras

Test Lab menghosting perangkat fisik di pusat data Google, dan menghosting perangkat virtual di Google Cloud. Yang perlu Anda lakukan hanyalah mengirimkan pengujian Anda ke Test Lab dan menunggu hasilnya.

Cepat dan dapat diandalkan

Menjalankan banyak kasus pengujian secara bersamaan dapat memakan waktu lama, sehingga memblokir proses CI/CD. Dengan Test Lab, Anda dapat dengan mudah melakukan sharding pengujian dan menjalankannya di beberapa perangkat secara paralel. Anda juga dapat mendeteksi kerapuhan, yang merupakan masalah umum dalam pengujian seluler.

Apa yang akan Anda pelajari

  • Cara membuat artefak uji
  • Cara menjalankan pengujian seluler menggunakan gcloud CLI
  • Cara mengatur Jenkins CI
  • Cara menjalankan tes seluler menggunakan Jenkins CI
  • Cara mengonfigurasi pengujian untuk ditingkatkan dengan sistem CI

Codelab ini berfokus pada menjalankan pengujian. Konsep dan blok kode yang tidak relevan diabaikan dan disediakan untuk Anda salin dan tempel.

Apa yang Anda perlukan

Jika Anda lebih suka membuat sesuatu dari awal, Anda memerlukan Android Studio untuk menjalankan pengujian Android, atau XCode untuk menjalankan pengujian iOS. Atau bawa saja sendiri dan kami akan menyediakan artefaknya.

2. Jalankan pengujian dengan gcloud CLI

Membangun APK aplikasi Android dan menguji APK

Untuk menjalankan pengujian dengan Test Lab, mulailah dengan membuat APK aplikasi Android dan APK pengujian, yang berisi pengujian berinstrumen untuk dijalankan pada perangkat keras atau emulator. Jika Anda sudah memiliki basis kode yang berfungsi, Anda dapat membuat APK sendiri atau menggunakan BasicSample untuk Espresso .

Untuk membuat APK menggunakan perintah Gradle, Anda harus menginstal Android SDK. Jika Android Studio Anda belum terinstal di mesin Anda, instal Android Studio dan Android SDK , dan atur lingkungan ANDROID_HOME dengan direktori Android SDK Anda. Misalnya, di file ~/.bash_profile Anda, tambahkan baris berikut:

export ANDROID_HOME=~/Android/Sdk # For linux
export ANDROID_HOME=~/Library/Android/sdk  # For MacOS

Lalu, jalankan perintah berikut untuk mengkloning kode dan membuat APK:

git clone https://github.com/android/testing-samples.git
cd testing-samples/ui/espresso/BasicSample/
./gradlew assembleDebug  # for generating app apk
./gradlew assembleDebugAndroidTest # for generating testing apk

Setelah menjalankan perintah clone dan build, Anda dapat menemukan APK aplikasi dan APK pengujian di lokasi berikut:

app/build/outputs/apk/debug/app-debug.apk
app/build/outputs/apk/androidTest/debug/app-debug-androidTest.apk

Alternatifnya, Anda dapat menggunakan opsi berikut untuk mendapatkan pengujian dan APK aplikasi:

  • Untuk membuat APK di Android Studio, ikuti petunjuk di Pengujian di Android Studio .
  • Unduh contoh aplikasi Notepad . Gunakan file biner app-debug-unaligned.apk dan file pengujian instrumentasi app-debug-test-unaligned.apk , yang terletak di NotePad/app/build/outputs/apk/ .

Jika Anda memiliki kode sumber yang berfungsi untuk aplikasi iOS, Anda dapat menulis XCTest dan membuat file zip dari aplikasi dan pengujian.

Gunakan gcloud CLI untuk menjalankan pengujian dengan Test Lab

Di bagian ini, Anda akan membuat proyek Firebase dan mengonfigurasi lingkungan Google Cloud SDK lokal Anda. Untuk mempelajari lebih lanjut, lihat Memulai pengujian dengan gcloud CLI .

Siapkan gcloud CLI

  1. Unduh Google Cloud SDK , yang menyertakan alat gcloud CLI.
  2. Pastikan instalasi Anda mutakhir:
gcloud components update
  1. Masuk ke gcloud CLI menggunakan Akun Google Anda:
gcloud auth login
  1. Tetapkan proyek Firebase Anda di gcloud CLI, dengan PROJECT_ID sebagai ID proyek Firebase Anda. Anda dapat menemukan ID proyek di URL Firebase Console, yang mengikuti konvensi penamaan ini: https://console.firebase.google.com/project/[PROJECT_ID]/...
gcloud config set project PROJECT_ID

Jika Anda tidak memiliki proyek Firebase, buatlah proyek tersebut di Firebase Console .

Jalankan pengujian menggunakan APK yang dibuat

Di bagian ini, Anda menjalankan pengujian instrumentasi pada perangkat default Test Lab, yaitu Pixel 3 dengan API level 28. Jika Anda ingin menggunakan perangkat lain, periksa perangkat yang tersedia .

Dengan menggunakan aplikasi dan APK pengujian yang Anda buat di APK Bangun aplikasi Android dan APK pengujian, jalankan pengujian Instrumentasi Android menggunakan perintah berikut:

gcloud firebase test android run \
  --type instrumentation \
  --app app/build/outputs/apk/debug/app-debug.apk \
  --test app/build/outputs/apk/androidTest/debug/app-debug-androidTest.apk

Analisis hasil tes

Anda dapat menganalisis hasil tes menggunakan salah satu opsi berikut:

  • ringkasan gcloud - setelah pengujian Anda selesai, gcloud CLI mencetak ringkasan dasar hasil pengujian Anda.
  • kode keluar gcloud - setelah pengujian selesai, perintah keluar dengan 0 jika pengujian berhasil. Jika pengujian gagal, perintah keluar dengan kode keluar bukan nol.
  • Firebase Console - gcloud CLI mencetak link ke Firebase Console. Tautan mengikuti konvensi penamaan https://console.firebase.google.com/project/PROJECT_ID/testlab/... Untuk mempelajari lebih lanjut, lihat Menafsirkan hasil dari satu eksekusi pengujian .
  • File XML JUnit - gcloud CLI mencetak yang berikut:
Raw results will be stored in your Cloud Storage bucket at [https://console.developers.google.com/storage/browser/test-lab-xxxxx/xxxxx/]

test-lab-xxxxx/xxxxx adalah bucket Cloud Storage yang menyimpan artefak dan hasil pengujian. Untuk menemukan file XML JUnit yang berisi hasil pengujian, buka tautan dan navigasikan ke blueline-28-en-portrait/test_result_1.xml .

3. Siapkan dengan Jenkins CI

Di bagian ini Anda menggunakan Jenkins CI, sistem CI yang populer, untuk menjalankan pengujian dengan Test Lab. Jika Anda ingin menggunakan sistem CI yang berbeda, lihat Praktik terbaik tingkat lanjut untuk menjalankan rangkaian pengujian besar dan dokumentasi untuk sistem CI lain seperti Bitrise dan Circle CI . Anda dapat menggunakan Flank sebagai alternatif gcloud CLI.

Aktifkan gcloud CLI untuk Jenkins

Sebelum dapat menggunakan Test Lab dengan Jenkins, Anda harus mengaktifkan API yang diperlukan dan menyiapkan akun layanan yang dapat digunakan Jenkins untuk mengautentikasi dengan gcloud CLI.

Tambahkan akun layanan Google Cloud untuk Jenkins

Akun layanan adalah akun terbatas yang ditujukan untuk integrasi layanan. Akun ini menawarkan kontrol yang sangat ketat untuk layanan tertentu dan tidak tunduk pada pemeriksaan spam atau perintah captcha, yang dapat memblokir build CI Anda.

Untuk membuat akun layanan, ikuti langkah-langkah berikut:

  1. Buka halaman Akun Layanan di Google Cloud Console.
  2. Klik Buat akun layanan , tambahkan Nama dan Deskripsi , lalu klik Buat dan lanjutkan .
  3. Dari tarik-turun Pilih peran , pilih Dasar , lalu pilih Editor .
  4. Klik Lanjutkan , lalu klik Selesai .

Selanjutnya, Anda membuat dan mengunduh kunci autentikasi yang dapat digunakan Jenkins untuk mengautentikasi sebagai akun layanan yang Anda buat.

Untuk membuat dan mengunduh kunci akun layanan, ikuti langkah-langkah berikut:

  1. Dari halaman Akun Layanan di Google Cloud Console, klik email yang terkait dengan akun yang Anda buat.
  2. Pilih Kunci , lalu klik Tambah kunci dan Buat kunci baru .
  3. Pilih JSON , lalu klik Buat .
  4. Saat Anda diminta untuk mengunduh file, klik OK. Unduh file ke tempat yang aman di komputer Anda. Anda memerlukan file ini nanti saat mengonfigurasi Jenkins.

Untuk mempelajari selengkapnya tentang membuat akun layanan, lihat Membuat akun layanan .

Aktifkan Google Cloud API yang diperlukan

Cloud Testing API memungkinkan Anda menjalankan pengujian pada infrastruktur Google. Anda mengaktifkan API ini setelah menyelesaikan Jalankan pengujian dengan gcloud CLI. Cloud Tool Results API memungkinkan Anda mengakses hasil pengujian secara terprogram.

  1. Buka Perpustakaan API Konsol Pengembang Google .
  2. Pada kotak pencarian di bagian atas Firebase Console, masukkan nama setiap API yang diperlukan ( Cloud Testing API dan Cloud Tool Results API ). Halaman ikhtisar untuk API yang diminta akan muncul.
  3. Klik Aktifkan API di setiap halaman ikhtisar API.

Instal dan atur Jenkins

Anda dapat menginstal dan mengatur Jenkins CI di Linux, macOS, Windows, dan banyak lingkungan lainnya. Detail tertentu dari codelab ini khusus untuk menginstal dan menjalankan Jenkins CI di Linux, termasuk penggunaan garis miring (/) di jalur file.

Untuk mengunduh dan menginstal Jenkins di komputer yang menjalankan Linux atau Windows, ikuti petunjuk untuk menginstal Jenkins . Setelah Anda menginstal Jenkins, ikuti petunjuk instalasi Jenkins yang sama untuk menyelesaikan pengaturan dan mengakses dasbor Jenkins menggunakan http://localhost:8080 .

Verifikasi plugin yang diinstal

Jenkins mendukung sistem kontrol versi yang berbeda. Dalam codelab ini, Anda menggunakan Git untuk menjalankan pengujian sebelumnya. Dan untuk mendapatkan pengalaman yang lebih baik dalam menjalankan gcloud CLI, Anda perlu menginstal Plugin GCloud SDK.

  1. Di dasbor Jenkins, klik Kelola Jenkins lalu klik Kelola Plugin .
  2. Cari plugin Git dan GCloud SDK dan instal (jika belum diinstal).

Konfigurasikan lokasi Android dan Google Cloud SDK Anda

Anda sekarang menginstruksikan Jenkins di mana menemukan Google Cloud SDK dan Android SDK.

Untuk mengonfigurasi Google Cloud dan Android SDK untuk Jenkins, ikuti langkah-langkah berikut:

  1. Di dasbor Jenkins, klik Kelola Jenkins , lalu klik Konfigurasi Alat Global .
  2. di bagian Google Cloud SDK , klik Tambahkan Google Cloud SDK .
  3. Di kolom Nama , masukkan nama instance Google Cloud SDK yang mudah diingat, misalnya GCloud-SDK.
  4. Masuk ke direktori beranda Google Cloud SDK Anda, misalnya /opt/google-cloud-sdk .
  5. Klik Simpan .
  6. Konfigurasikan properti seluruh sistem Anda untuk Android dan Google Cloud SDK dengan membuka Dashboard > Manage Jenkins > Configure System .
  7. Pilih kotak centang Variabel lingkungan dan klik Tambahkan .
  8. Di bidang Nama , masukkan ANDROID_HOME . Di kolom Value , masukkan lokasi Android SDK Anda, misalnya /opt/Android/Sdk .
  9. Klik kotak centang Lokasi Alat dan klik Tambah . Dari dropdown Nama , pilih nama instance Google Cloud SDK yang Anda tambahkan di Konfigurasi Alat Global.
  10. Di kolom Beranda , masukkan lokasi Google Cloud SDK Anda, misalnya /opt/google-cloud-sdk .
  11. Klik Simpan .

Tambahkan kredensial akun layanan Anda ke Jenkins

Anda kini menambahkan kredensial akun layanan gcloud CLI ke Jenkins sehingga Jenkins dapat mengautentikasi dan berhasil menjalankan perintah gcloud CLI.

  1. Di dasbor Jenkins, klik Kelola Jenkins lalu klik Kelola Kredensial .
  2. Di bagian Stores scoped to Jenkins , klik tautan domain (global) , lalu klik Tambahkan Kredensial .
  3. Dari tarik-turun Jenis , pilih Akun Layanan Google dari kunci pribadi .
  4. Di kolom Nama Proyek , masukkan nama proyek Firebase Anda.
  5. Pilih kunci JSON , lalu klik Telusuri dan telusuri ke lokasi tempat Anda menyimpan kunci akun layanan Anda.
  6. Klik Buat .

Anda sekarang siap mengonfigurasi build otomatis Jenkins untuk Test Lab.

4. Jalankan tes Test Lab dengan Jenkins CI

Sekarang setelah Anda menyiapkan Jenkins, mari gabungkan semuanya dan jalankan pengujian yang sama menggunakan Jenkins.

Anda dapat mengonfigurasi Jenkins untuk menjalankan build otomatis dan menjalankan pengujian setiap kali pembaruan pada aplikasi Anda diperiksa. Anda juga dapat mengonfigurasi Jenkins untuk menjalankan build secara berkala. Untuk mempelajari lebih lanjut tentang mengonfigurasi build di Jenkins, lihat Mengonfigurasi build otomatis .

Buat dan konfigurasikan proyek Jenkins Anda

Buat proyek untuk menjalankan pengujian integrasi berkelanjutan pada aplikasi Anda dengan Test Lab.

Buat proyek Jenkins

  1. Buka dasbor Jenkins dengan menelusuri http://localhost:8080 .
  2. Di dasbor Jenkins, klik Item Baru .
  3. Masukkan nama proyek Anda di bidang Nama item , lalu klik Proyek gaya bebas untuk membuat proyek yang menggunakan konfigurasi build tunggal.
  4. Klik Oke . Untuk menyelesaikan konfigurasi proyek, selesaikan bagian selanjutnya secara berurutan..

Konfigurasikan manajemen kode sumber

  1. Dari tab Manajemen Kode Sumber , pilih Git .
  2. Masukkan https://github.com/android/testing-samples.git di bidang URL Repositori .

Konfigurasikan lingkungan build

Bagian Lingkungan Bangun memungkinkan Anda mengonfigurasi karakteristik bangunan. Aktifkan autentikasi Google Cloud dengan mengikuti langkah-langkah berikut:

  1. Di tab Build Environment , pilih kotak centang autentikasi GCloud SDK dan pilih nama penginstalan yang Anda pilih saat menambahkan informasi penginstalan Google Cloud.
  2. Dari tarik-turun Google Kredensial , pilih kredensial akun layanan yang Anda konfigurasikan.

Tambahkan langkah-langkah pembangunan Gradle untuk membangun kembali paket APK

  1. Gulir ke bawah ke bagian Build , klik Tambahkan langkah build , lalu pilih Jalankan shell .
  2. Tambahkan langkah pembangunan untuk menjalankan perintah berikut di direktori utama aplikasi Anda:
cd ui/espresso/BasicSample/
./gradlew assembleDebug  # for generating app apk
./gradlew assembleDebugAndroidTest # for generating testing apk

Tambahkan langkah pembuatan gcloud CLI ke Jenkins

Sekarang Anda siap menambahkan langkah build ke Jenkins untuk menjalankan Test Lab menggunakan baris perintah gcloud CLI.

Untuk menambahkan langkah build gcloud CLI, tambahkan langkah build Execute shell baru dan masukkan perintah berikut:

gcloud config set project PROJECT_ID
gcloud firebase test android run \
--app ${WORKSPACE}/ui/espresso/BasicSample/app/build/outputs/apk/debug/app-debug.apk
--test ${WORKSPACE}/ui/espresso/BasicSample/app/build/outputs/apk/androidTest/debug/app-debug-androidTest.apk

Setelah menyelesaikan penyiapan proyek, gulir ke bawah ke bagian bawah halaman dan simpan konfigurasi. Anda diarahkan ke halaman beranda untuk proyek baru.

Jalankan pengujian dengan Jenkins

Sekarang Anda siap membangun proyek Jenkins dan menjalankan pengujian seperti pengujian manual yang Anda jalankan dengan gcloud CLI.

Untuk menjalankan pengujian dengan Jenkins, ikuti langkah-langkah berikut:

  1. Untuk memicu pembangunan secara manual, klik Bangun Sekarang .
  2. Periksa kemajuan dan hasilnya dengan mengklik build baru > Console Output .

Jika Anda tidak melihat kesalahan, selamat! Anda baru saja menyiapkan proyek dan menjalankan pengujian pada perangkat Pixel 2 dengan satu klik. Jika Anda mengalami kesalahan, lihat Pemecahan Masalah .

5. Praktik terbaik tingkat lanjut untuk menjalankan rangkaian pengujian besar

Jika Anda ingin menjalankan banyak pengujian secara bersamaan, ikuti praktik terbaik berikut untuk memastikan pengujian Anda berjalan cepat dan andal.

Tingkatkan cakupan pada beberapa konfigurasi perangkat

Anda dapat dengan mudah menambahkan beberapa perangkat ke langkah pembuatan gcloud CLI. Dan Anda dapat memeriksa dan memilih perangkat, versi, lokal, dan orientasi yang tersedia. Misalnya, perintah berikut menjalankan pengujian pada dua perangkat:

  • Google Pixel 2 virtual dengan API level 30 dalam orientasi potret dan lokal bahasa Inggris
  • Samsung Galaxy S20 fisik dengan API level 29 dalam orientasi lanskap dan lokal Prancis
gcloud firebase test android run \
  --type instrumentation \
  --app app-debug.apk \
  --test app-debug-test.apk \
  --device model=Pixel2,version=30,locale=en,orientation=portrait  \
  --device model=x1q,version=29,locale=fr,orientation=landscape

Gunakan file konfigurasi gcloud CLI YAML

Jika Anda lebih suka mengelola argumen di satu tempat atau dengan sistem kontrol sumber, Anda bisa menentukan argumen ini dalam file argumen berformat YAML. Untuk mempelajari cara menggunakan fitur ini, jalankan gcloud topic arg-files .

Tes pecahan untuk dijalankan secara paralel

Sharding pengujian membagi serangkaian pengujian menjadi subgrup (pecahan) yang dijalankan secara terpisah dan terisolasi. Test Lab secara otomatis menjalankan setiap shard secara paralel menggunakan beberapa perangkat, yang memungkinkan Test Lab menyelesaikan seluruh rangkaian pengujian dengan lebih cepat. Untuk informasi selengkapnya, lihat Mengaktifkan sharding .

Untuk mengaktifkan sharding, gunakan saluran gcloud beta , dan tambahkan tanda –num-uniform-shards atau –test-targets-for-shard ke langkah pembuatan gcloud CLI. Misalnya, untuk membagi pengujian Anda menjadi lima eksekusi dan dijalankan secara paralel, jalankan perintah berikut:

gcloud beta firebase test android run \
  --type instrumentation \
  --app app-debug.apk \
  --test app-debug-test.apk \
  --num-uniform-shards 5

Aktifkan deteksi kerapuhan

Tes seluler seringkali tidak stabil. Terkadang pengujian berhasil, dan di lain waktu mungkin gagal, bahkan dengan pengaturan yang sama. Anda dapat mendeteksi apakah pengujian yang gagal bersifat tidak stabil dengan menggunakan tanda gcloud CLI –num-flaky-test-attempts . Tanda ini menentukan berapa kali eksekusi pengujian harus dicoba ulang jika satu atau lebih kasus pengujian gagal karena alasan apa pun.

Misalnya, untuk menjalankan kembali kasus pengujian yang gagal tiga kali lagi setelah proses awal yang gagal, tentukan hal berikut:

gcloud beta firebase test android run \
  --type instrumentation \
  --app app-debug.apk \
  --test app-debug-test.apk \
  --num-flaky-test-attempts 3

6. Selamat

Selamat, Anda berhasil menjalankan pengujian Test Lab pertama Anda dengan sistem CI!

Anda membuat aplikasi dan menguji APK, serta menjalankan pengujian instrumentasi dengan Test Lab menggunakan gcloud CLI. Anda juga menyiapkan proyek Jenkins untuk mengotomatiskan pengujian yang sama.

Sekarang Anda mengetahui langkah-langkah penting untuk mengintegrasikan Test Lab ke dalam sistem CI/CD Anda.

Apa berikutnya?

Lihat Cara menyiapkan CI menggunakan Firebase Emulator Suite

Bacaan lebih lanjut

Dokumen referensi