Testowa kopia zapasowa

  
Zautomatyzowana platforma testowa do sprawdzania, czy dane użytkownika i dane logowania są bezpiecznie zachowywane podczas uaktualniania urządzenia i przywracania danych z chmury.
Najnowsza aktualizacja Wersja stabilna Wersja kandydująca do publikacji Wersja beta Wersja alfa
21 października 2026 r. - - - 1.0.0-alpha03

Deklarowanie zależności

Aby dodać zależność od testowej kopii zapasowej, musisz dodać do projektu repozytorium Maven Google. Więcej informacji znajdziesz w repozytorium Maven Google.

Dodaj zależności dla artefaktów, których potrzebujesz, w pliku build.gradle aplikacji lub modułu:

Odlotowe

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

Więcej informacji o zależnościach znajdziesz w artykule Dodawanie zależności kompilacji.

Prześlij opinię

Twoja opinia pomoże nam ulepszyć Jetpacka. Daj nam znać, jeśli odkryjesz nowe problemy lub masz pomysły na ulepszenie tej biblioteki. Przed utworzeniem nowego problemu zapoznaj się z dotychczasowymi problemami w tej bibliotece. Możesz dodać swój głos do istniejącego problemu, klikając przycisk gwiazdki.

Tworzenie nowego wydania

Więcej informacji znajdziesz w dokumentacji narzędzia Issue Tracker.

Automatyczny test przywracania kopii zapasowej w wersji 1.0

Wersja 1.0.0-alpha03

21 października 2026 r.

Publikacja androidx.test.backup:backup:1.0.0-alpha03 i androidx.test.backup:backup-host:1.0.0-alpha03 Wersja 1.0.0-alpha03 zawiera te zatwierdzenia.

Nowe funkcje

  • Uproszczona konfiguracja testów w zestawach testów kopii zapasowej wtyczki Androida do obsługi Gradle dzięki automatycznemu kierowaniu na testowaną aplikację, gdy pominięto @BackupRestoreConfig. (I1452b)
  • Dodaliśmy obsługę dziedziczenia ustawień @BackupRestoreConfig i @Isolation z zewnętrznej klasy testowej w klasach testowych @Nested. (Ia45a8)
  • Dodano obsługę wstrzykiwania BackupRestoreController bezpośrednio do konstruktorów klas testowych i metod konfiguracji @BeforeAll. (I6e822, Ia2ebd)
  • Dodano obsługę przypinania konkretnego urządzenia do roli @Device w testach na wielu urządzeniach za pomocą właściwości androidx.test.backup.device.serial.{role}. (I484be)

