Catch up on everthing we announced at this year's Firebase Summit. Learn more

Memulai uji instrumentasi

Panduan ini berisi penjelasan mengenai cara menyiapkan dan menjalankan uji instrumentasi menggunakan Firebase Test Lab. Untuk menggunakan panduan ini, Anda memerlukan uji instrumentasi (yang ditulis oleh Anda atau tim Anda) yang menggunakan framework pengujian Android Espresso atau UI Automator 2.0. Uji instrumentasi dapat berlangsung hingga 45 menit di perangkat fisik dan hingga 60 menit di perangkat virtual.

Pada langkah selanjutnya, Anda akan dipandu untuk mengupload APK aplikasi dan APK pengujian ke Firebase.

(Opsional) Menambahkan library screenshot ke aplikasi

Firebase Test Lab menyertakan library (testlab-instr-lib) yang dapat digunakan untuk memproses screenshot yang diambil dengan ScreenCapture AndroidX saat menjalankan uji instrumentasi, misalnya pengujian yang ditulis menggunakan framework pengujian Espresso. Bagian ini menjelaskan cara membuat objek ScreenCapture dengan library AndroidX dan cara memprosesnya menggunakan testlab-instr-lib.

Setelah uji instrumentasi berjalan, Anda dapat melihat screenshot yang diambil di Firebase console.

Mencoba aplikasi contoh

Download aplikasi contoh NotePad untuk mencoba fungsi ini. Kemampuan untuk mengambil screenshot sudah disertakan dalam project NotePad.

Langkah 1. Tambahkan library screenshot ke project Anda

  1. Di file Gradle level root (level project) project pengujian (build.gradle), tambahkan repositori Maven Google ke setiap bagian repositori:

    buildscript {
    
      repositories {
        // Add the following line:
        google()  // Google's Maven repository
      }
    
      dependencies {
        // ...
    
        // Check that you have the following line (if not, add it):
        classpath 'com.google.gms:google-services:4.3.8'  // Google Services plugin
      }
    }
    
    allprojects {
      // ...
    
      repositories {
        // Add the following line:
        google()  // Google's Maven repository
        // ...
      }
    }
  2. Di file Gradle modul (level aplikasi) Anda (biasanya app/build.gradle), tambahkan dependensi untuk library screenshot Test Lab.

    dependencies {
      // ...
      // Add Test Lab's instrumentation test screenshot library:
      androidTestCompile `com.google.firebase:testlab-instr-lib:02`
      // ...
    }
  3. Di file AndroidManifest.xml pengujian, daftarkan FirebaseScreenCaptureProcessor pada tag meta-data dalam elemen <instrumentation>. Anda juga dapat menentukan pemroses sebagai argumen di AndroidJUnitRunner (lihat dokumentasi referensi AndroidJUnitRunner untuk mendapatkan petunjuk cara melakukannya).

    <instrumentation
      // Check that you have the following line (if not, add it):
      android:name="androidx.test.runner.AndroidJUnitRunner" // Specifies AndroidJUnitRunner as the test runner
      android:targetPackage="com.your.package.name">
    
    // Add the following:
    <meta-data
      android:name="screenCaptureProcessors"
      android:value="com.google.firebase.testlab.screenshot.FirebaseScreenCaptureProcessor" />
    </instrumentation>
    ...
    
  4. Di file AndroidManifest.xml pada aplikasi Anda, tambahkan baris berikut dalam elemen <manifest>:

     <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
    
  5. Di file AndroidManifest.xml, tentukan izin sistem untuk aplikasi Anda dengan menambahkan baris berikut ke dalam tag <manifest>. Jika Anda melakukan pengujian di Android 10 (API level 29) atau versi yang lebih baru, hapus izin WRITE_EXTERNAL_STORAGE (aplikasi Anda tidak memerlukan izin ini untuk dapat membaca dan menulis screenshot ke perangkat).

    <manifest ... >
        <!-- WRITE_EXTERNAL_STORAGE is not needed on Android 10 (API level 29) or higher. -->
        <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
        <uses-permission android:name="android.permission.INTERNET"/>
        ...
    </manifest>

Langkah 2. Ambil screenshot selama pengujian

Jika sewaktu-waktu Anda ingin mengambil screenshot selama pengujian, panggil metode Screenshot.capture() dari library AndroidX. Tindakan ini akan menghasilkan objek ScreenCapture. Saat Anda memanggil process() pada objek ScreenCapture, objek tersebut akan diproses menggunakan ScreenCaptureProcessor yang terdaftar di AndroidManifest.xml Anda. Perhatikan bahwa BasicScreenCaptureProcessor digunakan jika tidak ada pemroses yang terdaftar. Karena Anda mendaftarkan FirebaseScreenCaptureProcessor, screenshot akan diproses melalui FirebaseScreenCaptureProcessor dan akan tersedia untuk Anda saat menjalankan pengujian dengan Firebase Test Lab.

