Prueba la copia de seguridad

  
Es un framework de pruebas automatizadas para verificar que los datos del usuario y las credenciales de la cuenta sobrevivan de forma segura a las actualizaciones del dispositivo y las restauraciones en la nube.
Actualización más reciente Versión estable Versión potencial Versión beta Versión alfa
21 de octubre de 2026 - - - 1.0.0-alpha03

Cómo declarar dependencias

Para agregar una dependencia en test backup, debes agregar el repositorio de Maven de Google a tu proyecto. Consulta el repositorio de Maven de Google para obtener más información.

Agrega las dependencias de los artefactos que necesites en el archivo build.gradle de tu app o módulo:

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

Para obtener más información sobre las dependencias, consulta Cómo agregar dependencias de compilación.

Comentarios

Tus comentarios ayudan a mejorar Jetpack. Avísanos si descubres nuevos errores o tienes ideas para mejorar esta biblioteca. Consulta los errores existentes de esta biblioteca antes de crear uno nuevo. Puedes agregar tu voto a un error existente haciendo clic en el botón de la estrella.

Crear un error nuevo

Consulta la documentación sobre la herramienta Issue Tracker para obtener más información.

Automated Backup Restore Test versión 1.0

Versión 1.0.0-alpha03

21 de octubre de 2026

Lanzamiento de androidx.test.backup:backup:1.0.0-alpha03 y androidx.test.backup:backup-host:1.0.0-alpha03. La versión 1.0.0-alpha03 contiene estas confirmaciones.

Nuevas funciones

  • Se simplificó la configuración de pruebas en los paquetes de pruebas de copia de seguridad del complemento de Android para Gradle, ya que se orienta automáticamente a la app probada cuando se omite @BackupRestoreConfig. (I1452b)
  • Se agregó compatibilidad para heredar la configuración de @BackupRestoreConfig y @Isolation de una clase de prueba externa en las clases de prueba de @Nested. (Ia45a8)
  • Se agregó compatibilidad para insertar BackupRestoreController directamente en los constructores de clases de prueba y los métodos de configuración de @BeforeAll. (I6e822, Ia2ebd)
  • Se agregó compatibilidad para fijar un dispositivo específico a un rol de @Device en pruebas multidispositivo con la propiedad androidx.test.backup.device.serial.{role}. (I484be)

Correcciones de errores

  • Se corrigieron performBackup y performRestore para que las pruebas fallen de inmediato en lugar de pasar de forma silenciosa cuando se omite una copia de seguridad o está vacía, cuando el servicio de copia de seguridad genera un error o cuando un archivo de copia de seguridad local pertenece a una app o un dispositivo diferentes. (I7673d, I478ad, I0b989, I9a0ea, I79567)
  • Se corrigió un problema por el que las pruebas se detenían de forma indefinida en dispositivos que no respondían. Para ello, se aplicaron tiempos de espera en los pasos de copia de seguridad, restablecimiento, acciones del dispositivo y limpieza. (I10661, I9cdee, If5f92)
  • Se corrigió un error por el que performBackup borraba los archivos de copia de seguridad generados cuando finalizaba la ejecución de la prueba, por lo que ahora los archivos de copia de seguridad se conservan en el disco después de que finalizan las pruebas. (I8c13f)
  • Se corrigieron los asistentes de prueba de la base de datos (StorageDomain.Database) para almacenar y verificar correctamente los valores null, reemplazar las filas existentes cuando se propagan los datos de prueba, detectar configuraciones de tablas no válidas con anticipación y fallar cuando falta un archivo de base de datos esperado. (Ib4767, Iddf87, I19c43, Ie8d78, I8bc18)
  • Se corrigieron los asistentes de prueba de SharedPreferences para conservar los tipos de datos con precisión y admitir la verificación de preferencias null o quitadas. (I8456d9, I1d0fc2)
  • Se corrigió runOnDevice para controlar cargas útiles de prueba grandes sin fallas, pausar el depurador cuando se habilita waitForDebugger, encontrar el ejecutor de pruebas en nombres de paquetes de APK de prueba personalizados y evitar que las marcas internas del ejecutor se filtren en las acciones del dispositivo. (Ic73bd, Iede17, I1d172, I84c15)
  • Se mejoró la estabilidad y la velocidad de las pruebas, ya que se comparte una sola conexión de ADB en toda la ejecución de la prueba, se instalan los APK solo una vez por dispositivo y se muestra un mensaje claro cuando un APK no se puede instalar o iniciar. (I62717, Iabf75, I14e6f, I4c3da5, I54077, Iee84e)
  • Se corrigió el problema por el que fetchDeviceLogs escribía archivos de registro vacíos y se detuvieron las ejecuciones de pruebas canceladas para que no generaran informes de fallas falsos. (I736c4, I7b199, Ia847e)
  • Se limpiaron las dependencias de backup-host para que adblib esté disponible directamente para los emisores y las bibliotecas de registro o prueba internas ya no entren en conflicto con la ruta de clase de tu proyecto. (I6e822, Iba9a4, Ib4ec9)

Versión 1.0.0-alpha02

7 de octubre de 2026

Lanzamiento de androidx.test.backup:backup:1.0.0-alpha02 y androidx.test.backup:backup-host:1.0.0-alpha02. La versión 1.0.0-alpha02 incluye estas confirmaciones.

