คุณภาพแอปหลัก

อัปเดตล่าสุดเมื่อ 17 พฤษภาคม 2021

วิธีที่มีประโยชน์ในการประเมินความเป็นเลิศของแอปคือการดูเวิร์กโฟลว์ในแอปและประเมินความราบรื่นและความปลอดภัยของประสบการณ์การใช้งานแอป

รายการตรวจสอบนี้กำหนดชุดเกณฑ์คุณภาพหลักและการทดสอบที่เกี่ยวข้องเพื่อช่วยคุณประเมิน คุณภาพของแอป เกณฑ์บางอย่างอาจมองข้ามได้ง่าย และการทดสอบจะช่วยให้คุณไม่ลืม ที่จะรวมเกณฑ์เหล่านั้นไว้ในแผนการทดสอบ

รายการตรวจสอบจะเน้นคุณภาพขั้นต่ำที่แอปทั้งหมดควรมี การทดสอบของคุณน่าจะ ไปไกลกว่าที่อธิบายไว้ที่นี่

รายการแต่ละข้อในรายการตรวจสอบคุณภาพจะมีรหัสที่ไม่ซ้ำกัน ซึ่งคุณอาจเห็นว่ามีประโยชน์เมื่อใช้ในการ สื่อสารกับทีม นอกจากนี้ คุณยังดูเวอร์ชันก่อนหน้า ของหลักเกณฑ์เหล่านี้ได้ด้วย

ประสบการณ์การใช้งานแบบเห็นภาพ

แอปควรมอบการออกแบบภาพและรูปแบบการโต้ตอบของ Android มาตรฐาน ในกรณีที่เหมาะสม เพื่อมอบประสบการณ์ของผู้ใช้ที่สอดคล้องและราบรื่น

พื้นที่ รหัส การทดสอบ คำอธิบาย
การนำทาง VX-N1 CR-3 แอปนี้รองรับการไปยังส่วนต่างๆ ด้วยปุ่มย้อนกลับมาตรฐาน และไม่ได้ใช้ข้อความแจ้ง "ปุ่มย้อนกลับ" ที่กำหนดเองบนหน้าจอ
VX-N2 CR-3 แอปนี้รองรับการนำทางด้วยท่าทางสัมผัสสำหรับการย้อนกลับ / ไปที่หน้าจอหลัก
VX-N3 CR-1
CR-3
CR-5

แอปจะเก็บและกู้คืนสถานะผู้ใช้หรือสถานะของแอปได้อย่างถูกต้อง

แอปจะเก็บสถานะผู้ใช้หรือสถานะของแอปไว้เมื่อออกจากเบื้องหน้า และไม่ป้องกันข้อมูลสูญหายโดยไม่ตั้งใจเนื่องจากการนําทางย้อนกลับและการเปลี่ยนแปลงสถานะอื่นๆ

เมื่อกลับมาที่ส่วนหน้า แอปควรกู้คืนสถานะที่เก็บไว้และธุรกรรมแบบมีสถานะที่สำคัญซึ่งรอดำเนินการ ตัวอย่างเช่น การเปลี่ยนแปลงช่องที่แก้ไขได้ ความคืบหน้าของเกม เมนู วิดีโอ และส่วนอื่นๆ ของแอปหรือเกม

  1. เมื่อแอปกลับมาทํางานอีกครั้งจากตัวสลับแอปล่าสุด แอปจะนําผู้ใช้กลับไปยังสถานะที่แน่นอนซึ่งใช้ล่าสุด
  2. เมื่อแอปกลับมาทำงานอีกครั้งหลังจากอุปกรณ์ออกจากสถานะสลีป (ล็อก) แอปจะนำผู้ใช้กลับไปยังสถานะที่ใช้ล่าสุด
  3. เมื่อเปิดแอปอีกครั้งจากหน้าแรกหรือส่วน "แอปทั้งหมด" แอปควรทำอย่างใดอย่างหนึ่งต่อไปนี้ ขึ้นอยู่กับระยะเวลาที่ผ่านไปนับตั้งแต่ใช้แอปครั้งล่าสุด
    • หากใช้แอปครั้งล่าสุดเมื่อไม่นานมานี้ (ไม่กี่นาที) ให้คืนค่าสถานะของแอปให้ใกล้เคียงมากที่สุดกับสถานะก่อนหน้านี้
    • หากเวลาผ่านไปนานกว่านั้นนับตั้งแต่ใช้แอปครั้งล่าสุด ให้ลองคืนค่าแอปให้ใกล้เคียงกับสถานะก่อนหน้านี้มากที่สุด หรือเริ่มแอปจากหน้าจอหลักหรือสถานะเริ่มต้นอื่นๆ
การแจ้งเตือน VX-S1 CR-9

การแจ้งเตือนเป็นไปตามหลักเกณฑ์ด้านการออกแบบ โดยเฉพาะอย่างยิ่งในเรื่องต่อไปนี้

  1. เราจะไม่ใช้การแจ้งเตือนเพื่อการโปรโมตข้ามหรือโฆษณาผลิตภัณฑ์อื่น เนื่องจาก Play Store ไม่อนุญาตอย่างเคร่งครัด
  2. ช่องทางการแจ้งเตือนจะกำหนดตามแนวทางปฏิบัติแนะนำ แทนที่จะแสดงการแจ้งเตือนทั้งหมดจากช่องทางเดียว
  3. เลือก ลำดับความสำคัญของการแจ้งเตือนที่ถูกต้อง
  4. ระบบจะซ้อนการแจ้งเตือนหลายรายการไว้ในกลุ่มการแจ้งเตือนเดียวหากทำได้
  5. ตั้งค่าการหมดเวลาสำหรับการแจ้งเตือนตามความเหมาะสม
  6. การแจ้งเตือนจะคงอยู่เฉพาะในกรณีที่เกี่ยวข้องกับกิจกรรมที่กำลังดำเนินอยู่ เช่น การเล่นเพลงหรือการโทร ดูข้อมูลเพิ่มเติมได้ที่ ส่วนฟังก์ชันการทำงาน
