پشتیبان‌گیری آزمایشی

  
چارچوب آزمایش خودکار برای تأیید اینکه داده‌های کاربر و اعتبارنامه‌های حساب به‌طور ایمن در ارتقای دستگاه و بازیابی ابری حفظ می‌شوند.
جدیدترین به‌روزرسانی نسخه پایدار نامزد انتشار انتشار نسخه بتا نسخه آلفا
‫۲۱ اکتبر ۲۰۲۶ - - - 1.0.0-alpha03

اعلام وابستگی‌ها

برای افزودن وابستگی به پشتیبان‌گیری آزمایشی، باید مخزن Google Maven را به پروژه‌تان اضافه کنید. برای اطلاعات بیشتر، مخزن Maven در Google را بخوانید.

وابستگی‌های مصنوعات موردنیازتان را در فایل build.gradle برای برنامه یا واحدتان اضافه کنید:

شیک

dependencies {
    implementation "androidx.test.backup:backup:1.0.0-alpha03"
    implementation "androidx.test.backup:backup-host:1.0.0-alpha03"
}

کاتلین

dependencies {
    implementation("androidx.test.backup:backup:1.0.0-alpha03")
    implementation("androidx.test.backup:backup-host:1.0.0-alpha03")
}

برای اطلاعات بیشتر درباره وابستگی‌ها، به افزودن وابستگی‌های ساخت مراجعه کنید.

بازخورد

بازخوردتان به بهبود Jetpack کمک می‌کند. اگر مشکل جدیدی پیدا کردید یا ایده‌ای برای بهبود این کتابخانه دارید، به ما اطلاع دهید. لطفاً قبل‌از ایجاد مشکل جدید، مشکلات موجود در این کتابخانه را بررسی کنید. با کلیک کردن روی دکمه ستاره می‌توانید رأی خود را به مشکل موجود اضافه کنید.

ایجاد مشکل جدید

برای اطلاعات بیشتر، سند Issue Tracker را ببینید.

Automated Backup Restore Test Version 1.0

نسخه 1.0.0-alpha03

‫۲۱ اکتبر ۲۰۲۶

‫androidx.test.backup:backup:1.0.0-alpha03 و androidx.test.backup:backup-host:1.0.0-alpha03 منتشر شده‌اند. نسخه 1.0.0-alpha03 حاوی این موارد ثبت است.