Cambios en la API

  • Las claves de carga útil ahora se documentan como BackupActionInputKeys, BackupActionOutputKeys y BackupActionValues, lo que reemplaza las constantes en BackupDeviceAction. Se agregaron las fábricas BackupDeviceActionResult.success() y failure(), junto con los descriptores de acceso isSuccess y errorMessage. (Ibd493).

Correcciones de errores

  • BackupRestoreController.clearAppData ahora arroja IOException cuando pm clear no informa un resultado correcto, en lugar de continuar de forma silenciosa. (I61556).
  • Los argumentos de shell que se pasan a BackupRestoreController para la ejecución del dispositivo ahora se escapan correctamente para evitar la inserción de comandos y garantizar que las rutas de acceso de archivos con espacios se manejen de forma segura.
  • Se reforzaron las acciones de almacenamiento agrupadas (PopulateStorageAction y AssertStorageAction) contra los pases de verificación silenciosos para garantizar que las pruebas fallen estrictamente cuando falten los datos esperados.
  • Los organizadores de pruebas del host ahora respetan correctamente las fallas de acción en banda que informa el dispositivo en lugar de ignorarlas.
  • Se corrigió un problema con la propagación de filas de la base de datos mediante la codificación por porcentaje del formato de conexión 'values' de la base de datos, lo que evita que se dañen los datos durante el transporte de la carga útil.
  • Se corrigieron las vulnerabilidades de seguridad en androidx.test.backup:backup-host actualizando las dependencias.

Versión 1.0.0-alpha01

23 de septiembre de 2026

Lanzamiento de androidx.test.backup:backup:1.0.0-alpha01 y androidx.test.backup:backup-host:1.0.0-alpha01. La versión 1.0.0-alpha01 contiene estas confirmaciones.

Funciones de la versión inicial

Versión inicial del framework de pruebas de copia de seguridad y restablecimiento automatizados para Android. Esta biblioteca proporciona una forma automatizada y de extremo a extremo para probar que los datos del usuario y las credenciales de la cuenta sobrevivan de forma segura a las actualizaciones del dispositivo y las restauraciones en la nube. En lugar de depender de las pruebas manuales, los desarrolladores pueden automatizar todo el ciclo de vida: propagar el estado de la app, crear una copia de seguridad según las reglas configuradas (dataExtractionRules y fullBackupContent), borrar la app y verificar la integridad de los datos después del restablecimiento. El framework proporciona dos artefactos: androidx.test.backup:backup-host (que se ejecuta en la computadora host para organizar los pases de copia de seguridad, limpieza y restablecimiento en ADB) y androidx.test.backup:backup (que se ejecuta en el dispositivo para propagar y verificar los datos de la app).

  • BackupRestoreController: Es la interfaz principal del host que se usa para controlar los flujos de trabajo de copia de seguridad, limpieza, restablecimiento y verificación de un dispositivo de prueba. Proporciona canalizaciones de conveniencia, como runBackupRestoreFlow, así como operaciones detalladas (performBackup, performRestore, clearAppData, fetchDeviceLogs y runOnDevice). Admite corrutinas de Kotlin y ejecución asíncrona de Java ListenableFuture.
  • BackupRestoreExtension: Es una extensión de JUnit 5 Jupiter que resuelve y, luego, inserta parámetros BackupRestoreController en los métodos de prueba. Administra sesiones de ADB independientes o compartidas, instala automáticamente APKs probados y de prueba, descarta las pantallas de bloqueo y los bloqueos de teclas de los dispositivos para desbloquear el almacenamiento protegido con credenciales y aplica el aislamiento de la zona de pruebas.
  • BackupRestoreTestRunner: Es un ejecutor de pruebas de Instrumentation integrado en el dispositivo que se ejecuta dentro de la zona de pruebas de la aplicación. Resuelve y ejecuta de forma dinámica las implementaciones de BackupDeviceAction solicitadas que envían los organizadores del host y redirecciona de forma segura las cargas útiles de resultados JSON grandes al disco para evitar los límites del búfer de transacciones de Binder.
  • BackupDeviceAction: Es el contrato para las acciones personalizadas del dispositivo que se ejecutan directamente en la zona de pruebas de la aplicación de destino durante la propagación de datos (PHASE_POPULATE) o la validación posterior al restablecimiento (PHASE_VERIFY).
  • StorageDomain: Descriptores con tipos de datos estrictos (Preference, Database, TextFile y BinaryFile) que se usan junto con asistentes de acciones precompilados (PopulateStorageAction y AssertStorageAction) para propagar y confirmar automáticamente SharedPreferences, bases de datos SQLite y archivos sin procesar en contextos de almacenamiento protegidos por credenciales (CE) y protegidos por dispositivos (DE) sin código estándar.
  • BackupTransportMode: Especifica la topología de transporte de copias de seguridad de la plataforma que se simulará durante las pruebas, incluidas DEVICE_TO_DEVICE (migración de dispositivos físicos a través de USB o Wi-Fi Direct), CLOUD_ENCRYPTED (copia de seguridad en la nube con encriptación de extremo a extremo del cliente), CLOUD_UNENCRYPTED (copia de seguridad en la nube estándar) y LOCAL (copia de seguridad del sistema de archivos local sin conexión).
  • @Device y @Isolation: Son anotaciones de host para seleccionar dispositivos conectados que coincidan con números de serie, niveles de API o roles multidispositivo específicos, y configurar políticas de aislamiento de la zona de pruebas entre las ejecuciones de pruebas (IsolationPolicy.AUTOMATIC frente a IsolationPolicy.MANUAL).