Menguji Pencadangan

  
Framework pengujian otomatis untuk memverifikasi bahwa data pengguna dan kredensial akun tetap aman setelah upgrade perangkat dan pemulihan cloud.
Update Terbaru Rilis Stabil Kandidat Rilis Rilis Beta Rilis Alfa
21 Oktober 2022 - - - 1.0.0-alpha03

Mendeklarasikan dependensi

Untuk menambahkan dependensi pada pencadangan pengujian, Anda harus menambahkan repositori Maven Google ke project Anda. Baca repositori Maven Google untuk mengetahui informasi selengkapnya.

Tambahkan dependensi untuk artefak yang diperlukan dalam file build.gradle bagi aplikasi atau modul Anda:

Groovy

dependencies {
    implementation "androidx.test.backup:backup:1.0.0-alpha03"
    implementation "androidx.test.backup:backup-host:1.0.0-alpha03"
}

Kotlin

dependencies {
    implementation("androidx.test.backup:backup:1.0.0-alpha03")
    implementation("androidx.test.backup:backup-host:1.0.0-alpha03")
}

Untuk informasi dependensi selengkapnya, lihat Menambahkan dependensi build.

Masukan

Masukan Anda membantu meningkatkan kualitas Jetpack. Beri tahu kami jika Anda menemukan masalah baru atau mempunyai masukan untuk meningkatkan kualitas library ini. Harap periksa masalah yang sudah diketahui dalam library ini sebelum membuat laporan baru. Anda dapat memberikan suara untuk masalah yang sudah diketahui dengan mengklik tombol bintang.

Laporkan masalah baru

Lihat dokumentasi Issue Tracker untuk informasi selengkapnya.

Pengujian Pemulihan Cadangan Otomatis Versi 1.0

Versi 1.0.0-alpha03

21 Oktober 2022

androidx.test.backup:backup:1.0.0-alpha03 dan androidx.test.backup:backup-host:1.0.0-alpha03 dirilis. Versi 1.0.0-alpha03 berisi commit ini.

Fitur Baru

  • Penyiapan pengujian yang disederhanakan di suite pengujian cadangan Plugin Android Gradle dengan otomatis menargetkan aplikasi yang diuji saat @BackupRestoreConfig dihilangkan. (I1452b)
  • Menambahkan dukungan untuk mewarisi setelan @BackupRestoreConfig dan @Isolation dari class pengujian luar di class pengujian @Nested. (Ia45a8)
  • Menambahkan dukungan untuk memasukkan BackupRestoreController langsung ke konstruktor class pengujian dan metode penyiapan @BeforeAll. (I6e822, Ia2ebd)
  • Menambahkan dukungan untuk menyematkan perangkat tertentu ke peran @Device dalam pengujian multiperangkat menggunakan properti androidx.test.backup.device.serial.{role}. (I484be)

Perbaikan Bug

  • Memperbaiki performBackup dan performRestore sehingga pengujian langsung gagal, bukan lulus secara otomatis saat pencadangan dilewati atau kosong, saat layanan pencadangan mengalami error, atau saat arsip pencadangan lokal milik aplikasi atau perangkat lain. (I7673d, I478ad, I0b989, I9a0ea, I79567)
  • Memperbaiki pengujian yang berhenti tanpa batas waktu di perangkat yang tidak responsif dengan menerapkan waktu tunggu di seluruh langkah pencadangan, pemulihan, tindakan perangkat, dan pembersihan. (I10661, I9cdee, If5f92)
  • Memperbaiki performBackup yang menghapus file cadangan yang dihasilkan saat pengujian selesai, sehingga arsip cadangan kini disimpan di disk setelah pengujian selesai. (I8c13f)
  • Memperbaiki helper pengujian database (StorageDomain.Database) untuk menyimpan dan memeriksa nilai null dengan benar, menimpa baris yang ada saat melakukan seeding data pengujian, mendeteksi konfigurasi tabel yang tidak valid lebih awal, dan gagal saat file database yang diharapkan tidak ada. (Ib4767, Iddf87, I19c43, Ie8d78, I8bc18)
  • Memperbaiki helper pengujian SharedPreferences untuk mempertahankan jenis data secara akurat dan mendukung pemeriksaan preferensi yang dihapus atau null. (I8456d9, I1d0fc2)
  • Memperbaiki runOnDevice untuk menangani payload pengujian besar tanpa error, menjeda debugger saat waitForDebugger diaktifkan, menemukan runner pengujian dalam nama paket APK pengujian kustom, dan memblokir flag runner internal agar tidak bocor ke tindakan perangkat. (Ic73bd, Iede17, I1d172, I84c15)
  • Meningkatkan stabilitas dan kecepatan pengujian dengan membagikan satu koneksi ADB di seluruh pengujian, menginstal APK hanya sekali per perangkat, dan gagal dengan jelas saat APK gagal diinstal atau diluncurkan. (I62717, Iabf75, I14e6f, I4c3da5, I54077, Iee84e)
  • Memperbaiki fetchDeviceLogs yang menulis file log kosong, dan menghentikan uji coba yang dibatalkan agar tidak menghasilkan laporan kegagalan palsu. (I736c4, I7b199, Ia847e)
  • Membersihkan dependensi backup-host sehingga adblib tersedia langsung untuk pemanggil dan logging internal atau library pengujian tidak lagi bertabrakan dengan classpath project Anda. (I6e822, Iba9a4, Ib4ec9)

Versi 1.0.0-alpha02

7 Oktober 2026

androidx.test.backup:backup:1.0.0-alpha02 dan androidx.test.backup:backup-host:1.0.0-alpha02 dirilis. Versi 1.0.0-alpha02 berisi commit ini.

