Tester la sauvegarde

  
Framework de test automatisé permettant de vérifier que les données utilisateur et les identifiants de compte sont conservés en toute sécurité lors des mises à niveau de l'appareil et des restaurations cloud.
Dernière mise à jour Version stable Version finale Version bêta Version alpha
21 octobre 2026 - - - 1.0.0-alpha03

Déclarer des dépendances

Pour ajouter une dépendance sur test-backup, vous devez ajouter le dépôt Maven de Google à votre projet. Pour en savoir plus, consultez la section Dépôt Maven de Google.

Ajoutez les dépendances correspondant aux artefacts dont vous avez besoin dans le fichier build.gradle de votre application ou de votre module :

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")
}

Pour en savoir plus sur les dépendances, consultez Ajouter des dépendances de compilation.

Commentaires

Vos commentaires nous aident à améliorer Jetpack. N'hésitez pas à nous contacter si vous découvrez de nouveaux problèmes ou si vous avez des idées pour améliorer cette bibliothèque. Veuillez consulter les problèmes existants de cette bibliothèque avant d'en signaler un nouveau. Vous pouvez ajouter votre vote à un problème existant en cliquant sur le bouton en forme d'étoile.

Signaler un nouveau problème

Pour en savoir plus, consultez la documentation sur l'outil Issue Tracker.

Test de restauration de sauvegarde automatisée version 1.0

Version 1.0.0-alpha03

21 octobre 2026

Publication d'androidx.test.backup:backup:1.0.0-alpha03 et d'androidx.test.backup:backup-host:1.0.0-alpha03. Liste des commits de la version 1.0.0-alpha03

Nouvelles fonctionnalités

  • Configuration simplifiée des tests dans les suites de tests de sauvegarde du plug-in Android Gradle en ciblant automatiquement l'application testée lorsque @BackupRestoreConfig est omis. (I1452b)
  • Ajout de la prise en charge de l'héritage des paramètres @BackupRestoreConfig et @Isolation d'une classe de test externe dans les classes de test @Nested. (Ia45a8)
  • Ajout de la possibilité d'injecter BackupRestoreController directement dans les constructeurs de classe de test et les méthodes de configuration @BeforeAll. (I6e822, Ia2ebd)
  • Ajout de la possibilité d'épingler un appareil spécifique à un rôle @Device dans les tests multi-appareils à l'aide de la propriété androidx.test.backup.device.serial.{role}. (I484be)

Correction de bugs

  • Correction de performBackup et performRestore pour que les tests échouent immédiatement au lieu de réussir silencieusement lorsqu'une sauvegarde est ignorée ou vide, lorsque le service externe de sauvegarde renvoie une erreur ou lorsqu'une archive de sauvegarde locale appartient à une autre application ou à un autre appareil. (I7673d, I478ad, I0b989, I9a0ea, I79567)
  • Correction des tests qui se bloquent indéfiniment sur les appareils qui ne répondent pas en appliquant des délais avant expiration pour les étapes de sauvegarde, de restauration, d'actions sur l'appareil et de nettoyage. (I10661, I9cdee, If5f92)
  • Correction de la suppression par performBackup des fichiers de sauvegarde générés à la fin de l'exécution du test. Les archives de sauvegarde sont désormais conservées sur le disque après la fin des tests. (I8c13f)
  • Correction des assistants de test de base de données (StorageDomain.Database) pour stocker et vérifier correctement les valeurs null, écraser les lignes existantes lors de l'amorçage des données de test, détecter rapidement les configurations de table non valides et échouer lorsqu'un fichier de base de données attendu est manquant. (Ib4767, Iddf87, I19c43, Ie8d78, I8bc18)
  • Correction des outils d'aide aux tests SharedPreferences pour préserver précisément les types de données et permettre la vérification des préférences null ou supprimées. (I8456d9, I1d0fc2)
  • Correction de runOnDevice pour gérer les charges utiles de test volumineuses sans plantage, mise en pause du débogueur lorsque waitForDebugger est activé, recherche de l'exécuteur de test dans les noms de packages APK de test personnalisés et blocage des indicateurs d'exécuteur interne pour éviter qu'ils ne s'infiltrent dans les actions de l'appareil. (Ic73bd, Iede17, I1d172, I84c15)
  • Amélioration de la stabilité et de la vitesse des tests en partageant une seule connexion ADB pendant l'exécution du test, en n'installant les APK qu'une seule fois par appareil et en échouant clairement lorsqu'un APK ne s'installe pas ou ne se lance pas. (I62717, Iabf75, I14e6f, I4c3da5, I54077, Iee84e)
  • Correction de l'écriture de fichiers journaux vides par fetchDeviceLogs et arrêt de la génération de faux rapports d'échec par les exécutions de tests annulées. (I736c4, I7b199, Ia847e)
  • Nettoyage des dépendances backup-host pour que adblib soit disponible directement pour les appelants et que les bibliothèques de journalisation ou de test internes n'entrent plus en conflit avec le classpath de votre projet. (I6e822, Iba9a4, Ib4ec9)

Version 1.0.0-alpha02

7 octobre 2026

Publication d'androidx.test.backup:backup:1.0.0-alpha02 et d'androidx.test.backup:backup-host:1.0.0-alpha02. Liste des commits de la version 1.0.0-alpha02