VX-S2 CR-9

สำหรับแอปรับส่งข้อความ แอปโซเชียล และการสนทนา

  1. ใช้การแจ้งเตือนMessagingStyleสำหรับการสนทนา
  2. รองรับการดำเนินการตอบกลับโดยตรง
  3. รองรับทางลัดการสนทนา และใช้แนวทางปฏิบัติแนะนำเพื่อให้ได้การจัดอันดับการแชร์โดยตรงที่ดีที่สุด
  4. รองรับบับเบิล
UI และกราฟิก VX-U1 CR-5

แอปนี้รองรับการวางในแนวนอนและแนวตั้ง รวมถึงสถานะของอุปกรณ์ที่พับและกางออก

การวางแนวและสถานะการพับจะแสดงฟีเจอร์และการดำเนินการที่เหมือนกันโดยพื้นฐาน และรักษา ความเท่าเทียมกันของฟังก์ชันการทำงาน

VX-U2 CR-5

แอปจะเติมเต็มหน้าต่างแอปในทั้ง 2 แนว และไม่มีแถบดำเนื่องจาก การเปลี่ยนแปลงการกำหนดค่า ซึ่งรวมถึงการพับและกางอุปกรณ์

การเว้นขอบดำเล็กน้อยเพื่อชดเชยความแตกต่างเล็กๆ น้อยๆ ในรูปทรงเรขาคณิตของหน้าจอเป็นสิ่งที่ยอมรับได้

VX-U3 CR-5 แอปจัดการการเปลี่ยนการวางแนวการแสดงผลและการพับ และกางอุปกรณ์อย่างรวดเร็วได้อย่างถูกต้องโดยไม่มีปัญหาการแสดงผลและไม่สูญเสียสถานะ
คุณภาพของภาพ VX-V1 CR-all

แอปแสดงกราฟิก ข้อความ รูปภาพ และองค์ประกอบ UI อื่นๆ โดยไม่มีการบิดเบือน เบลอ หรือเป็นพิกเซลที่สังเกตเห็นได้ชัด

  1. แอปควรใช้ Vector Drawables หากเป็นไปได้
  2. แอปมีกราฟิกคุณภาพสูงสำหรับขนาดหน้าจอและรูปแบบของอุปกรณ์ทั้งหมดที่กำหนดเป้าหมาย
  3. ไม่เห็นการลบรอยหยักที่ขอบของเมนู ปุ่ม และองค์ประกอบอื่นๆ ของ UI
VX-V2 CR-all

แอปจะแสดงข้อความและบล็อกข้อความในลักษณะที่ยอมรับได้สำหรับแต่ละภาษาที่แอปนั้นรองรับ

  1. การจัดวางเป็นที่ยอมรับในรูปแบบของอุปกรณ์ที่รองรับทั้งหมด
  2. ไม่มีตัวอักษรหรือคำที่ถูกตัดออก
  3. ไม่มีการตัดคำที่ไม่เหมาะสมภายในปุ่มหรือไอคอน
  4. มีระยะห่างที่เพียงพอระหว่างข้อความกับองค์ประกอบโดยรอบ
VX-V3 CR-all เนื้อหาของแอปและเนื้อหาเว็บทั้งหมดที่แอปอ้างอิงรองรับธีมมืด
การช่วยเหลือพิเศษ VX-A1 CR-all

เป้าหมายการสัมผัสควรมีขนาดอย่างน้อย 48dp ดูข้อมูลเพิ่มเติม

VX-A2 CR-all

ข้อความและเนื้อหาพื้นหน้าของแอปควรมีอัตราส่วนคอนทราสต์ของสีที่สูงเพียงพอ กับพื้นหลัง

  • 3.0:1 สำหรับข้อความ / กราฟิกขนาดใหญ่
  • 4.5:1 สำหรับข้อความขนาดเล็ก (ข้อความที่มีขนาดเล็กกว่า 18pt หรือหากข้อความเป็นตัวหนาและมีขนาดเล็กกว่า 14pt)

ดูข้อมูลเพิ่มเติมเกี่ยวกับสีและคอนทราสต์

VX-A3 CR-all อธิบายองค์ประกอบ UI แต่ละรายการ ยกเว้น TextView โดยใช้ contentDescription

ฟังก์ชันการทำงาน

แอปของคุณควรใช้รูปแบบฟังก์ชันการทำงานตามที่คาดไว้

พื้นที่ รหัส การทดสอบ คำอธิบาย
เสียง FN-A1 CR-1
CR-8
เสียงจะกลับมาเล่นต่อเมื่อแอปกลับมาอยู่เบื้องหน้า หรือจะแจ้งให้ผู้ใช้ทราบว่าการเล่นอยู่ในสถานะหยุดชั่วคราว
FN-A2 CR-1
CR-2
CR-8
หากการเล่นเสียงเป็นฟีเจอร์หลัก แอปควรรองรับการเล่นในเบื้องหลัง
FN-A3 CR-0

