ทดสอบการสำรองข้อมูล

  
เฟรมเวิร์กการทดสอบอัตโนมัติเพื่อยืนยันว่าข้อมูลผู้ใช้และข้อมูลเข้าสู่ระบบของบัญชีจะยังคงอยู่อย่างปลอดภัยหลังจากการอัปเกรดอุปกรณ์และการกู้คืนระบบคลาวด์
อัปเดตล่าสุด รุ่นที่เสถียร รุ่นที่อาจได้รับการเผยแพร่ รุ่นเบต้า รุ่นอัลฟ่า
21 ตุลาคม 2569 - - - 1.0.0-alpha03

การประกาศทรัพยากร Dependency

หากต้องการเพิ่มทรัพยากร Dependency ในการสำรองข้อมูลทดสอบ คุณต้องเพิ่มที่เก็บ Maven ของ Google ลงในโปรเจ็กต์ อ่านข้อมูลเพิ่มเติมได้ที่ที่เก็บ Maven ของ Google

เพิ่มทรัพยากร Dependency สำหรับอาร์ติแฟกต์ที่ต้องการในไฟล์ build.gradle สำหรับแอปหรือโมดูล ดังนี้

ดึงดูด

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

21 ตุลาคม 2569

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 ค้นหา Test Runner ในชื่อแพ็กเกจ APK ทดสอบที่กำหนดเอง และบล็อกไม่ให้แฟล็ก Runner ภายในรั่วไหลไปยังการดำเนินการของอุปกรณ์ (Ic73bd, Iede17, I1d172, I84c15)
  • ปรับปรุงความเสถียรและความเร็วในการทดสอบด้วยการแชร์การเชื่อมต่อ ADB เดียวตลอดการทดสอบ โดยติดตั้ง APK เพียงครั้งเดียวต่ออุปกรณ์ และแจ้งเตือนอย่างชัดเจนเมื่อติดตั้งหรือเปิด APK ไม่สำเร็จ (I62717, Iabf75, I14e6f, I4c3da5, I54077, Iee84e)
  • แก้ไขปัญหาที่ fetchDeviceLogs เขียนไฟล์บันทึกเปล่า และหยุดการทดสอบที่ยกเลิกไม่ให้สร้างรายงานความล้มเหลวที่ผิดพลาด (I736c4, I7b199, Ia847e)
  • ล้างทรัพยากร Dependency backup-host เพื่อให้ adblib พร้อมใช้งานโดยตรงสำหรับผู้โทร และการบันทึกภายในหรือไลบรารีทดสอบจะไม่ขัดแย้งกับ classpath ของโปรเจ็กต์อีกต่อไป (I6e822, Iba9a4, Ib4ec9)

เวอร์ชัน 1.0.0-alpha02

7 ตุลาคม 2026

androidx.test.backup:backup:1.0.0-alpha02 และ androidx.test.backup:backup-host:1.0.0-alpha02 เผยแพร่แล้ว เวอร์ชัน 1.0.0-alpha02 มีคอมมิตเหล่านี้

การเปลี่ยนแปลง API

  • ตอนนี้คีย์เพย์โหลดได้รับการบันทึกเป็น BackupActionInputKeys, BackupActionOutputKeys และ BackupActionValues แทนค่าคงที่ใน BackupDeviceAction เพิ่มโรงงาน BackupDeviceActionResult.success() และ failure() พร้อมกับตัวช่วยเข้าถึง isSuccess และ errorMessage (Ibd493)

แก้ไขข้อบกพร่อง

  • ตอนนี้ BackupRestoreController.clearAppData จะแสดง IOException เมื่อ pm clear ไม่รายงานว่าสำเร็จ แทนที่จะดำเนินการต่อโดยไม่มีการแจ้งเตือน (I61556)
  • ตอนนี้อาร์กิวเมนต์ Shell ที่ส่งไปยัง BackupRestoreController สำหรับการดำเนินการของอุปกรณ์จะได้รับการหลีกเลี่ยงอย่างถูกต้องเพื่อป้องกันการแทรกคำสั่งและตรวจสอบว่าระบบจัดการเส้นทางไฟล์ที่มีช่องว่างอย่างปลอดภัย
  • ปรับปรุงการดำเนินการจัดเก็บข้อมูลที่รวมมาด้วย (PopulateStorageAction และ AssertStorageAction) เพื่อป้องกันการผ่านการยืนยันโดยไม่มีการแจ้งเตือน เพื่อให้มั่นใจว่าการทดสอบจะล้มเหลวอย่างเคร่งครัดเมื่อไม่มีข้อมูลที่คาดไว้
  • ตอนนี้ Orchestrator การทดสอบฝั่งโฮสต์จะดำเนินการอย่างถูกต้องตามความล้มเหลวของการดำเนินการในย่านความถี่ที่อุปกรณ์รายงาน แทนที่จะละเว้น
  • แก้ไขปัญหาเกี่ยวกับการสร้างแถวฐานข้อมูลโดยการเข้ารหัสเปอร์เซ็นต์รูปแบบสาย 'values' ของฐานข้อมูล เพื่อป้องกันความเสียหายของข้อมูลระหว่างการส่งเพย์โหลด
  • แก้ไขช่องโหว่ด้านความปลอดภัยใน androidx.test.backup:backup-host โดยอัปเกรดทรัพยากร Dependency