Contoh kasus penggunaan untuk membuat ScreenCapture:

  • Ambil ScreenCapture penuh di API Build.VERSION_CODES.JELLY_BEAN_MR2 dan yang lebih baru:

    Screenshot.capture()
    
  • Ambil ScreenCapture dari Aktivitas pada API level mana pun. Perhatikan bahwa langkah ini adalah satu-satunya opsi untuk perangkat dengan versi yang lebih lama dari Build.VERSION_CODES.JELLY_BEAN_MR2.

    @Rule
      public ActivityTestRule<MainActivity> activityRule = new ActivityTestRule<>(MainActivity.class);
    ...
    Screenshot.capture(activityRule.getActivity());
    ...
    

Contoh kasus penggunaan untuk memproses ScreenCapture

  • Proses ScreenCapture melalui FirebaseScreenCaptureProcessor:

    Screenshot.capture().process();
    
  • Proses ScreenCapture melalui ScreenCaptureProcessor yang ditentukan (tindakan ini memungkinkan Anda melewatkan proses pendaftaran pemroses):

    Set<ScreenCaptureProcessor> processors = new HashSet<>();
    processors.add(new FirebaseScreenCaptureProcessor());
    Screenshot.capture().process(processors);
    
  • Tetapkan nama dan format ScreenCapture, lalu proses menggunakan pemroses yang terdaftar:

    Screenshot.capture().setName("myscreenshot").setFormat(CompressFormat.JPEG).process();
    

Langkah 3. Build dan jalankan pengujian Anda

  1. Build APK aplikasi dan APK pengujian (lihat Menguji aplikasi Anda untuk mendapatkan petunjuknya).

  2. Upload file APK ke dasbor Test Lab di Firebase console.

  3. Terakhir, jalankan pengujian Anda.

Langkah 4. Lihat screenshot pengujian Anda

Setelah pengujian selesai, Anda dapat melihat screenshot apa pun yang diambil di Firebase console.

  1. Di tab Pengujian, pilih pengujian yang telah selesai, lalu klik tab Hasil.

  2. Pilih pengujian Anda lagi, lalu klik tab Screenshot yang muncul.

(Opsional) Mengaktifkan fitur pengujian tambahan

Anda dapat mengaktifkan fitur berikut dalam pengujian sebelum menjalankannya dengan Test Lab:

Mengaktifkan Orchestrator

Android Test Orchestrator adalah alat yang dapat digunakan untuk menjalankan setiap uji instrumentasi aplikasi secara terpisah. Test Lab selalu menjalankan Orchestrator versi terbaru.

Untuk mengaktifkan Orchestrator di Test Lab, dalam penyiapan uji instrumentasi, klik Opsi tambahan > Jalankan dengan Orchestrator.

Kelebihan dan kekurangan

  • Kelebihan: Tidak ada status bersama. Setiap pengujian berjalan dalam instance instrumentasinya sendiri, sehingga status bersama tidak terakumulasi lintas pengujian.
  • Kelebihan: Error yang terisolasi. Jika ada pengujian yang mengalami error, hanya instrumentasi tersebut yang akan dihentikan, sementara pengujian lainnya di suite Anda dapat tetap berjalan.
  • Kekurangan: Runtime yang lebih lama. Setiap pengujian menjalankan instance instrumentasinya sendiri. Artinya, proses pengujian memakan waktu sedikit lebih lama secara keseluruhan. Jika tidak dikendalikan, runtime yang lebih lama dapat berdampak pada penggunaan kuota atau waktu yang ditagih, serta dapat menyebabkan perangkat mencapai batas waktu habis.

Mengaktifkan sharding

Sharding pengujian membagi satu set pengujian menjadi sejumlah subgrup (shard) yang masing-masing berjalan secara terpisah. Test Lab otomatis menjalankan setiap shard secara bersamaan menggunakan beberapa perangkat dan menyelesaikan keseluruhan set pengujian tersebut dalam waktu yang lebih singkat.

Cara kerja sharding pengujian

Misalkan Anda membuat N shard. Untuk setiap perangkat yang Anda pilih, Test Lab memutar N perangkat yang identik dan menjalankan subset pengujian di setiap perangkat. Artinya, kasus uji dengan sharding dapat menghasilkan beberapa eksekusi uji per perangkat. Ini berbeda dari kasus uji coba tanpa sharding yang selalu menghasilkan satu eksekusi uji per perangkat (untuk ringkasan singkat tentang konsep utama dalam Test Lab, baca artikel tentang Konsep utama).

Anda dapat mengaktifkan sharding pengujian di Firebase console:

  1. Di penyiapan uji instrumentasi, klik Opsi tambahan.

  2. Di bagian Sharding, masukkan jumlah shard yang ingin Anda jalankan.

Penagihan untuk shard pengujian

Test Lab mengimplementasikan shard Anda dengan memanfaatkan mekanisme sharding bawaan AndroidJUnitRunner. Agar tidak dikenai biaya saat memutar shard kosong (shard tanpa kasus uji yang ditetapkan), jumlah shard yang Anda buat harus kurang dari jumlah total kasus uji. Secara umum, tetapkan 2-10 kasus uji per shard, tergantung durasi penyelesaian setiap kasus uji.

Untuk mengetahui informasi selengkapnya tentang penagihan, baca Penggunaan, kuota, dan penagihan.