ویژگی‌های جدید

  • راه‌اندازی آزمایشی ساده‌شده در مجموعه‌های آزمایشی پشتیبان‌گیری «افزایه Android Gradle» با هدف‌یابی خودکار برنامه آزمایش‌شده درصورت حذف @BackupRestoreConfig. (I1452b)
  • پشتیبانی از ارث‌بری تنظیمات @BackupRestoreConfig و @Isolation از کلاس آزمایشی بیرونی در کلاس‌های آزمایشی @Nested اضافه شد. (Ia45a8)
  • پشتیبانی از تزریق مستقیم BackupRestoreController به سازنده‌های کلاس آزمایشی و روش‌های راه‌اندازی @BeforeAll اضافه شد. (I6e822، Ia2ebd)
  • پشتیبانی از سنجاق کردن دستگاهی خاص به نقش @Device در آزمایش‌های چنددستگاهی بااستفاده از ویژگی androidx.test.backup.device.serial.{role} اضافه شد. (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 فقط یک‌بار در هر دستگاه، و ناموفق شدن واضح وقتی APK نصب یا راه‌اندازی نمی‌شود بهبود بخشیدیم. (I62717،‏ Iabf75،‏ I14e6f،‏ I4c3da5،‏ I54077،‏ Iee84e)
  • مشکل fetchDeviceLogs در نوشتن فایل‌های گزارش خالی برطرف شد و اجرای آزمایش‌های لغوشده دیگر گزارش‌های خرابی نادرست تولید نمی‌کنند. (I736c4، I7b199، Ia847e)
  • وابستگی‌های backup-host پاک‌سازی شد تا adblib مستقیماً برای تماس‌گیرندگان دردسترس باشد و کتابخانه‌های ثبت داخلی یا آزمایشی دیگر با مسیر کلاس پروژه‌تان تداخل نداشته باشند. (I6e822،‏ Iba9a4،‏ Ib4ec9)

نسخه 1.0.0-alpha02

‫۷ اکتبر ۲۰۲۶

‫androidx.test.backup:backup:1.0.0-alpha02 و androidx.test.backup:backup-host:1.0.0-alpha02 منتشر شده‌اند. نسخه 1.0.0-alpha02 حاوی این ارسال‌ها است.

تغییرات میانای برنامه‌سازی کاربردی

  • کلیدهای بار مفید اکنون به‌صورت BackupActionInputKeys، BackupActionOutputKeys، و BackupActionValues مستند شده‌اند و جایگزین ثابت‌های BackupDeviceAction شده‌اند. کارخانه‌های BackupDeviceActionResult.success() و failure()، به‌همراه دسترسی‌های isSuccess و errorMessage اضافه شد. (Ibd493)

رفع اشکال‌ها

  • اکنون وقتی pm clear موفقیت را گزارش نمی‌کند، BackupRestoreController.clearAppData به‌جای ادامه دادن بی‌صدا، IOException را نشان می‌دهد. (I61556)
  • آرگومان‌های پوسته که برای اجرای دستگاه به BackupRestoreController ارسال می‌شوند اکنون به‌درستی گریز داده می‌شوند تا از تزریق فرمان جلوگیری شود و اطمینان حاصل شود که مسیرهای فایل دارای فاصله به‌طور ایمن مدیریت می‌شوند.
  • کنش‌های ذخیره‌سازی بسته‌ای (PopulateStorageAction و AssertStorageAction) دربرابر درستی‌سنجی‌های بی‌صدا تقویت شده‌اند تا اطمینان حاصل شود که درصورت نبودن داده‌های موردانتظار، آزمایش‌ها به‌طور قطعی ناموفق می‌شوند.
  • اکنون هماهنگ‌کننده‌های آزمایش سمت میزبان به‌درستی از خرابی‌های کنش درون‌باندی گزارش‌شده توسط دستگاه پیروی می‌کنند و آن‌ها را نادیده نمی‌گیرند.
  • مشکل مربوط به جمعیت ردیف پایگاه داده با کدگذاری درصدی قالب سیم 'values' پایگاه داده برطرف شد، که از خرابی داده‌ها درطول انتقال بار مفید جلوگیری می‌کند.
  • آسیب‌پذیری‌های امنیتی در androidx.test.backup:backup-host با ارتقای وابستگی‌ها برطرف شد.

نسخه 1.0.0-alpha01

‫۲۳ سپتامبر ۲۰۲۶

‫androidx.test.backup:backup:1.0.0-alpha01 و androidx.test.backup:backup-host:1.0.0-alpha01 منتشر شده‌اند. نسخه 1.0.0-alpha01 حاوی این ارسال‌ها است.

ویژگی‌های نسخه اولیه

اولین نسخه پخش چارچوب «آزمایش بازیابی و پشتیبان‌گیری خودکار» برای Android. این کتابخانه روشی خودکار و سرتاسری برای آزمایش این موضوع ارائه می‌دهد که داده‌های کاربر و اعتبارنامه‌های حساب به‌طور ایمن در ارتقاهای دستگاه و بازیابی‌های ابری حفظ می‌شوند. توسعه‌دهندگان به‌جای تکیه بر آزمایش دستی می‌توانند کل چرخه حیات را خودکارسازی کنند: مقداردهی اولیه وضعیت برنامه، پشتیبان‌گیری از آن طبق قوانین پیکربندی‌شده شما (dataExtractionRules و fullBackupContent)، پاک کردن برنامه، و درستی‌سنجی تمامیت داده‌ها پس‌از بازیابی. این چارچوب دو آرتیفکت ارائه می‌دهد: androidx.test.backup:backup-host (که روی رایانه میزبان اجرا می‌شود تا مراحل پشتیبان‌گیری، پاک کردن، و بازیابی را ازطریق ADB هماهنگ کند) و androidx.test.backup:backup (که روی دستگاه اجرا می‌شود تا داده‌های برنامه را پر و تأیید کند).

  • BackupRestoreController: میانای اصلی سمت میزبان که برای کنترل گردش‌های کاری پشتیبان‌گیری، پاک‌سازی، بازیابی، و درستی‌سنجی برای دستگاه آزمایشی استفاده می‌شود. خطوط لوله راحتی مانند runBackupRestoreFlow و همچنین عملیات ریزدانه (performBackup، performRestore، clearAppData، fetchDeviceLogs، و runOnDevice) را ارائه می‌دهد. از هر دو کوروتین Kotlin و اجرای ناهمگام Java ListenableFuture پشتیبانی می‌کند.
  • ‫BackupRestoreExtension: افزونه JUnit 5 Jupiter که پارامترهای BackupRestoreController را حل‌وفصل و به روش‌های آزمایش تزریق می‌کند. جلسه‌های ADB مستقل یا مشترک را مدیریت می‌کند، فایل‌های 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).