バックアップをテストする

  
ユーザーデータとアカウント認証情報がデバイスのアップグレードやクラウドの復元後も安全に保持されることを検証するための自動テスト フレームワーク。
最新の更新 安定版リリース リリース候補版 ベータ版リリース アルファ版リリース
2026 年 10 月 21 日 - - - 1.0.0-alpha03

依存関係の宣言

test backup への依存関係を追加するには、Google の Maven リポジトリをプロジェクトに追加する必要があります。詳しくは、Google の Maven リポジトリをご覧ください。

アプリまたはモジュールの build.gradle ファイルに、必要なアーティファクトの依存関係を追加します。

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

依存関係について詳しくは、ビルド依存関係の追加をご覧ください。

フィードバック

お寄せいただいたフィードバックは Jetpack 改善の参考にさせていただきます。新しい問題が見つかった場合や、このライブラリを改善するアイデアをお持ちの場合は、お知らせください。新しい問題を報告していただく前に、このライブラリの既存の問題をご確認ください。スターボタンをクリックすると、既存の問題に投票できます。

新しい問題を報告する

詳細については、Issue Tracker のドキュメントをご覧ください。

自動バックアップ復元テスト バージョン 1.0

バージョン 1.0.0-alpha03

2026 年 10 月 21 日

androidx.test.backup:backup:1.0.0-alpha03 と androidx.test.backup:backup-host:1.0.0-alpha03 がリリースされました。バージョン 1.0.0-alpha03 に含まれる commit については、こちらをご覧ください。

新機能

  • @BackupRestoreConfig が省略された場合にテスト対象のアプリを自動的にターゲットに設定することで、Android Gradle プラグインのバックアップ テストスイートでのテスト設定を簡素化しました。(I1452b)
  • @Nested テストクラスで、外部テストクラスから @BackupRestoreConfig と @Isolation の設定を継承するサポートを追加しました。(Ia45a8)
  • テストクラスのコンストラクタと @BeforeAll セットアップ メソッドに BackupRestoreController を直接挿入するためのサポートを追加しました。(I6e822、Ia2ebd)
  • androidx.test.backup.device.serial.{role} プロパティを使用して、マルチデバイス テストで特定のデバイスを @Device ロールに固定するサポートを追加しました。(I484be)

バグの修正

  • performBackup と performRestore を修正し、バックアップがスキップされた場合や空の場合、バックアップ サービスがエラーになった場合、ローカル バックアップ アーカイブが別のアプリやデバイスに属している場合に、テストがサイレントで合格するのではなく、すぐに失敗するようにしました。(I7673d、I478ad、I0b989、I9a0ea、I79567)
  • バックアップ、復元、デバイス アクション、クリーンアップの各ステップでタイムアウトを適用することで、応答しないデバイスでテストが無限にハングする問題を修正しました。(I10661、I9cdee、If5f92)
  • テスト実行の終了時に生成されたバックアップ ファイルを performBackup が削除する問題を修正しました。これにより、テストの終了後もバックアップ アーカイブがディスクに保持されるようになりました。(I8c13f)
  • データベース テスト ヘルパー(StorageDomain.Database)を修正し、null 値を適切に保存して確認し、テストデータのシード時に既存の行を上書きし、無効なテーブル構成を早期にキャッチし、想定されるデータベース ファイルがない場合に失敗するようにしました。(Ib4767、Iddf87、I19c43、Ie8d78、I8bc18)
  • SharedPreferences テストヘルパーを修正し、データ型を正確に保持し、null または削除された設定のチェックをサポートするようにしました。(I8456d9、I1d0fc2)
  • runOnDevice を修正し、クラッシュすることなく大規模なテスト ペイロードを処理できるようにしました。また、waitForDebugger が有効になっている場合にデバッガを一時停止し、カスタム テスト APK パッケージ名でテストランナーを検索し、内部ランナーフラグがデバイス アクションに漏洩しないようにしました。(Ic73bd、Iede17、I1d172、I84c15)
  • テスト実行全体で単一の ADB 接続を共有し、デバイスごとに APK を 1 回だけインストールし、APK のインストールまたは起動に失敗した場合は明確に失敗することで、テストの安定性と速度を向上させました。(I62717、Iabf75、I14e6f、I4c3da5、I54077、Iee84e)
  • fetchDeviceLogs が空のログファイルを書き込む問題を修正し、キャンセルされたテスト実行が誤った失敗レポートを生成しないようにしました。(I736c4、I7b199、Ia847e)
  • backup-host の依存関係をクリーンアップし、adblib を呼び出し元から直接利用できるようにしました。また、内部ロギング ライブラリやテスト ライブラリがプロジェクトのクラスパスと競合しないようにしました。(I6e822、Iba9a4、Ib4ec9)

バージョン 1.0.0-alpha02

2026 年 10 月 7 日

androidx.test.backup:backup:1.0.0-alpha02 と androidx.test.backup:backup-host:1.0.0-alpha02 がリリースされました。バージョン 1.0.0-alpha02 に含まれる commit については、こちらをご覧ください。