Modifications apportées à l'API

  • Les clés de charge utile sont désormais documentées en tant que BackupActionInputKeys, BackupActionOutputKeys et BackupActionValues, en remplacement des constantes sur BackupDeviceAction. Ajout des fabriques BackupDeviceActionResult.success() et failure(), ainsi que des accesseurs isSuccess et errorMessage. (Ibd493)

Correction de bugs

  • BackupRestoreController.clearAppData génère désormais IOException lorsque pm clear ne signale pas de réussite, au lieu de continuer sans rien signaler. (I61556)
  • Les arguments shell transmis à BackupRestoreController pour l'exécution sur l'appareil sont désormais correctement échappés pour empêcher l'injection de commandes et garantir que les chemins d'accès aux fichiers contenant des espaces sont gérés de manière sécurisée.
  • Renforcement des actions de stockage groupées (PopulateStorageAction et AssertStorageAction) contre les passes de validation silencieuses pour s'assurer que les tests échouent strictement lorsque les données attendues sont manquantes.
  • Les orchestrateurs de test côté hôte respectent désormais correctement les échecs d'action intrabande signalés par l'appareil au lieu de les ignorer.
  • Correction d'un problème de remplissage des lignes de la base de données en encodant en pourcentage le format de transmission 'values' de la base de données, ce qui évite la corruption des données lors du transport de la charge utile.
  • Correction des failles de sécurité dans androidx.test.backup:backup-host en mettant à niveau les dépendances.

Version 1.0.0-alpha01

23 septembre 2026

Publication d'androidx.test.backup:backup:1.0.0-alpha01 et d'androidx.test.backup:backup-host:1.0.0-alpha01. Liste des commits de la version 1.0.0-alpha01

Fonctionnalités de la version initiale

Version initiale du framework de test de sauvegarde et de restauration automatiques pour Android. Cette bibliothèque fournit un moyen automatisé et de bout en bout de vérifier que les données utilisateur et les identifiants de compte sont conservés en toute sécurité lors des mises à niveau de l'appareil et des restaurations cloud. Au lieu de s'appuyer sur des tests manuels, les développeurs peuvent automatiser l'intégralité du cycle de vie : amorçage de l'état de l'application, sauvegarde selon les règles configurées (dataExtractionRules et fullBackupContent), effacement de l'application et vérification de l'intégrité des données après la restauration. Le framework fournit deux artefacts : androidx.test.backup:backup-host (qui s'exécute sur l'ordinateur hôte pour orchestrer les passes de sauvegarde, d'effacement et de restauration sur ADB) et androidx.test.backup:backup (qui s'exécute sur l'appareil pour renseigner et vérifier les données de l'application).

  • BackupRestoreController : interface principale côté hôte utilisée pour contrôler les workflows de sauvegarde, d'effacement, de restauration et de validation d'un appareil de test. Fournit des pipelines pratiques tels que runBackupRestoreFlow, ainsi que des opérations précises (performBackup, performRestore, clearAppData, fetchDeviceLogs et runOnDevice). Compatible avec les coroutines Kotlin et l'exécution asynchrone Java ListenableFuture.
  • BackupRestoreExtension : extension JUnit 5 Jupiter qui résout et injecte des paramètres BackupRestoreController dans les méthodes de test. Gère les sessions ADB autonomes ou partagées, installe automatiquement les APK testés et de test, ferme les écrans de verrouillage et les écrans de verrouillage par code des appareils pour déverrouiller l'espace de stockage protégé par des identifiants, et applique l'isolation du bac à sable de test.
  • BackupRestoreTestRunner : exécuteur de tests Instrumentation sur l'appareil s'exécutant dans le bac à sable de l'application. Résout et exécute de manière dynamique les implémentations BackupDeviceAction demandées et envoyées par les orchestrateurs hôtes, et redirige de manière sécurisée les charges utiles de résultats JSON volumineuses vers le disque pour éviter les limites de tampon de transaction Binder.
  • BackupDeviceAction : contrat pour les actions personnalisées côté appareil s'exécutant directement dans le bac à sable de l'application cible lors de l'amorçage des données (PHASE_POPULATE) ou de la validation post-restauration (PHASE_VERIFY).
  • StorageDomain : descripteurs fortement typés (Preference, Database, TextFile et BinaryFile) utilisés avec des assistants d'action prédéfinis (PopulateStorageAction et AssertStorageAction) pour amorcer et déclarer automatiquement des bases de données SharedPreferences, SQLite et des fichiers bruts dans les contextes de stockage Credential Protected (CE) et Device Protected (DE) sans code récurrent.
  • BackupTransportMode : spécifie la topologie de transport de sauvegarde de la plate-forme à simuler lors des tests, y compris DEVICE_TO_DEVICE (migration d'appareil physique via USB ou Wi-Fi Direct), CLOUD_ENCRYPTED (sauvegarde cloud avec chiffrement de bout en bout côté client), CLOUD_UNENCRYPTED (sauvegarde cloud standard) et LOCAL (sauvegarde du système de fichiers local hors connexion).
  • @Device et @Isolation : annotations d'hôte permettant de sélectionner les appareils connectés correspondant à des numéros de série, des niveaux d'API ou des rôles multi-appareils spécifiques, et de configurer des règles d'isolation de bac à sable entre les exécutions de test (IsolationPolicy.AUTOMATIC par rapport à IsolationPolicy.MANUAL).