Testar backup

  
Framework de teste automatizado para verificar se os dados do usuário e as credenciais da conta sobrevivem com segurança a upgrades de dispositivos e restaurações na nuvem.
Atualização mais recente Versão estável Versão candidata a lançamento Versão Beta Versão Alfa
21 de outubro de 2026 - - - 1.0.0-alpha03

Declarar dependências

Para adicionar uma dependência ao backup de teste, é preciso adicionar o repositório Maven do Google ao seu projeto. Leia Repositório Maven do Google para ver mais informações.

Adicione as dependências dos artefatos necessários ao arquivo build.gradle do seu app ou 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 mais informações sobre dependências, consulte Adicionar dependências de build.

Feedback

Seu feedback ajuda a melhorar o Jetpack. Avise se você descobrir novos problemas ou tiver ideias para melhorar esta biblioteca. Consulte os problemas conhecidos nesta biblioteca antes de criar um novo. Adicione seu voto a um problema clicando no botão de estrela.

Criar novo problema

Consulte a documentação do Issue Tracker para saber mais.

Versão 1.0 do teste de restauração de backup automatizado

Versão 1.0.0-alpha03

21 de outubro de 2026

Lançamento de androidx.test.backup:backup:1.0.0-alpha03 e androidx.test.backup:backup-host:1.0.0-alpha03. A versão 1.0.0-alpha03 contém estes commits.

Novos recursos

  • Configuração de teste simplificada em pacotes de teste de backup do Plug-in do Android para Gradle, que segmenta automaticamente o app testado quando @BackupRestoreConfig é omitido. (I1452b).
  • Adição de suporte para herdar as configurações de @BackupRestoreConfig e @Isolation de uma classe de teste externa em classes de teste @Nested. (Ia45a8).
  • Adicionamos suporte para injetar BackupRestoreController diretamente em construtores de classe de teste e métodos de configuração @BeforeAll. (I6e822, Ia2ebd).
  • Adicionamos suporte para fixar um dispositivo específico a uma função @Device em testes multidispositivo usando a propriedade androidx.test.backup.device.serial.{role}. (I484be).

Correções de bugs

  • Correção de performBackup e performRestore para que os testes falhem imediatamente em vez de serem aprovados silenciosamente quando um backup é ignorado ou está vazio, quando o serviço de backup apresenta um erro ou quando um arquivo de backup local pertence a um app ou dispositivo diferente. (I7673d, I478ad, I0b989, I9a0ea, I79567)
  • Correção de testes que travavam indefinidamente em dispositivos que não respondiam, aplicando tempos limite em etapas de backup, restauração, ações do dispositivo e limpeza. (I10661, I9cdee, If5f92).
  • Correção de um problema em que o performBackup excluía os arquivos de backup gerados quando a execução do teste terminava. Agora, os arquivos de backup são mantidos no disco após a saída dos testes. (I8c13f).
  • Os auxiliares de teste do banco de dados (StorageDomain.Database) foram corrigidos para armazenar e verificar corretamente os valores de null, substituir as linhas atuais ao propagar dados de teste, detectar configurações de tabela inválidas com antecedência e falhar quando um arquivo de banco de dados esperado estiver ausente. (Ib4767, Iddf87, I19c43, Ie8d78, I8bc18)
  • Correção dos auxiliares de teste SharedPreferences para preservar os tipos de dados com precisão e oferecer suporte à verificação de preferências null ou removidas. (I8456d9, I1d0fc2)
  • Correção de runOnDevice para processar payloads de teste grandes sem falhas, pausar o depurador quando waitForDebugger estiver ativado, encontrar o executor de teste em nomes de pacotes de APK de teste personalizados e impedir que flags internas do executor vazem para ações do dispositivo. (Ic73bd, Iede17, I1d172, I84c15).
  • Melhoria na estabilidade e na velocidade dos testes ao compartilhar uma única conexão ADB durante a execução do teste, instalar APKs apenas uma vez por dispositivo e falhar claramente quando um APK não é instalado ou iniciado. (I62717, Iabf75, I14e6f, I4c3da5, I54077, Iee84e)
  • Correção de fetchDeviceLogs que gravava arquivos de registro vazios e interrupção de execuções de teste canceladas que geravam relatórios de falha falsos. (I736c4, I7b199, Ia847e).
  • As dependências de backup-host foram limpas para que adblib fique disponível diretamente para os autores de chamadas, e as bibliotecas de teste ou de geração de registros internos não entrem mais em conflito com o caminho de classe do seu projeto. (I6e822, Iba9a4, Ib4ec9)

Versão 1.0.0-alpha02

7 de outubro de 2026

Lançamento de androidx.test.backup:backup:1.0.0-alpha02 e androidx.test.backup:backup-host:1.0.0-alpha02. A versão 1.0.0-alpha02 contém estes commits.

