Android 6.0 ช่วยให้คุณมั่นใจได้ว่าแอปจะทำงานร่วมกับแพลตฟอร์มเวอร์ชันถัดไปได้ เวอร์ชันนี้มี API และการเปลี่ยนแปลงลักษณะการทำงานหลายรายการที่อาจส่งผลต่อแอปของคุณ ตามที่อธิบายไว้ในภาพรวม API และการเปลี่ยนแปลงลักษณะการทำงาน ในการทดสอบแอปกับรุ่นนี้ มีการเปลี่ยนแปลงระบบบางอย่างที่คุณควรมุ่งเน้นเพื่อให้ผู้ใช้ได้รับประสบการณ์ที่ดี
คู่มือนี้จะอธิบายถึงสิ่งที่ต้องทดสอบและวิธีทดสอบฟีเจอร์ของ Android 6.0 กับแอปของคุณ คุณควรให้ความสําคัญกับการทดสอบฟีเจอร์ต่อไปนี้เนื่องจากมีแนวโน้มที่จะส่งผลต่อลักษณะการทํางานของแอป
การทดสอบสิทธิ์
โมเดลสิทธิ์ใหม่เปลี่ยนวิธีที่ผู้ใช้จัดสรรสิทธิ์ให้กับแอปของคุณ แอปของคุณต้องขอสิทธิ์แต่ละรายการจากผู้ใช้ขณะรันไทม์แทนการให้สิทธิ์ทั้งหมดในระหว่างกระบวนการติดตั้ง สําหรับผู้ใช้ ลักษณะการทํางานนี้ช่วยให้ควบคุมกิจกรรมของแอปแต่ละแอปได้อย่างละเอียดยิ่งขึ้น รวมถึงมีบริบทที่ดีขึ้นสําหรับทําความเข้าใจสาเหตุที่แอปขอสิทธิ์หนึ่งๆ ผู้ใช้สามารถให้หรือเพิกถอนสิทธิ์ที่ให้แก่แอปแต่ละรายการได้ทุกเมื่อ ฟีเจอร์นี้ของรุ่นมีแนวโน้มที่จะส่งผลต่อลักษณะการทำงานของแอปมากที่สุด และอาจขัดขวางไม่ให้ฟีเจอร์บางอย่างของแอปทำงานได้ หรืออาจอยู่ในสถานะที่ประสิทธิภาพลดลง
การเปลี่ยนแปลงนี้จะส่งผลต่อแอปทั้งหมดที่ทำงานบนแพลตฟอร์มใหม่ แม้ว่าแอปเหล่านั้นจะไม่กําหนดเป้าหมายเป็นแพลตฟอร์มเวอร์ชันใหม่ก็ตาม แพลตฟอร์มนี้มีลักษณะการทำงานที่จำกัดสำหรับแอปเดิม แต่คุณควรเริ่มวางแผนการย้ายข้อมูลแอปไปยังโมเดลสิทธิ์ใหม่ตั้งแต่ตอนนี้ โดยมีเป้าหมายเพื่อเผยแพร่แอปเวอร์ชันอัปเดตในการเปิดตัวแพลตฟอร์มอย่างเป็นทางการ
เคล็ดลับการทดสอบ
ใช้เคล็ดลับการทดสอบต่อไปนี้เพื่อช่วยคุณวางแผนและทำการทดสอบแอปด้วยลักษณะการทํางานของสิทธิ์แบบใหม่
- ระบุสิทธิ์ปัจจุบันของแอปและเส้นทางโค้ดที่เกี่ยวข้อง
- ทดสอบโฟลว์ของผู้ใช้ในบริการและข้อมูลที่ได้รับการคุ้มครองสิทธิ์
- ทดสอบด้วยชุดค่าผสมต่างๆ ของสิทธิ์ที่อนุญาต/เพิกถอน
- ใช้เครื่องมือ
adb
เพื่อจัดการสิทธิ์จากบรรทัดคำสั่ง โดยทำดังนี้- แสดงรายการสิทธิ์และสถานะตามกลุ่ม:
adb shell pm list permissions -d -g
- ให้หรือเพิกถอนสิทธิ์อย่างน้อย 1 รายการโดยใช้ไวยากรณ์ต่อไปนี้
adb shell pm [grant|revoke] <permission.name> ...
- แสดงรายการสิทธิ์และสถานะตามกลุ่ม:
- วิเคราะห์แอปเพื่อหาบริการที่ใช้สิทธิ์
กลยุทธ์การทดสอบ
การเปลี่ยนแปลงสิทธิ์จะส่งผลต่อโครงสร้างและการออกแบบแอป รวมถึงประสบการณ์ของผู้ใช้และขั้นตอนที่คุณมอบให้ผู้ใช้ คุณควรประเมินการใช้สิทธิ์ปัจจุบันของแอปและเริ่มวางแผนสำหรับขั้นตอนใหม่ที่ต้องการนำเสนอ การเปิดตัวแพลตฟอร์มอย่างเป็นทางการจะมีลักษณะการทำงานความเข้ากันได้ แต่คุณควรวางแผนอัปเดตแอปและไม่ใช้ลักษณะการทำงานเหล่านี้
ระบุสิทธิ์ที่แอปต้องการและใช้จริงๆ จากนั้นค้นหาเส้นทางโค้ดต่างๆ ที่ใช้บริการที่ได้รับการคุ้มครองสิทธิ์ ซึ่งทำได้โดยผสมผสานการทดสอบในแพลตฟอร์มใหม่และการวิเคราะห์โค้ด ในการทดสอบ คุณควรมุ่งเน้นที่การเลือกรับสิทธิ์รันไทม์โดยเปลี่ยน targetSdkVersion
ของแอปเป็น API ระดับ 23
ทดสอบด้วยชุดค่าผสมต่างๆ ของสิทธิ์ที่เพิกถอนและเพิ่ม เพื่อไฮไลต์ขั้นตอนของผู้ใช้ที่ขึ้นอยู่กับสิทธิ์ ในกรณีที่ความเกี่ยวข้องไม่ชัดเจนหรือไม่เป็นเหตุผล คุณควรพิจารณา refactoring หรือแบ่งส่วนการทํางานของขั้นตอนนั้นเพื่อขจัดความเกี่ยวข้อง หรือระบุให้ชัดเจนว่าเหตุใดจึงต้องใช้สิทธิ์
ดูข้อมูลเพิ่มเติมเกี่ยวกับลักษณะการทํางานของสิทธิ์รันไทม์ การทดสอบ และแนวทางปฏิบัติแนะนําได้ที่การทํางานกับสิทธิ์ของระบบสําหรับนักพัฒนาแอป
การทดสอบโหมด Doze และสแตนด์บายแอป
ฟีเจอร์ประหยัดพลังงานของโหมดสลีปและโหมดสแตนด์บายของแอปจะจำกัดปริมาณการประมวลผลเบื้องหลังที่แอปของคุณทำได้เมื่ออุปกรณ์อยู่ในสถานะไม่มีการใช้งานหรือขณะที่แอปไม่ได้อยู่ในโฟกัส ข้อจำกัดที่ระบบอาจกำหนดให้กับแอป ได้แก่ การเข้าถึงเครือข่ายแบบจำกัดหรือไม่มีสิทธิ์เข้าถึง งานที่ทำงานอยู่เบื้องหลังถูกระงับ การแจ้งเตือนถูกระงับ คำขอปลุกที่ถูกละเว้น และสัญญาณเตือน คุณควรทดสอบแอปโดยจำลองสถานะพลังงานต่ำเหล่านี้เพื่อให้แน่ใจว่าแอปทำงานได้อย่างถูกต้องเมื่อใช้การเพิ่มประสิทธิภาพการประหยัดพลังงาน
การทดสอบแอปด้วยโหมด Doze
วิธีทดสอบโหมดสลีปกับแอป
- กำหนดค่าอุปกรณ์ฮาร์ดแวร์หรืออุปกรณ์เสมือนด้วยภาพระบบ Android 7.0 (API ระดับ 24)
- เชื่อมต่ออุปกรณ์กับเครื่องสำหรับพัฒนาซอฟต์แวร์และติดตั้งแอป
- เรียกใช้แอปและปล่อยให้แอปทำงาน
- จำลองอุปกรณ์ที่เข้าสู่โหมดสลีปโดยเรียกใช้คำสั่งต่อไปนี้
$ adb shell dumpsys battery unplug $ adb shell dumpsys deviceidle step $ adb shell dumpsys deviceidle -h
- สังเกตลักษณะการทำงานของแอปเมื่ออุปกรณ์เปิดใช้งานอีกครั้ง ตรวจสอบว่าระบบกู้คืนได้อย่างราบรื่นเมื่ออุปกรณ์ออกจากโหมดสลีป
การทดสอบแอปโดยใช้สแตนด์บายแอป
วิธีทดสอบโหมดแอปรอดำเนินการกับแอป
- กำหนดค่าอุปกรณ์ฮาร์ดแวร์หรืออุปกรณ์เสมือนด้วยอิมเมจระบบ Android 7.0 (API ระดับ 24)
- เชื่อมต่ออุปกรณ์กับเครื่องสำหรับพัฒนาซอฟต์แวร์และติดตั้งแอป
- เรียกใช้แอปและเปิดไว้
- จำลองแอปที่เข้าสู่โหมดสแตนด์บายโดยเรียกใช้คำสั่งต่อไปนี้
$ adb shell am broadcast -a android.os.action.DISCHARGING $ adb shell am set-idle <packageName> true
- จำลองการปลุกแอปโดยใช้คำสั่งต่อไปนี้
$ adb shell am set-idle <packageName> false
- สังเกตลักษณะการทํางานของแอปเมื่อระบบปลุกแอป ตรวจสอบว่าอุปกรณ์กลับมาทำงานได้ตามปกติจากโหมดสแตนด์บาย โดยเฉพาะอย่างยิ่ง คุณควรตรวจสอบว่าการแจ้งเตือนและงานในเบื้องหลังของแอปยังคงทำงานตามที่คาดไว้หรือไม่
การสำรองข้อมูลอัตโนมัติสำหรับแอปและตัวระบุเฉพาะอุปกรณ์
หากแอปยังมีตัวระบุเฉพาะอุปกรณ์ เช่น รหัสการลงทะเบียนการรับส่งข้อความในระบบคลาวด์ของ Google ในที่จัดเก็บข้อมูลภายใน โปรดทำตามแนวทางปฏิบัติแนะนำเพื่อยกเว้นตำแหน่งพื้นที่เก็บข้อมูลจากการสำรองข้อมูลอัตโนมัติ ตามที่อธิบายไว้ในสำรองข้อมูลผู้ใช้ด้วยการสำรองข้อมูลอัตโนมัติ