เมื่อผู้ใช้เริ่มเล่นเสียง แอปควรทำอย่างใดอย่างหนึ่งต่อไปนี้ภายใน 1 วินาที

  1. เริ่มเล่นเสียง
  2. แสดงตัวบ่งชี้ด้วยภาพว่าระบบกำลังเตรียมข้อมูลเสียง
FN-A4 CR-0 แอปควรร้องขอโฟกัสเสียงเมื่อเริ่มเล่นเสียงและละทิ้งโฟกัสเสียงเมื่อหยุดเล่น
FN-A5 CR-0 แอปควรจัดการคำขอโฟกัสเสียงของแอปอื่นๆ ตัวอย่างเช่น แอปอาจลดระดับเสียงการเล่นเมื่อแอปอื่นเล่นคำพูด
สื่อ FN-M1 CR-0
CR-6
CR-8
หากแอปเล่นเสียงในเบื้องหลัง แอปต้องสร้างการแจ้งเตือนที่มีรูปแบบ MediaStyle
FN-M2 CR-0 หากแอปเล่นวิดีโอได้ แอปควรจะรองรับการเล่นแบบการแสดงภาพซ้อนภาพ
FN-M3 CR-0 หากแอปเข้ารหัสวิดีโอ แอปควรเข้ารหัสโดยใช้มาตรฐานการบีบอัดวิดีโอ HEVC
การแชร์ FN-S1 CR-0 แอปควรใช้ Sharesheet ของ Android เมื่อแชร์เนื้อหา โดยสามารถแนะนำเป้าหมายที่โซลูชันที่กำหนดเองใช้ไม่ได้
บริการที่ทำงานอยู่เบื้องหลัง FN-B1 CR-6 แอปจะหลีกเลี่ยงการเรียกใช้บริการในเบื้องหลังเป็นเวลานานโดยไม่จำเป็น ระบบจะใช้ข้อจำกัดต่างๆ กับบริการที่ทำงานอยู่เบื้องหลังเพื่อให้มั่นใจว่าอุปกรณ์ของผู้ใช้จะทำงานได้อย่างราบรื่น การใช้งานบริการในเบื้องหลังต่อไปนี้ไม่ถือเป็นการใช้งานที่ดี
  • การรักษาการเชื่อมต่อเครือข่ายสำหรับการแจ้งเตือน
  • การรักษาการเชื่อมต่อบลูทูธ
  • เปิด GPS ไว้

ดูวิธีเลือกโซลูชันที่เหมาะสมกับงานของคุณ

ประสิทธิภาพและความเสถียร

แอปควรมีประสิทธิภาพ ความเสถียร ความเข้ากันได้ และ การตอบสนองอย่างรวดเร็วตามที่ผู้ใช้คาดหวัง

พื้นที่ รหัส การทดสอบ คำอธิบาย
ความเสถียร PS-S1 CR-all
SD-1
แอปไม่ขัดข้องหรือ บล็อกเธรด UI ซึ่งทำให้เกิดข้อผิดพลาด ANR (Android Not Responding) ใช้รายงานก่อนการเปิดตัวของ Google Play เพื่อระบุปัญหาด้านความเสถียรที่อาจเกิดขึ้น หลังจากที่ติดตั้งใช้งานแล้ว โปรด ดูหน้า Android Vitals ใน Google Play Console สำหรับนักพัฒนาแอป
ประสิทธิภาพ PS-P1 CR-all
SD-1
แอปโหลดได้อย่างรวดเร็ว หรือแสดงความคิดเห็นบนหน้าจอต่อผู้ใช้ (ตัวบ่งชี้ความคืบหน้าหรือคิวที่คล้ายกัน) หากแอปใช้เวลานานกว่า 2 วินาทีในการโหลด
PS-P2 CR-all
SD-1
แอปควรแสดงผลเฟรมทุกๆ 16 มิลลิวินาทีเพื่อให้ได้ 60 เฟรมต่อวินาที นักพัฒนาแอปสามารถใช้ตัวเลือกการแสดงผล HWUI ตามโปรไฟล์ในการทดสอบได้ หากมีปัญหา เครื่องมือจะช่วยวินิจฉัยการแสดงผลช้า
PS-P3 PM-1 เมื่อเปิดใช้ StrictMode (ดูการทดสอบ StrictMode ด้านล่าง) จะไม่มีการกะพริบสีแดง (คำเตือนด้านประสิทธิภาพจาก StrictMode) ปรากฏขึ้นเมื่อทดสอบแอป การกะพริบสีแดงใดๆ แสดงถึงลักษณะการทำงานที่ไม่ถูกต้องเกี่ยวกับการจัดเก็บ การเข้าถึงเครือข่าย หรือหน่วยความจำรั่ว
SDK PS-T1 CR-0 แอปทำงานบนแพลตฟอร์ม Android เวอร์ชันสาธารณะล่าสุดโดยไม่ขัดข้องหรือส่งผลกระทบอย่างรุนแรงต่อฟังก์ชันหลัก
PS-T2 SP-1 แอปกำหนดเป้าหมายเป็น Android SDK ล่าสุดที่จำเป็นเพื่อให้สอดคล้องกับข้อกำหนดของ Google Play โดยการตั้งค่า targetSdk
PS-T3 SP-1 แอปสร้างขึ้นด้วย Android SDK ล่าสุดโดยการตั้งค่า compileSdk
PS-T4 SP-2
SP-3
SDK ของ Google หรือของบุคคลที่สามที่ใช้เป็นเวอร์ชันล่าสุด การปรับปรุง SDK เหล่านี้ เช่น ความเสถียร ความเข้ากันได้ หรือความปลอดภัย ควรพร้อมให้บริการแก่ผู้ใช้ในเวลาที่เหมาะสม

