CTS สำหรับ Instant Apps

Instant Apps เป็นฟีเจอร์หลักของ Android 10 ดังนั้นจึงจำเป็นอย่างยิ่งที่ฟีเจอร์นี้จะต้องทำงานอย่างถูกต้อง Instant Apps จะได้รับการติดตั้งโดยนัย ดังนั้นจึงมีความสามารถที่จำกัดและทำงานในแซนด์บ็อกซ์ด้านความปลอดภัยที่มีข้อจำกัดมากกว่า เนื่องจากข้อจำกัดเหล่านี้มีอยู่ทั่วไป ระบบส่วนใดส่วนหนึ่งจึงอาจทำงานร่วมกับ Instant Apps ได้ไม่ถูกต้อง เราได้สร้างชุดย่อยของการทดสอบ CTS ขึ้นเพื่อให้แน่ใจว่าลักษณะการทำงานที่ Instant Apps อนุญาตนั้นทำงานได้ แนวคิดหลักคือการลดการเพิ่มขนาดของ CTS โดยแยกชุดการทดสอบขั้นต่ำที่จะพอร์ต การเรียกใช้ CTS ในโหมด Instant Apps หมายถึงการติดตั้ง APK ของการทดสอบเป็น Instant App และเรียกใช้การทดสอบ

ข้อจำกัดของ Instant App

ผู้ใช้ไม่ได้ติดตั้ง Instant Apps ดังนั้นแอปเหล่านี้จึงทำงานในแซนด์บ็อกซ์ที่มีข้อจำกัดพร้อมข้อจำกัดต่อไปนี้

  • เก็บสิทธิ์บางอย่างได้เท่านั้น
  • มองไม่เห็นแอปอื่นๆ เว้นแต่จะมีการทำเครื่องหมายว่าแอปเหล่านั้นมองเห็นได้สำหรับ Instant Apps
  • เข้าถึงได้เฉพาะการตั้งค่าระบบบางอย่าง
  • เข้าถึงได้เฉพาะพร็อพเพอร์ตี้ระบบบางอย่าง
  • ไม่สามารถเปิดเผยบริการ/ผู้ให้บริการ
  • รับและส่งได้โดยมีกฎพิเศษเกี่ยวกับการออกอากาศ

นอกจากนี้ Instant Apps จะต้องเลือกเข้าร่วมเพื่ออนุญาตให้แซนด์บ็อกซ์ด้านความปลอดภัยใหม่เพิ่มข้อจำกัดเพิ่มเติม ลักษณะการทำงานพิเศษที่หลากหลายเกี่ยวกับ Instant Apps ครอบคลุมทั้งแพลตฟอร์ม ดังนั้นจึงต้องมีวิธีตรวจสอบว่า Instant Apps ทำงานตามที่คาดไว้สำหรับอุปกรณ์ทั้งหมดในระบบนิเวศ

การทดสอบที่ทำงานในโหมด Instant Apps

ไม่ใช่โมดูล CTS ทั้งหมดที่มีการทดสอบที่ใช้ได้กับ Instant Apps หากฟังก์ชันการทำงานที่โมดูลทดสอบมีการโต้ตอบกับเซิร์ฟเวอร์ระบบ คุณควรเรียกใช้การทดสอบเหล่านี้ในโหมด Instant Apps ตัวอย่างเช่น การทดสอบ OpenGL ไม่ได้โต้ตอบกับเซิร์ฟเวอร์ระบบ จึงไม่จำเป็นต้องเรียกใช้ในโหมด Instant Apps ในขณะที่การทดสอบการช่วยเหลือพิเศษโต้ตอบกับเซิร์ฟเวอร์ระบบ จึงจำเป็นต้องเรียกใช้ในโหมด Instant Apps

นอกจากการระบุโมดูลที่ใช้ได้แล้ว ผู้ใช้ยังต้องกำหนดการทดสอบใดในโมดูลเหล่านี้ที่เกี่ยวข้อง ตัวอย่างเช่น การทดสอบลักษณะการทำงานเฉพาะบริการสำหรับสถาปัตยกรรมแบบปลั๊กอิน (เช่น AccessibilityService) ใช้ไม่ได้กับโหมด Instant App เนื่องจาก Instant Apps ไม่สามารถเปิดเผยบริการให้แอปอื่นๆ (รวมถึงแพลตฟอร์ม) ในขณะที่การทดสอบที่ตรวจสอบลักษณะการทำงานฝั่งแอปใช้ได้กับโหมด Instant Apps อีกตัวอย่างหนึ่งคือการทดสอบที่ตรวจสอบลักษณะการทำงานเบื้องหลังสิทธิ์ที่ Instant App ไม่สามารถเก็บไว้ได้ ซึ่งไม่เกี่ยวข้องในโหมด Instant App มีการทดสอบชุดหนึ่งที่ใช้ได้กับ Instant Apps เท่านั้น ซึ่งจะตรวจสอบกฎเกี่ยวกับลักษณะการทำงานของแอป เช่น ไม่เปิดเผยบริการหรือไม่เห็นแอปอื่นๆ โดยปกติแล้วการทดสอบเหล่านี้จะเขียนไว้แล้วและไม่จำเป็นต้องพอร์ต

การทดสอบล้มเหลวในโหมด Instant Apps

หากการทดสอบล้มเหลวเนื่องจากตรวจสอบฟังก์ชันการทำงานที่ Instant Apps เข้าถึงไม่ได้ การทดสอบนั้นจะใช้ไม่ได้ในโหมด Instant Apps ทำเครื่องหมายการทดสอบให้ทำงานในโหมด Full App เท่านั้นโดยใส่คำอธิบายประกอบด้วย @AppModeFull คุณสามารถใช้คำอธิบายประกอบนี้กับระดับคลาสเพื่อยกเว้นการทดสอบทั้งหมดในคลาส

หากการทดสอบล้มเหลวเนื่องจากฟังก์ชันการทำงานบางอย่างที่ Instant Apps เข้าถึงได้ใช้งานไม่ได้ ให้ยื่นรายงานข้อบกพร่อง

การแก้ปัญหา

หากการทดสอบล้มเหลวโดยมีข้อความ Failed to install MyCtsModule.apk on DEVICE. Reason: '-116' ให้มองหาข้อความ PackageManager ใน logcat ตัวอย่างเช่น หากข้อความระบุว่า Can't replace Full App with Instant App: your_app ให้ถอนการติดตั้งแอปก่อนด้วย adb