API の変更

  • ペイロード キーが BackupActionInputKeys、BackupActionOutputKeys、BackupActionValues としてドキュメント化され、BackupDeviceAction の定数が置き換えられました。BackupDeviceActionResult.success() ファクトリと failure() ファクトリ、isSuccess アクセサと errorMessage アクセサを追加しました。(Ibd493)

バグの修正

  • BackupRestoreController.clearAppData が、pm clear が成功を報告しない場合に、サイレントに続行するのではなく、IOException をスローするようになりました。(I61556)
  • デバイス実行のために BackupRestoreController に渡されるシェル引数が正しくエスケープされるようになり、コマンド インジェクションが防止され、スペースを含むファイルパスが安全に処理されるようになりました。
  • バンドルされたストレージ アクション(PopulateStorageAction と AssertStorageAction)を強化し、サイレント検証に合格しないようにしました。これにより、想定されるデータが欠落している場合にテストが確実に失敗するようになります。
  • ホスト側のテスト オーケストレーターが、デバイスから報告されたインバンド アクションの失敗を無視せず、正しく処理するようになりました。
  • データベースの 'values' ワイヤー形式をパーセント エンコードすることで、データベース行の入力に関する問題を修正し、ペイロード転送中のデータ破損を防止しました。
  • 依存関係をアップグレードすることで、androidx.test.backup:backup-host のセキュリティの脆弱性に対処しました。

バージョン 1.0.0-alpha01

2026 年 9 月 23 日

androidx.test.backup:backup:1.0.0-alpha01 と androidx.test.backup:backup-host:1.0.0-alpha01 がリリースされました。バージョン 1.0.0-alpha01 に含まれる commit については、こちらをご覧ください。

初回リリースの機能

Android 向け自動バックアップ / 復元テスト フレームワークの初回リリース。このライブラリは、ユーザーデータとアカウント認証情報がデバイスのアップグレードやクラウドの復元後も安全に保持されることをテストするための、自動化されたエンドツーエンドの方法を提供します。手動テストに頼る代わりに、デベロッパーはライフサイクル全体を自動化できます。アプリの状態をシードし、構成されたルール(dataExtractionRules と fullBackupContent)に従ってバックアップし、アプリをワイプして、復元後のデータの完全性を検証します。このフレームワークには、androidx.test.backup:backup-host(ホスト コンピュータ上で動作し、ADB を介してバックアップ、ワイプ、復元のパスをオーケストレートする)と androidx.test.backup:backup(デバイス上で動作し、アプリデータを入力して検証する)という 2 つのアーティファクトが用意されています。

  • BackupRestoreController: テストデバイスのバックアップ、ワイプ、復元、検証のワークフローを制御するために使用される、プライマリ ホスト側インターフェース。runBackupRestoreFlow などの便利なパイプラインと、きめ細かいオペレーション(performBackup、performRestore、clearAppData、fetchDeviceLogs、runOnDevice)を提供します。Kotlin コルーチンと Java ListenableFuture 非同期実行の両方をサポートしています。
  • BackupRestoreExtension: BackupRestoreController パラメータを解決してテストメソッドに挿入する JUnit 5 Jupiter 拡張機能。スタンドアロンまたは共有の ADB セッションを管理し、テスト対象の APK とテスト APK を自動的にインストールします。また、デバイスのロック画面とキーガードを解除して、認証情報で保護されたストレージのロックを解除し、テスト サンドボックスの分離を適用します。
  • BackupRestoreTestRunner: アプリケーション サンドボックス内で実行されるオンデバイスの Instrumentation テストランナー。ホスト オーケストレーターによってディスパッチされたリクエストされた BackupDeviceAction 実装を動的に解決して実行し、大規模な JSON 結果ペイロードをディスクに安全にリダイレクトして、Binder トランザクション バッファの上限を回避します。
  • BackupDeviceAction: データ シーディング(PHASE_POPULATE)または復元後の検証(PHASE_VERIFY)中に、ターゲット アプリケーションのサンドボックス内で直接実行されるカスタム デバイス側アクションのコントラクト。
  • StorageDomain: 強く型付けされた記述子(Preference、Database、TextFile、BinaryFile)を、事前ビルドされたアクション ヘルパー(PopulateStorageAction、AssertStorageAction)とともに使用して、SharedPreferences、SQLite データベース、未加工ファイルを、認証情報保護(CE)ストレージ コンテキストとデバイス保護(DE)ストレージ コンテキストの両方で、ボイラープレートなしで自動的にシードしてアサートします。
  • BackupTransportMode: テストパス中にシミュレートするプラットフォーム バックアップ トランスポート トポロジを指定します。これには、DEVICE_TO_DEVICE(USB または Wi-Fi Direct による実機の移行)、CLOUD_ENCRYPTED(クライアントサイドのエンドツーエンドの暗号化によるクラウド バックアップ)、CLOUD_UNENCRYPTED(標準のクラウド バックアップ)、LOCAL(オフラインのローカル ファイル システム バックアップ)が含まれます。
  • @Device と @Isolation: 特定のシリアル、API レベル、マルチデバイス ロールに一致するコネクテッド デバイスを選択し、テスト実行間のサンドボックス分離ポリシーを構成するためのホスト アノテーション(IsolationPolicy.AUTOMATIC と IsolationPolicy.MANUAL)。