สำหรับ SDK ของ Google ให้พิจารณาใช้ SDK ที่ขับเคลื่อนโดยบริการ Google Play เมื่อพร้อมใช้งาน SDK เหล่านี้สามารถใช้งานร่วมกับเวอร์ชันก่อนหน้าได้ รับการอัปเดตอัตโนมัติ ลดขนาดแพ็กเกจแอป และใช้ทรัพยากรในอุปกรณ์ได้อย่างมีประสิทธิภาพ

นักพัฒนาแอปมีหน้าที่รับผิดชอบต่อโค้ดเบสทั้งหมดของแอป ซึ่งรวมถึง SDK ของบุคคลที่สามที่ใช้

PS-T5 SP-3 แอปไม่ได้ใช้อินเทอร์เฟซที่ไม่ใช่ SDK
PS-T6 SP-2 ไม่มีการรวมไลบรารีการแก้ไขข้อบกพร่องไว้ในแอปเวอร์ชันที่ใช้งานจริง ซึ่งอาจทำให้เกิดปัญหาด้านประสิทธิภาพและความปลอดภัย
แบตเตอรี่ PS-B1 BA-1 แอปนี้รองรับฟีเจอร์การจัดการพลังงานที่เปิดตัวใน Android 6.0 (โหมดพักและโหมดสแตนด์บายของแอป) อย่างเหมาะสม ในกรณีที่การจัดการพลังงานขัดขวางฟังก์ชันหลัก มีเพียงแอปที่มีคุณสมบัติเท่านั้นที่ขอรับการยกเว้นได้ ดูการรองรับ Use Case อื่นๆ ใน Doze และสแตนด์บายแอป

ในระหว่างการพัฒนา นักพัฒนาแอปสามารถทดสอบลักษณะการทำงานของโหมดสแตนด์บายของแอปและโหมดพักโดยใช้คำสั่ง ADB เหล่านี้

ในแง่ของการใช้แบตเตอรี่ นักพัฒนาแอปสามารถใช้เครื่องมือ Power Profiler ของ Android Studio หรือ Battery Historian ร่วมกับ งานที่วางแผนไว้ในเบื้องหลังเพื่อวินิจฉัยการใช้แบตเตอรี่ที่ไม่คาดคิด

ความเป็นส่วนตัวและความปลอดภัย

แอปของคุณควรจัดการข้อมูลผู้ใช้และข้อมูลส่วนบุคคลอย่างปลอดภัย โดยมีสิทธิ์ในระดับที่เหมาะสม

นอกจากรายการตรวจสอบนี้แล้ว แอปพลิเคชันที่เผยแพร่ใน Google Play Store ต้องเป็นไปตามนโยบายข้อมูลผู้ใช้เพื่อปกป้องความเป็นส่วนตัวของผู้ใช้ด้วย

พื้นที่ รหัส การทดสอบ คำอธิบาย
สิทธิ์ SC-P1 SC-4 แอปขอสิทธิ์ในจำนวนน้อยที่สุดเท่าที่จำเป็นเพื่อรองรับกรณีการใช้งานที่กำลังดำเนินการอยู่ สำหรับสิทธิ์บางอย่าง เช่น ตำแหน่ง ให้ใช้ตำแหน่งคร่าวๆ แทนตำแหน่งที่แน่นอนหากเป็นไปได้
SC-P2

แอปขอสิทธิ์เข้าถึงข้อมูลที่ละเอียดอ่อน (เช่น SMS, บันทึกการโทร หรือ ตำแหน่ง) หรือบริการที่ต้องเสียเงิน (เช่น โปรแกรมโทรศัพท์หรือ SMS) เฉพาะเมื่อเกี่ยวข้องโดยตรงกับกรณีการใช้งานหลัก ของแอป ควรเปิดเผยผลกระทบที่เกี่ยวข้องกับสิทธิ์เหล่านี้ต่อผู้ใช้อย่างชัดเจน

ทั้งนี้ขึ้นอยู่กับวิธีที่คุณใช้สิทธิ์ อาจมีวิธีอื่น ในการตอบสนอง Use Case ของแอปโดยไม่ต้องอาศัยการเข้าถึงข้อมูลที่ละเอียดอ่อน ตัวอย่างเช่น แทนที่จะ ขอสิทธิ์ที่เกี่ยวข้องกับรายชื่อติดต่อของผู้ใช้ การขอสิทธิ์เข้าถึงอาจเหมาะสมกว่า โดยใช้Intent โดยนัย

SC-P3 CR-0 แอปขอสิทธิ์รันไทม์ในบริบทเมื่อมีการขอฟังก์ชันการทำงาน แทนที่จะขอตั้งแต่แรกในระหว่างการเริ่มต้นแอป
SC-P4 CR-0

แอปจะสื่อสารอย่างชัดเจนว่าเหตุใดจึงต้องมีสิทธิ์บางอย่าง หรือทำตามขั้นตอนที่แนะนำเพื่อ อธิบายเหตุผลที่ต้องมีสิทธิ์