Poprawki błędów

  • Naprawiliśmy błędy performBackup i performRestore, dzięki czemu testy kończą się niepowodzeniem, zamiast przechodzić bez powiadomienia, gdy kopia zapasowa zostanie pominięta lub jest pusta, gdy usługa obsługująca kopie zapasowe zgłasza błąd lub gdy lokalne archiwum kopii zapasowej należy do innej aplikacji lub innego urządzenia. (I7673d, I478ad, I0b989, I9a0ea, I79567)
  • Rozwiązaliśmy problem z testami, które zawieszały się na urządzeniach, które nie reagowały, przez wymuszenie limitów czasu podczas tworzenia kopii zapasowej, przywracania, działań na urządzeniu i czyszczenia. (I10661, I9cdee, If5f92)
  • Naprawiliśmy błąd, który powodował, że performBackup usuwał wygenerowane pliki kopii zapasowej po zakończeniu testu. Teraz archiwa kopii zapasowych są przechowywane na dysku po zakończeniu testów. (I8c13f)
  • Naprawiliśmy funkcje pomocnicze testów bazy danych (StorageDomain.Database), aby prawidłowo przechowywały i sprawdzały wartości null, zastępowały istniejące wiersze podczas wypełniania danych testowych, wcześnie wykrywały nieprawidłowe konfiguracje tabel i zgłaszały błąd, gdy brakuje oczekiwanego pliku bazy danych. (Ib4767, Iddf87, I19c43, Ie8d78, I8bc18)
  • Naprawiliśmy funkcje pomocnicze testów SharedPreferences, aby dokładnie zachowywały typy danych i obsługiwały sprawdzanie null lub usuniętych preferencji. (I8456d9, I1d0fc2)
  • Naprawiono błąd runOnDevice, aby obsługiwać duże testowe ładunki bez awarii, wstrzymywać debuger, gdy włączona jest opcja waitForDebugger, znajdować moduł uruchamiający testy w niestandardowych nazwach pakietów APK testów i blokować wyciek wewnętrznych flag modułu uruchamiającego do działań na urządzeniu. (Ic73bd, Iede17, I1d172, I84c15)
  • Poprawiliśmy stabilność i szybkość testów dzięki udostępnianiu jednego połączenia ADB podczas testu, instalowaniu plików APK tylko raz na urządzenie i wyraźnemu informowaniu o błędzie, gdy nie uda się zainstalować lub uruchomić pliku APK. (I62717, Iabf75, I14e6f, I4c3da5, I54077, Iee84e)
  • Naprawiliśmy błąd, który powodował, że fetchDeviceLogs zapisywał puste pliki dziennika, i zatrzymaliśmy generowanie fałszywych raportów o błędach w przypadku anulowanych sesji testowych. (I736c4, I7b199, Ia847e)
  • Oczyszczono zależności backup-host, dzięki czemu adblib jest dostępny bezpośrednio dla obiektów wywołujących, a biblioteki wewnętrznego logowania lub testowania nie kolidują już ze ścieżką klasy projektu. (I6e822, Iba9a4, Ib4ec9)

Wersja 1.0.0-alpha02

7 października 2026 r.

Publikacja androidx.test.backup:backup:1.0.0-alpha02 i androidx.test.backup:backup-host:1.0.0-alpha02 Wersja 1.0.0-alpha02 zawiera te zmiany.

Zmiany w interfejsie API

  • Klucze ładunku są teraz dokumentowane jako BackupActionInputKeys, BackupActionOutputKeys i BackupActionValues, zastępując stałe w BackupDeviceAction. Dodano fabryki BackupDeviceActionResult.success() i failure() oraz metody dostępu isSuccess i errorMessage. (Ibd493)

Poprawki błędów

  • BackupRestoreController.clearAppData teraz zgłasza błąd IOException, gdy pm clear nie zgłasza powodzenia, zamiast kontynuować bez powiadomienia. (I61556)
  • Argumenty powłoki przekazywane do BackupRestoreController w celu wykonania na urządzeniu są teraz prawidłowo uciekane, aby zapobiec wstrzykiwaniu poleceń i zapewnić bezpieczną obsługę ścieżek plików ze spacjami.
  • Wzmocniliśmy działania związane z pamięcią masową (PopulateStorageAction i AssertStorageAction) przed cichymi testami weryfikacyjnymi, aby mieć pewność, że testy zakończą się niepowodzeniem, gdy brakuje oczekiwanych danych.
  • Orkiestratory testów po stronie hosta teraz prawidłowo uwzględniają błędy działań w paśmie zgłaszane przez urządzenie, zamiast je ignorować.
  • Rozwiązaliśmy problem z wypełnianiem wierszy bazy danych przez kodowanie procentowe formatu bazy danych 'values', co zapobiega uszkodzeniu danych podczas przesyłania ładunku.
  • Usunięto luki w zabezpieczeniach w androidx.test.backup:backup-host przez uaktualnienie zależności.

Wersja 1.0.0-alpha01

23 września 2026 r.

Publikacja androidx.test.backup:backup:1.0.0-alpha01 i androidx.test.backup:backup-host:1.0.0-alpha01 Wersja 1.0.0-alpha01 zawiera te zatwierdzenia.

Funkcje w pierwszej wersji