Mudanças na API

  • As chaves de payload agora estão documentadas como BackupActionInputKeys, BackupActionOutputKeys e BackupActionValues, substituindo as constantes em BackupDeviceAction. Adição de fábricas BackupDeviceActionResult.success() e failure(), além de acessadores isSuccess e errorMessage. (Ibd493).

Correções de bugs

  • BackupRestoreController.clearAppData agora gera IOException quando pm clear não informa sucesso, em vez de continuar silenciosamente. (I61556).
  • Os argumentos de shell transmitidos para BackupRestoreController para execução do dispositivo agora são escapados corretamente para evitar a injeção de comandos e garantir que os caminhos de arquivo com espaços sejam processados com segurança.
  • As ações de armazenamento em pacote (PopulateStorageAction e AssertStorageAction) foram reforçadas contra aprovações de verificação silenciosas para garantir que os testes falhem estritamente quando os dados esperados estiverem ausentes.
  • Os orquestradores de teste do lado do host agora respeitam corretamente as falhas de ação em banda informadas pelo dispositivo, em vez de ignorá-las.
  • Correção de um problema com o preenchimento de linhas do banco de dados ao codificar por porcentagem o formato de transmissão 'values' do banco de dados, evitando a corrupção de dados durante o transporte do payload.
  • As vulnerabilidades de segurança em androidx.test.backup:backup-host foram corrigidas com o upgrade das dependências.

Versão 1.0.0-alpha01

23 de setembro de 2026

Lançamento de androidx.test.backup:backup:1.0.0-alpha01 e androidx.test.backup:backup-host:1.0.0-alpha01. A versão 1.0.0-alpha01 inclui estes commits.

Recursos da versão inicial

Versão inicial do framework de teste de backup e restauração automatizados para Android. Essa biblioteca oferece uma maneira automatizada e completa de testar se os dados do usuário e as credenciais da conta sobrevivem com segurança a upgrades de dispositivos e restaurações na nuvem. Em vez de depender de testes manuais, os desenvolvedores podem automatizar todo o ciclo de vida: propagar o estado do app, fazer backup de acordo com as regras configuradas (dataExtractionRules e fullBackupContent), limpar o app e verificar a integridade de dados após a restauração. O framework oferece dois artefatos: androidx.test.backup:backup-host (que é executado no computador host para organizar as etapas de backup, exclusão permanente e restauração pelo ADB) e androidx.test.backup:backup (que é executado no dispositivo para preencher e verificar os dados do app).

  • BackupRestoreController: a interface principal do lado do host usada para controlar os fluxos de trabalho de backup, limpeza, restauração e verificação de um dispositivo de teste. Oferece pipelines de conveniência, como runBackupRestoreFlow, além de operações refinadas (performBackup, performRestore, clearAppData, fetchDeviceLogs e runOnDevice). Oferece suporte a corrotinas do Kotlin e à execução assíncrona do Java ListenableFuture.
  • BackupRestoreExtension: uma extensão do JUnit 5 Jupiter que resolve e injeta parâmetros BackupRestoreController em métodos de teste. Gerencia sessões do ADB independentes ou compartilhadas, instala automaticamente APKs testados e de teste, dispensa telas de bloqueio e proteções de teclado do dispositivo para desbloquear o armazenamento protegido por credenciais e aplica o isolamento do sandbox de teste.
  • BackupRestoreTestRunner: um executor de teste Instrumentation no dispositivo que é executado no sandbox do aplicativo. Resolve e executa dinamicamente as implementações de BackupDeviceAction solicitadas e enviadas por orquestradores de host e redireciona com segurança grandes payloads de resultados JSON para o disco para evitar limites de buffer de transação do Binder.
  • BackupDeviceAction: o contrato para ações personalizadas no dispositivo que são executadas diretamente no sandbox do aplicativo de destino durante a propagação de dados (PHASE_POPULATE) ou a validação pós-restauração (PHASE_VERIFY).
  • StorageDomain: descritores fortemente tipados (Preference, Database, TextFile e BinaryFile) usados com auxiliares de ação pré-criados (PopulateStorageAction e AssertStorageAction) para propagar e declarar automaticamente SharedPreferences, bancos de dados SQLite e arquivos brutos em contextos de armazenamento protegidos por credenciais (CE) e protegidos por dispositivo (DE) sem código boilerplate.
  • BackupTransportMode: especifica a topologia de transporte de backup da plataforma a ser simulada durante os testes, incluindo DEVICE_TO_DEVICE (migração de dispositivo físico por USB ou Wi-Fi Direct), CLOUD_ENCRYPTED (backup na nuvem com criptografia de ponta a ponta do lado do cliente), CLOUD_UNENCRYPTED (backup na nuvem padrão) e LOCAL (backup do sistema de arquivos local off-line).
  • @Device e @Isolation: anotações de host para selecionar dispositivos conectados que correspondam a números de série, níveis da API ou funções multidispositivo específicos e configurar políticas de isolamento de sandbox entre execuções de teste (IsolationPolicy.AUTOMATIC x IsolationPolicy.MANUAL).