SC-P5 CR-0 แอปควรลดระดับการทำงานอย่างราบรื่นเมื่อ ผู้ใช้ปฏิเสธหรือเพิกถอนสิทธิ์ แอปไม่ควรป้องกันไม่ให้ผู้ใช้เข้าถึงแอปโดยสิ้นเชิง
ข้อมูลและไฟล์ SC-DF1 SC-1 ระบบจะจัดเก็บข้อมูลที่ละเอียดอ่อนทั้งหมดไว้ในที่เก็บข้อมูลภายในของแอป
SC-DF2 SC-10 ระบบจะไม่บันทึกข้อมูลส่วนบุคคลหรือข้อมูลที่ละเอียดอ่อนของผู้ใช้ลงในบันทึกของระบบหรือบันทึกเฉพาะแอป
SC-DF3 แอปไม่ได้ใช้รหัสฮาร์ดแวร์ที่รีเซ็ตไม่ได้ เช่น IMEI เพื่อวัตถุประสงค์ในการระบุตัวตน
ข้อมูลระบุตัวตน SC-ID1 CR-0 แอปจะให้คำแนะนำในการป้อนข้อความอัตโนมัติสำหรับข้อมูลเข้าสู่ระบบบัญชีและข้อมูลที่มีความละเอียดอ่อนอื่นๆ เช่น ข้อมูลบัตรเครดิต ที่อยู่จริง และหมายเลขโทรศัพท์
SC-ID2 CR-0 ผสานรวมเครื่องมือจัดการข้อมูลเข้าสู่ระบบสำหรับ Android เพื่อ ประสบการณ์การลงชื่อเข้าใช้ที่ราบรื่นซึ่งรวมการรองรับพาสคีย์ ข้อมูลประจำตัวแบบรวม และ รหัสผ่านแบบเดิม
SC-ID3 CR-0 แอปนี้รองรับการตรวจสอบสิทธิ์ด้วยไบโอเมตริกเพื่อปกป้องธุรกรรมทางการเงินหรือข้อมูลที่ละเอียดอ่อน เช่น เอกสารสำคัญของผู้ใช้
คอมโพเนนต์ของแอป SC-AC1 SC-5

แอปจะตั้งค่าแอตทริบิวต์ android:exported อย่างชัดเจนสำหรับกิจกรรม บริการ BroadcastReceiver ทั้งหมด และโดยเฉพาะอย่างยิ่งผู้ให้บริการเนื้อหา

เฉพาะคอมโพเนนต์ของแอปพลิเคชันที่แชร์ข้อมูลกับแอปอื่นๆ หรือคอมโพเนนต์ที่แอปอื่นๆ ควรเรียกใช้เท่านั้นที่จะส่งออก

SC-AC2 CR-0
SC-4

เจตนาและการออกอากาศทั้งหมดเป็นไปตามแนวทางปฏิบัติแนะนำ

  1. ใช้ Intent ที่ชัดเจนหากกำหนดแอปพลิเคชันปลายทางไว้อย่างชัดเจน
  2. ใช้ Intent เพื่อเลื่อนการให้สิทธิ์ไปยังแอปอื่นที่มีสิทธิ์อยู่แล้ว
  3. แชร์ข้อมูลในแอปอย่างปลอดภัย
  4. ระบบจะยืนยันเจตนาที่มีเพย์โหลดก่อนใช้งาน
  5. หากต้องการส่ง Intent ไปยังแอปอื่นเพื่อให้แอปที่รับเรียกใช้และคาดหวังการเรียกกลับในแอปที่เรียกใช้ อย่ารวม Intent ที่ซ้อนกันไว้ในส่วนเสริม ใช้ PendingIntent
  6. เมื่อตั้งค่า PendingIntent ให้ตั้งค่าแฟล็กที่เปลี่ยนแปลงไม่ได้อย่างชัดเจน หากเกี่ยวข้อง
SC-AC3 SC-3 คอมโพเนนต์ทั้งหมดที่แชร์เนื้อหาระหว่างแอปจะใช้ android:protectionLevel="signature" สำหรับสิทธิ์ที่กำหนดเอง ซึ่งรวมถึงกิจกรรม บริการ เครื่องรับสัญญาณออกอากาศ และโดยเฉพาะอย่างยิ่งผู้ให้บริการเนื้อหา

แอปไม่ควรอาศัยการเข้าถึงรายการแพ็กเกจที่ติดตั้ง โดยมีการจำกัดการเข้าถึงตั้งแต่ Android 11 เป็นต้นไป

เครือข่าย SC-N1 SC-9 ระบบจะส่งการรับส่งข้อมูลเครือข่ายทั้งหมดผ่าน SSL
SC-N2 SC-6 แอปพลิเคชันประกาศการกำหนดค่าความปลอดภัยของเครือข่าย
SC-N3 หากแอปพลิเคชันใช้บริการ Google Play ระบบจะเริ่มต้นผู้ให้บริการด้านความปลอดภัยเมื่อแอปพลิเคชันเริ่มต้น
WebView SC-W1 SC-6 อย่าใช้ setAllowUniversalAccessFromFileURLs() เพื่อเข้าถึงเนื้อหาในเครื่อง แต่ให้ใช้ WebViewAssetLoader แทน
SC-W2 SC-7 WebView ไม่ควรใช้ addJavascriptInterface() กับเนื้อหาที่ไม่น่าเชื่อถือ

ใน Android 6.0 ขึ้นไป ให้ใช้ช่องทางข้อความ HTML แทน

การลงมือปฏิบัติ SC-E1 แอปไม่ได้โหลดแบบไดนามิกโค้ดจากภายนอก APK ของแอป นักพัฒนาแอปควรใช้ Android App Bundle ซึ่งรวมถึงการนำส่งฟีเจอร์ Play และ Play Asset Delivery