เวอร์ชัน 1.0.0-alpha01

23 กันยายน 2569

androidx.test.backup:backup:1.0.0-alpha01 และ androidx.test.backup:backup-host:1.0.0-alpha01 เผยแพร่แล้ว เวอร์ชัน 1.0.0-alpha01 มีคอมมิตเหล่านี้

ฟีเจอร์ของรุ่นแรก

การเปิดตัวเฟรมเวิร์กการทดสอบการสำรองและกู้คืนข้อมูลอัตโนมัติสำหรับ Android ครั้งแรก ไลบรารีนี้มีวิธีแบบอัตโนมัติจากต้นทางถึงปลายทางในการทดสอบว่าข้อมูลผู้ใช้และข้อมูลเข้าสู่ระบบของบัญชีจะยังคงอยู่หลังจากการอัปเกรดอุปกรณ์และการกู้คืนระบบคลาวด์อย่างปลอดภัย นักพัฒนาแอปสามารถทำให้วงจรทั้งหมดเป็นแบบอัตโนมัติแทนการพึ่งพาการทดสอบด้วยตนเอง ซึ่งได้แก่ การสร้างสถานะแอป การสำรองข้อมูลตามกฎที่กำหนดค่าไว้ (dataExtractionRules และ fullBackupContent) การล้างข้อมูลแอป และการตรวจสอบความสมบูรณ์ของข้อมูลหลังการกู้คืน เฟรมเวิร์กนี้มีอาร์ติแฟกต์ 2 รายการ ได้แก่ androidx.test.backup:backup-host (ซึ่งทำงานบนคอมพิวเตอร์โฮสต์เพื่อจัดการการสำรองข้อมูล การล้างข้อมูล และการกู้คืนข้อมูลผ่าน ADB) และ androidx.test.backup:backup (ซึ่งทำงานบนอุปกรณ์เพื่อป้อนข้อมูลและยืนยันข้อมูลแอป)

  • BackupRestoreController: อินเทอร์เฟซฝั่งโฮสต์หลักที่ใช้ควบคุมเวิร์กโฟลว์การสำรองข้อมูล การล้างข้อมูล การกู้คืน และการยืนยันสำหรับอุปกรณ์ทดสอบ มีไปป์ไลน์ที่อำนวยความสะดวก เช่น runBackupRestoreFlow รวมถึงการดำเนินการแบบละเอียด (performBackup, performRestore, clearAppData, fetchDeviceLogs และ runOnDevice) รองรับทั้งโครูทีน Kotlin และการดำเนินการแบบอะซิงโครนัส ListenableFuture ของ Java
  • BackupRestoreExtension: ส่วนขยาย JUnit 5 Jupiter ที่แก้ไขและแทรกพารามิเตอร์ BackupRestoreController ลงในเมธอดทดสอบ จัดการเซสชัน ADB แบบสแตนด์อโลนหรือแบบแชร์ ติดตั้ง APK ที่ทดสอบและ APK ทดสอบโดยอัตโนมัติ ปิดหน้าจอล็อกและคีย์การ์ดของอุปกรณ์เพื่อปลดล็อกพื้นที่เก็บข้อมูลที่ได้รับการปกป้องด้วยข้อมูลเข้าสู่ระบบ และบังคับใช้การแยกแซนด์บ็อกซ์ทดสอบ
  • BackupRestoreTestRunner: โปรแกรมเรียกใช้การทดสอบ Instrumentation ในอุปกรณ์ที่ทำงานภายในแซนด์บ็อกซ์ของแอปพลิเคชัน แก้ไขและดำเนินการการติดตั้งใช้งาน BackupDeviceAction ที่ขอซึ่งส่งโดย Orchestrator ของโฮสต์แบบไดนามิก และเปลี่ยนเส้นทางเพย์โหลดผลลัพธ์ 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)