Pierwsza wersja platformy do testowania automatycznego tworzenia i przywracania kopii zapasowej na Androidzie. Ta biblioteka zapewnia automatyczny, kompleksowy sposób testowania, czy dane użytkownika i dane logowania są bezpiecznie zachowywane podczas uaktualniania urządzenia i przywracania danych z chmury. Zamiast polegać na testowaniu ręcznym, deweloperzy mogą zautomatyzować cały cykl życia: wypełnianie stanu aplikacji, tworzenie kopii zapasowej zgodnie ze skonfigurowanymi regułami (dataExtractionRules i fullBackupContent), czyszczenie aplikacji i weryfikowanie integralności danych po przywróceniu. Platforma udostępnia 2 artefakty: androidx.test.backup:backup-host (który działa na komputerze hosta i koordynuje tworzenie kopii zapasowej, czyszczenie i przywracanie danych przez ADB) oraz androidx.test.backup:backup (który działa na urządzeniu i wypełnia oraz weryfikuje dane aplikacji).

  • BackupRestoreController: główny interfejs po stronie hosta używany do kontrolowania przepływów pracy związanych z tworzeniem kopii zapasowych, czyszczeniem, przywracaniem i weryfikacją na urządzeniu testowym. Zapewnia wygodne potoki, takie jak runBackupRestoreFlow, oraz szczegółowe operacje (performBackup, performRestore, clearAppData, fetchDeviceLogs i runOnDevice). Obsługuje zarówno współprogramy Kotlin, jak i asynchroniczne wykonywanie kodu Java ListenableFuture.
  • BackupRestoreExtension: rozszerzenie JUnit 5 Jupiter, które rozpoznaje i wstrzykuje parametry BackupRestoreController do metod testowych. Zarządza samodzielnymi lub udostępnionymi sesjami ADB, automatycznie instaluje testowane i testowe pliki APK, odrzuca ekrany blokady i blokady klawiatury urządzenia, aby odblokować pamięć chronioną danymi logowania, oraz wymusza izolację piaskownicy testowej.
  • BackupRestoreTestRunner: narzędzie do uruchamiania testów Instrumentation na urządzeniu, które działa w piaskownicy aplikacji. Dynamicznie rozpoznaje i wykonuje żądane implementacje BackupDeviceAction wysyłane przez orkiestratory hosta oraz bezpiecznie przekierowuje duże ładunki wyników JSON na dysk, aby zapobiec przekroczeniu limitów bufora transakcji Binder.
  • BackupDeviceAction: umowa dotycząca niestandardowych działań po stronie urządzenia, które są wykonywane bezpośrednio w piaskownicy aplikacji docelowej podczas wypełniania danych (PHASE_POPULATE) lub weryfikacji po przywróceniu (PHASE_VERIFY).
  • StorageDomain: deskryptory o silnym typowaniu (Preference, Database, TextFile i BinaryFile) używane razem z gotowymi pomocnikami działań (PopulateStorageAction i AssertStorageAction) do automatycznego wypełniania i potwierdzania SharedPreferences, baz danych SQLite i nieprzetworzonych plików w kontekstach pamięci chronionej danymi logowania (CE) i chronionej przez urządzenie (DE) bez powtarzalnego kodu.
  • BackupTransportMode: określa topologię transportu kopii zapasowej platformy, która ma być symulowana podczas testów, w tym DEVICE_TO_DEVICE (migracja urządzenia fizycznego przez USB lub Wi-Fi Direct), CLOUD_ENCRYPTED (kopia zapasowa w chmurze z pełnym szyfrowaniem po stronie klienta), CLOUD_UNENCRYPTED (standardowa kopia zapasowa w chmurze) i LOCAL (kopia zapasowa lokalnego systemu plików offline).
  • @Device i @Isolation: adnotacje hosta do wybierania połączonych urządzeń pasujących do określonych numerów seryjnych, poziomów interfejsu API lub ról na wielu urządzeniach oraz do konfigurowania zasad izolacji piaskownicy między uruchomieniami testów (IsolationPolicy.AUTOMATIC i IsolationPolicy.MANUAL).