ตั้งแต่เดือนสิงหาคม 2021 เป็นต้นไป แอปใหม่ทั้งหมดใน Google Play Store จะต้องใช้ Android App Bundle

วิทยาการเข้ารหัสลับ SC-C1 แอปใช้อัลกอริทึมการเข้ารหัสที่รัดกุมซึ่งแพลตฟอร์มจัดหาให้และตัวสร้างหมายเลขแบบสุ่ม นอกจากนี้ แอปยังไม่ได้ใช้อัลกอริทึมที่กำหนดเอง

Google Play

ตรวจสอบว่าแอปของคุณเผยแพร่ใน Google Play ได้

พื้นที่ รหัส การทดสอบ คำอธิบาย
นโยบาย GP-P1 GP-all แอปปฏิบัติตามข้อกำหนดของนโยบายเนื้อหาสำหรับนักพัฒนาแอป Google Play อย่างเคร่งครัด และไม่มีเนื้อหาไม่เหมาะสม ไม่ใช้ทรัพย์สินทางปัญญาหรือแบรนด์ของผู้อื่น และอื่นๆ
GP-P2 GP-1 ตั้งค่าระดับความเหมาะสมของแอปอย่างเหมาะสมตามหลักเกณฑ์การจัดประเภทเนื้อหา
หน้ารายละเอียดแอป GP-D1 GP-1
GP-2

กราฟิกเด่นของแอปเป็นไปตามหลักเกณฑ์ที่ระบุไว้ในบทความสนับสนุนนี้ ตรวจสอบตามรายละเอียดต่อไปนี้

  1. ข้อมูลแอปมีภาพฟีเจอร์คุณภาพสูง
  2. กราฟิกเด่นไม่มีรูปภาพอุปกรณ์ ภาพหน้าจอ หรือข้อความขนาดเล็กที่อ่านไม่ออกเมื่อลดขนาดและแสดงบนหน้าจอขนาดเล็กที่สุดที่แอปกำหนดเป้าหมาย
  3. ภาพกราฟิกเด่นไม่คล้ายกับโฆษณา
GP-D2 GP-1 ภาพหน้าจอและวิดีโอของแอปต้องไม่แสดงหรืออ้างอิงถึงอุปกรณ์ที่ไม่ใช่ Android
GP-D3 GP-1 ภาพหน้าจอหรือวิดีโอของแอปไม่ได้แสดงเนื้อหาและประสบการณ์การใช้งานของแอปในลักษณะที่ทำให้เข้าใจผิด
การสนับสนุนผู้ใช้ GP-X1 GP-1 เราจะแก้ไขข้อบกพร่องที่ผู้ใช้รายงานในแท็บรีวิวของหน้า Google Play หากสามารถทำซ้ำได้และเกิดขึ้นในอุปกรณ์ต่างๆ จำนวนมาก หากพบข้อบกพร่องในอุปกรณ์เพียงไม่กี่เครื่อง คุณก็ควรแก้ไขข้อบกพร่องนั้นหากอุปกรณ์ดังกล่าวเป็นอุปกรณ์ยอดนิยมหรือเป็นอุปกรณ์ใหม่

การตั้งค่าสภาพแวดล้อมการทดสอบ

เราขอแนะนำให้ทำดังนี้เพื่อวัตถุประสงค์ในการตั้งค่าสภาพแวดล้อมการทดสอบสำหรับรายการตรวจสอบนี้

  • มุ่งเน้นการทดสอบโปรแกรมจำลอง - โปรแกรมจำลอง Android เป็นวิธีที่ยอดเยี่ยมในการทดสอบแอปของคุณใน Android เวอร์ชันต่างๆ และความละเอียดหน้าจอต่างๆ คุณควรตั้งค่าอุปกรณ์จำลอง (AVD) เพื่อแสดงถึงรูปแบบฮาร์ดแวร์และซอฟต์แวร์ที่ใช้ร่วมกันมากที่สุดสำหรับฐานผู้ใช้เป้าหมาย นอกเหนือจากการทดสอบสำหรับโทรศัพท์แล้ว เราขอแนะนำให้คุณทดสอบอุปกรณ์รูปแบบอื่นๆ โดยใช้โปรแกรมจำลองต่อไปนี้อย่างน้อย
    • อุปกรณ์แบบพับ - 7.6 นิ้วแบบพับเข้าพร้อมจอแสดงผลด้านนอก (แสดงในส่วนโทรศัพท์ใน AVD Manager)
    • แท็บเล็ต - Pixel C 9.94 นิ้ว (2,560 x 1,800 พิกเซล)
    • สำหรับการทดสอบการแจ้งเตือนของแอปบนอุปกรณ์เคลื่อนที่ ให้จับคู่อุปกรณ์เคลื่อนที่ / โปรแกรมจำลองกับโปรแกรมจำลอง Wear OS - Wear OS Round 1.84”
  • อุปกรณ์ฮาร์ดแวร์ - สภาพแวดล้อมการทดสอบควรมีอุปกรณ์ฮาร์ดแวร์จริงจำนวนเล็กน้อยซึ่งแสดงถึงรูปแบบที่สำคัญและชุดค่าผสมฮาร์ดแวร์/ซอฟต์แวร์ที่ผู้บริโภคใช้งานได้ในปัจจุบัน คุณไม่จำเป็นต้องทดสอบในอุปกรณ์ทุกเครื่องที่มีในตลาด แต่ควรเน้นที่อุปกรณ์ตัวแทนจำนวนเล็กน้อย แม้จะใช้อุปกรณ์เพียง 1 หรือ 2 เครื่องต่อรูปแบบก็ตาม
  • ห้องทดสอบอุปกรณ์ - คุณยังใช้บริการของบุคคลที่สาม เช่น Firebase Test Lab เพื่อทดสอบแอปในอุปกรณ์ที่หลากหลายมากขึ้นได้ด้วย
  • ทดสอบด้วย Android เวอร์ชันล่าสุด - นอกเหนือจากการทดสอบ Android เวอร์ชันที่เป็นตัวแทนสำหรับฐานผู้ใช้เป้าหมายแล้ว คุณควรทดสอบกับ Android เวอร์ชันล่าสุด (ปัจจุบันคือ Android 14) เสมอ ซึ่งจะช่วยให้มั่นใจได้ว่าการเปลี่ยนแปลงลักษณะการทำงานล่าสุดจะไม่ส่งผลเสียต่อประสบการณ์ของผู้ใช้

