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