Ikuti semua informasi yang diumumkan di Firebase Summit, dan pelajari bagaimana Firebase dapat membantu Anda mempercepat pengembangan aplikasi dan menjalankan aplikasi dengan percaya diri. Pelajari Lebih Lanjut

Mulailah dengan tes instrumentasi

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

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

(Opsional) Tambahkan pustaka tangkapan layar ke aplikasi Anda

Firebase Test Lab menyertakan library (testlab-instr-lib) yang dapat Anda gunakan untuk memproses screenshot apa pun yang Anda ambil dengan ScreenCapture AndroidX saat menjalankan pengujian instrumentasi, seperti 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 tangkapan layar yang diambil di konsol Firebase.

Cobalah contoh aplikasi

Unduh aplikasi contoh NotePad untuk mencoba fungsi ini. Kemampuan untuk mengambil tangkapan layar sudah dimasukkan ke dalam proyek NotePad.

Langkah 1. Tambahkan pustaka tangkapan layar ke proyek Anda

  1. Dalam file Gradle tingkat akar (tingkat proyek) proyek pengujian Anda ( 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. Dalam 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:
      androidTestImplementation 'com.google.firebase:testlab-instr-lib:0.2'
      // ...
    }
  3. Dalam file AndroidManifest.xml pengujian Anda, daftarkan FirebaseScreenCaptureProcessor dalam tag meta-data dalam elemen <instrumentation> . Anda juga dapat menentukan prosesor sebagai argumen di AndroidJUnitRunner (lihat dokumentasi referensi AndroidJUnitRunner untuk petunjuk tentang caranya).

    <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 aplikasi Anda, tambahkan baris berikut dalam elemen <manifest> :

     <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
    
  5. Di file AndroidManifest.xml Anda, tentukan izin sistem untuk aplikasi Anda dengan menambahkan baris berikut dalam tag <manifest> . Jika Anda menguji di Android 10 (API level 29) atau lebih tinggi , hilangkan izin WRITE_EXTERNAL_STORAGE (aplikasi Anda tidak memerlukan izin ini untuk membaca dan menulis tangkapan layar 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 tangkapan layar selama pengujian Anda

Kapan pun dalam pengujian saat Anda ingin mengambil screenshot, panggil metode Screenshot.capture() dari library AndroidX. Ini menghasilkan objek ScreenCapture . Saat Anda memanggil process() pada objek ScreenCapture , proses tersebut akan diproses menggunakan ScreenCaptureProcessor yang terdaftar di AndroidManifest.xml Anda. Perhatikan bahwa BasicScreenCaptureProcessor digunakan jika tidak ada prosesor yang terdaftar. Karena Anda mendaftarkan FirebaseScreenCaptureProcessor , tangkapan layar Anda akan diproses melalui FirebaseScreenCaptureProcessor dan akan tersedia untuk Anda beserta hasilnya saat Anda menjalankan pengujian dengan Firebase Test Lab.

Contoh kasus penggunaan untuk membuat ScreenCapture :

  • Ambil ScreenCapture lengkap pada API Build.VERSION_CODES.JELLY_BEAN_MR2 dan yang lebih baru:

    Screenshot.capture()
    
  • Ambil ScreenCapture Aktivitas di level API apa pun. Perhatikan bahwa ini adalah satu-satunya opsi untuk perangkat yang berada di bawah 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

  • Memproses ScreenCapture melalui FirebaseScreenCaptureProcessor :

    Screenshot.capture().process();
    
  • Memproses ScreenCapture melalui ScreenCaptureProcessor yang ditentukan (ini memungkinkan Anda melewatkan pendaftaran prosesor):

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

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

Langkah 3. Buat dan jalankan pengujian Anda

  1. Bangun aplikasi Anda dan uji APK (lihat Menguji aplikasi Anda untuk mendapatkan petunjuk).

  2. Unggah file APK ke dasbor Test Lab di konsol Firebase.

  3. Terakhir, jalankan pengujian Anda.

Langkah 4. Lihat tangkapan layar pengujian Anda

Setelah pengujian Anda selesai, Anda dapat melihat tangkapan layar apa pun yang diambil di konsol Firebase.

  1. Di tab Tes , pilih tes yang sudah selesai, lalu klik tab Hasil .

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

(Opsional) Aktifkan fitur pengujian tambahan

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

Aktifkan Orkestra

Android Test Orchestrator adalah fitur yang menjalankan setiap pengujian instrumentasi aplikasi Anda secara independen. Test Lab selalu menggunakan Orchestrator versi terbaru.

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

Keuntungan dan kerugian

  • Manfaat: Tidak ada status bersama. Setiap pengujian berjalan dalam instance instrumentasinya sendiri sehingga status bersama tidak terakumulasi di seluruh pengujian.
  • Manfaat: Crash yang terisolasi. Jika pengujian mogok, hanya instrumentasi tersebut yang dihentikan dan pengujian lain di suite Anda masih dapat berjalan.
  • Kelemahan: Waktu proses yang lebih lama . Setiap pengujian menjalankan instance instrumentasinya sendiri, yang berarti bahwa proses pengujian secara keseluruhan memerlukan waktu sedikit lebih lama. Jika tidak dicentang, peningkatan waktu pengoperasian berpotensi memengaruhi penggunaan kuota atau waktu yang ditagih dan dapat menyebabkan Anda mencapai batas waktu habis perangkat .

Aktifkan sharding

Pecahan pengujian membagi serangkaian pengujian menjadi subgrup (pecahan) yang dijalankan secara terpisah secara terpisah. Test Lab secara otomatis menjalankan setiap shard secara paralel menggunakan beberapa perangkat dan menyelesaikan seluruh rangkaian pengujian dalam waktu yang lebih singkat.

Cara kerja tes sharding

Katakanlah Anda membuat N pecahan. Untuk setiap perangkat yang Anda pilih, Test Lab memutar N perangkat identik dan menjalankan subkumpulan pengujian di setiap perangkat. Artinya, kasus pengujian yang di-shard dapat menghasilkan beberapa eksekusi pengujian per perangkat, tidak seperti kasus pengujian yang tidak di-shard, yang selalu menghasilkan satu eksekusi pengujian per perangkat (untuk ikhtisar singkat tentang konsep utama di Test Lab, lihat Konsep utama ).

Anda dapat mengaktifkan sharding pengujian di konsol Firebase:

  1. Di penyiapan pengujian instrumentasi, klik Opsi tambahan .

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

Penagihan untuk shard pengujian

Test Lab mengimplementasikan shard Anda dengan memanfaatkan mekanisme sharding bawaan AndroidJUnitRunner. Agar tidak dikenakan biaya untuk memutar pecahan kosong (pecahan tanpa kasus uji yang ditetapkan), jumlah pecahan yang Anda buat harus lebih kecil dari jumlah total kasus uji. Bergantung pada berapa lama waktu yang diperlukan untuk menjalankan setiap kasus uji, biasanya ada baiknya menetapkan 2-10 kasus uji per shard.

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