ดูคำแนะนำที่ครอบคลุมมากขึ้นเกี่ยวกับการทดสอบ รวมถึงการทดสอบหน่วย การทดสอบการผสานรวม และการทดสอบ UI ได้ที่พื้นฐานการทดสอบ Android

ขั้นตอนการทดสอบ

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

ประเภท ทดสอบ คำอธิบาย
Core Suite CR-0

ไปยังส่วนต่างๆ ของแอป ซึ่งรวมถึงหน้าจอ กล่องโต้ตอบ การตั้งค่า และโฟลว์ของผู้ใช้ทั้งหมด

  1. หากแอปพลิเคชันอนุญาตให้แก้ไขหรือสร้างเนื้อหา เล่นเกม หรือเล่นสื่อ โปรดทดสอบโฟลว์เหล่านั้น
  2. ขณะทดสอบแอป ให้ลองขัดจังหวะจากแอปอื่นๆ เช่น การรับการแจ้งเตือนหรือการโทร และใช้การเปลี่ยนแปลงชั่วคราวกับแอตทริบิวต์ของอุปกรณ์ เช่น การเชื่อมต่อเครือข่าย ฟังก์ชันแบตเตอรี่ ความพร้อมใช้งานของ GPS และโหลดของระบบ
  3. ป้อนและทดสอบขั้นตอนการซื้อในแอปทั้งหมด
CR-1 จากหน้าจอแอปแต่ละหน้าจอ ให้กดปุ่มหน้าแรกของอุปกรณ์หรือปัดขึ้นในการนำทางด้วยท่าทางสัมผัส แล้วเปิดแอปอีกครั้งจากหน้าจอ "แอปทั้งหมด"
CR-2 จากหน้าจอของแต่ละแอป ให้สลับไปใช้แอปอื่นที่กำลังทำงานอยู่ แล้วกลับมาที่แอปที่อยู่ระหว่างการทดสอบโดยใช้ตัวสลับแอปที่ใช้ล่าสุด
CR-3 จากหน้าจอแอปแต่ละหน้าจอ (และกล่องโต้ตอบ) ให้กดปุ่มย้อนกลับหรือใช้ท่าทางสัมผัสการปัดกลับ
CR-5 จากหน้าจอแอปแต่ละหน้า ให้หมุนอุปกรณ์ไปมาระหว่างการวางแนวแนวนอนกับแนวตั้ง และสถานะพับกับกางออกอย่างน้อย 3 ครั้ง
CR-6 เปลี่ยนไปใช้แอปอื่นเพื่อส่งแอปทดสอบไปไว้เบื้องหลัง ไปที่การตั้งค่าและตรวจสอบว่าแอปทดสอบมีบริการใดที่ทำงานขณะอยู่ในเบื้องหลังหรือไม่ ใน Android 4.0 ขึ้นไป ให้ไปที่หน้าจอแอปและค้นหาแอปในแท็บ "กำลังทำงาน"
CR-7 กดปุ่มเปิด/ปิดเพื่อให้อุปกรณ์เข้าสู่โหมดสลีป จากนั้นกดปุ่มเปิด/ปิดอีกครั้งเพื่อปลุกหน้าจอ
CR-8 ตั้งค่าการล็อกหน้าจอในอุปกรณ์ กดปุ่มเปิด/ปิดเพื่อให้อุปกรณ์เข้าสู่โหมดสลีป (ซึ่งจะล็อกอุปกรณ์) จากนั้นกดปุ่มเปิด/ปิดอีกครั้งเพื่อปลุกหน้าจอและปลดล็อกอุปกรณ์
CR-9 ทริกเกอร์และสังเกตการแจ้งเตือนทุกประเภทที่แอปแสดงได้ในลิ้นชักการแจ้งเตือน ขยายการแจ้งเตือนในกรณีที่เกี่ยวข้อง (Android 4.1 ขึ้นไป) แล้วแตะการดำเนินการทั้งหมดที่พร้อมใช้งาน
CR-10 ดูการรองรับ Use Case อื่นๆ ใน Doze และสแตนด์บายแอป
ติดตั้งในการ์ด SD SD-1 ทำซ้ำ Core Suite โดยติดตั้งแอปในการ์ด SD ของอุปกรณ์ (หากแอปนี้รองรับวิธีการติดตั้งนี้)

หากต้องการย้ายแอปไปยังการ์ด SD ให้ไปที่การตั้งค่า > ข้อมูลแอป > ย้ายไปยังการ์ด SD