Perubahan API

  • Kunci payload kini didokumentasikan sebagai BackupActionInputKeys, BackupActionOutputKeys, dan BackupActionValues, menggantikan konstanta di BackupDeviceAction. Menambahkan factory BackupDeviceActionResult.success() dan failure(), beserta pengakses isSuccess dan errorMessage. (Ibd493)

Perbaikan Bug

  • BackupRestoreController.clearAppData kini menampilkan IOException saat pm clear tidak melaporkan keberhasilan, bukan melanjutkan secara otomatis. (I61556)
  • Argumen shell yang diteruskan ke BackupRestoreController untuk eksekusi perangkat kini di-escape dengan benar untuk mencegah injeksi perintah dan memastikan jalur file dengan spasi ditangani dengan aman.
  • Memperkuat tindakan penyimpanan yang dipaketkan (PopulateStorageAction dan AssertStorageAction) terhadap penerusan verifikasi otomatis untuk memastikan pengujian benar-benar gagal saat data yang diharapkan tidak ada.
  • Orchestrator pengujian sisi host kini mematuhi kegagalan tindakan in-band yang dilaporkan oleh perangkat dengan benar, bukan mengabaikannya.
  • Memperbaiki masalah pengisian baris database dengan mengenkode persen format kabel 'values' database, sehingga mencegah kerusakan data selama pengiriman payload.
  • Mengatasi kerentanan keamanan di androidx.test.backup:backup-host dengan mengupgrade dependensi.

Versi 1.0.0-alpha01

23 September 2026

androidx.test.backup:backup:1.0.0-alpha01 dan androidx.test.backup:backup-host:1.0.0-alpha01 dirilis. Versi 1.0.0-alpha01 berisi commit ini.

Fitur Rilis Awal

Rilis awal framework Automated Backup and Restore Testing untuk Android. Library ini menyediakan cara otomatis dan menyeluruh untuk menguji apakah data pengguna dan kredensial akun dapat bertahan dengan aman saat upgrade perangkat dan pemulihan cloud. Alih-alih mengandalkan pengujian manual, developer dapat mengotomatiskan siklus proses penuh: melakukan seeding status aplikasi, mencadangkannya sesuai dengan aturan yang dikonfigurasi (dataExtractionRules dan fullBackupContent), menghapus total aplikasi, dan memverifikasi integritas data pasca-pemulihan. Framework ini menyediakan dua artefak: androidx.test.backup:backup-host (yang berjalan di komputer host untuk mengatur pencadangan, penghapusan total, dan pemulihan yang diteruskan melalui ADB) dan androidx.test.backup:backup (yang berjalan di perangkat untuk mengisi dan memverifikasi data aplikasi).

  • BackupRestoreController: Antarmuka utama sisi host yang digunakan untuk mengontrol alur kerja pencadangan, penghapusan total, pemulihan, dan verifikasi untuk perangkat pengujian. Menyediakan pipeline praktis seperti runBackupRestoreFlow serta operasi yang mendetail (performBackup, performRestore, clearAppData, fetchDeviceLogs, dan runOnDevice). Mendukung coroutine Kotlin dan eksekusi asinkron ListenableFuture Java.
  • BackupRestoreExtension: Ekstensi JUnit 5 Jupiter yang me-resolve dan memasukkan parameter BackupRestoreController ke dalam metode pengujian. Mengelola sesi ADB mandiri atau bersama, otomatis menginstal APK yang diuji dan APK pengujian, menutup layar kunci dan pengaman tombol perangkat untuk membuka kunci penyimpanan yang dilindungi kredensial, serta menerapkan isolasi sandbox pengujian.
  • BackupRestoreTestRunner: Runner pengujian Instrumentation di perangkat yang dijalankan di dalam sandbox aplikasi. Menyelesaikan dan menjalankan implementasi BackupDeviceAction yang diminta secara dinamis yang dikirim oleh orchestrator host dan mengalihkan payload hasil JSON yang besar dengan aman ke disk untuk mencegah batas buffer transaksi Binder.
  • BackupDeviceAction: Kontrak untuk tindakan kustom di sisi perangkat yang dijalankan langsung dalam sandbox aplikasi target selama penyemaian data (PHASE_POPULATE) atau validasi pasca-pemulihan (PHASE_VERIFY).
  • StorageDomain: Deskriptor yang diketik dengan kuat (Preference, Database, TextFile, dan BinaryFile) yang digunakan bersama helper tindakan bawaan (PopulateStorageAction dan AssertStorageAction) untuk otomatis menyisipkan dan menegaskan SharedPreferences, database SQLite, dan file mentah di seluruh konteks penyimpanan Credential Protected (CE) dan Device Protected (DE) tanpa boilerplate.
  • BackupTransportMode: Menentukan topologi transpor pencadangan platform yang akan disimulasikan selama pengujian, termasuk DEVICE_TO_DEVICE (migrasi perangkat fisik melalui USB atau Wi-Fi Langsung), CLOUD_ENCRYPTED (pencadangan cloud dengan enkripsi end-to-end sisi klien), CLOUD_UNENCRYPTED (pencadangan cloud standar), dan LOCAL (pencadangan sistem file lokal offline).
  • @Device dan @Isolation: Menghosting anotasi untuk memilih perangkat terhubung yang cocok dengan serial, level API, atau peran multiperangkat tertentu, dan mengonfigurasi kebijakan isolasi sandbox di antara pengujian (IsolationPolicy.AUTOMATIC vs. IsolationPolicy.MANUAL).