ประสิทธิภาพและความเสถียร SP-1 ตรวจสอบไฟล์ Manifest ของ Android และการกำหนดค่าบิลด์เพื่อให้แน่ใจว่าแอปพลิเคชันสร้างขึ้นเทียบกับ SDK เวอร์ชันล่าสุดที่พร้อมใช้งาน (targetSdk และ compileSdk)
SP-2 ตรวจสอบไฟล์ build.gradle เพื่อหาการอ้างอิงที่ล้าสมัย
SP-3 ใช้เครื่องมือ Lint ของ Android Studio เพื่อตรวจหาการใช้อินเทอร์เฟซที่ไม่ได้อยู่ใน SDK นอกจากนี้ ยังมีวิธีการทดสอบทางเลือกอื่นๆ ด้วย
การตรวจสอบประสิทธิภาพ PM-1 ทำซ้ำ Core Suite โดยเปิดใช้การจัดโปรไฟล์ StrictMode

ให้ความสำคัญกับการเก็บขยะและผลกระทบต่อประสบการณ์ของผู้ใช้

แบตเตอรี่ BA-1 ทำซ้ำCore Suite ในรอบ Doze และสแตนด์บายแอป

โปรดสังเกตการปลุก ตัวจับเวลา การแจ้งเตือน การซิงค์ และอื่นๆ อย่างใกล้ชิด ดูข้อกำหนดและหลักเกณฑ์ได้ที่การทดสอบด้วย Doze และสแตนด์บายแอป

ความปลอดภัย SC-1 ตรวจสอบข้อมูลทั้งหมดที่จัดเก็บไว้ในพื้นที่เก็บข้อมูลภายนอก
SC-2 ตรวจสอบวิธีจัดการและประมวลผลข้อมูลที่โหลดจากพื้นที่เก็บข้อมูลภายนอก
SC-3 ตรวจสอบผู้ให้บริการเนื้อหาทั้งหมดที่กำหนดไว้ในไฟล์ AndroidManifest.xml ตรวจสอบว่าผู้ให้บริการแต่ละรายมี protectionLevel ที่เหมาะสม
SC-4 ตรวจสอบสิทธิ์ทั้งหมดที่แอปของคุณต้องใช้ในไฟล์ Manifest, ที่รันไทม์ และในหน้าจอการตั้งค่าแอป (การตั้งค่า > ข้อมูลแอป) บนอุปกรณ์
SC-5 ตรวจสอบคอมโพเนนต์ของแอปพลิเคชันทั้งหมดที่กำหนดไว้ในไฟล์ Android Manifest เพื่อดูสถานะการส่งออกที่เหมาะสม ต้องตั้งค่าพร็อพเพอร์ตี้ที่ส่งออกอย่างชัดเจนสำหรับคอมโพเนนต์ทั้งหมด
SC-6 ตรวจสอบการกำหนดค่าความปลอดภัยของเครือข่ายของแอปเพื่อให้แน่ใจว่าการตรวจสอบ Lint ในการกำหนดค่าไม่ล้มเหลว
SC-7 สำหรับ WebView แต่ละรายการ ให้ไปที่หน้าที่ต้องใช้ JavaScript
SC-8 ในแต่ละ WebView ให้พยายามไปยังเว็บไซต์และเนื้อหาที่แอปไม่ได้โหลดโดยตรง
SC-9 ประกาศการกำหนดค่าความปลอดภัยของเครือข่ายที่ปิดใช้การเข้าชมแบบข้อความธรรมดา (Cleartext) แล้วทดสอบแอป
SC-10 เรียกใช้แอปพลิเคชันและใช้ฟังก์ชันหลักทั้งหมดขณะสังเกตบันทึกของอุปกรณ์ ไม่ควรบันทึกข้อมูลส่วนตัวของผู้ใช้
Google Play GP-1 ลงชื่อเข้าใช้ Google Play Console เพื่อตรวจสอบโปรไฟล์นักพัฒนาแอป คำอธิบายแอป ภาพหน้าจอ กราฟิกฟีเจอร์ การจัดประเภทเนื้อหา และความคิดเห็นของผู้ใช้
GP-2 ดาวน์โหลดภาพฟีเจอร์และภาพหน้าจอ แล้วลดขนาดให้ตรงกับขนาดการแสดงผลในอุปกรณ์และรูปแบบของอุปกรณ์ที่คุณกำหนดเป้าหมาย
GP-3 ตรวจสอบชิ้นงานกราฟิก สื่อ ข้อความ ไลบรารีโค้ด และเนื้อหาอื่นๆ ทั้งหมดที่แพ็กเกจไว้ในการดาวน์โหลดแอปหรือไฟล์ส่วนขยาย

การทดสอบด้วย StrictMode

สําหรับการทดสอบประสิทธิภาพ เราขอแนะนําให้เปิดใช้ StrictMode ในแอปและใช้เพื่อตรวจหาการดําเนินการที่อาจส่งผลต่อประสิทธิภาพ การเข้าถึงเครือข่าย การอ่าน/เขียนไฟล์ และอื่นๆ มองหาการดำเนินการที่อาจมีปัญหาทั้งในเทรดหลักและในเทรดอื่นๆ

คุณสามารถตั้งค่านโยบายการตรวจสอบต่อเธรดได้โดยใช้ StrictMode.ThreadPolicy.Builder และเปิดใช้การตรวจสอบที่รองรับทั้งหมดใน ThreadPolicyโดยใช้ detectAll()

โปรดตรวจสอบว่าได้เปิดใช้การแจ้งเตือนด้วยภาพเกี่ยวกับการละเมิดนโยบายสำหรับ ThreadPolicy โดยใช้ penaltyFlashScreen()