วิธีที่มีประโยชน์ในการประเมินความเป็นเลิศของแอปคือการดูเวิร์กโฟลว์ในแอปและประเมินความราบรื่นและความปลอดภัยของประสบการณ์การใช้งานแอป
รายการตรวจสอบนี้กำหนดชุดเกณฑ์คุณภาพหลักและการทดสอบที่เกี่ยวข้องเพื่อช่วยคุณประเมิน คุณภาพของแอป เกณฑ์บางอย่างอาจมองข้ามได้ง่าย และการทดสอบจะช่วยให้คุณไม่ลืม ที่จะรวมเกณฑ์เหล่านั้นไว้ในแผนการทดสอบ
รายการตรวจสอบจะเน้นคุณภาพขั้นต่ำที่แอปทั้งหมดควรมี การทดสอบของคุณน่าจะ ไปไกลกว่าที่อธิบายไว้ที่นี่
รายการแต่ละข้อในรายการตรวจสอบคุณภาพจะมีรหัสที่ไม่ซ้ำกัน ซึ่งคุณอาจเห็นว่ามีประโยชน์เมื่อใช้ในการ สื่อสารกับทีม นอกจากนี้ คุณยังดูเวอร์ชันก่อนหน้า ของหลักเกณฑ์เหล่านี้ได้ด้วย
ประสบการณ์การใช้งานแบบเห็นภาพ
แอปควรมอบการออกแบบภาพและรูปแบบการโต้ตอบของ Android มาตรฐาน ในกรณีที่เหมาะสม เพื่อมอบประสบการณ์ของผู้ใช้ที่สอดคล้องและราบรื่น
| พื้นที่ | รหัส | การทดสอบ | คำอธิบาย |
|---|---|---|---|
| การนำทาง | VX-N1 | CR-3 | แอปนี้รองรับการไปยังส่วนต่างๆ ด้วยปุ่มย้อนกลับมาตรฐาน และไม่ได้ใช้ข้อความแจ้ง "ปุ่มย้อนกลับ" ที่กำหนดเองบนหน้าจอ |
| VX-N2 | CR-3 | แอปนี้รองรับการนำทางด้วยท่าทางสัมผัสสำหรับการย้อนกลับ / ไปที่หน้าจอหลัก | |
| VX-N3 | CR-1 CR-3 CR-5 |
แอปจะเก็บและกู้คืนสถานะผู้ใช้หรือสถานะของแอปได้อย่างถูกต้อง แอปจะเก็บสถานะผู้ใช้หรือสถานะของแอปไว้เมื่อออกจากเบื้องหน้า และไม่ป้องกันข้อมูลสูญหายโดยไม่ตั้งใจเนื่องจากการนําทางย้อนกลับและการเปลี่ยนแปลงสถานะอื่นๆ เมื่อกลับมาที่ส่วนหน้า แอปควรกู้คืนสถานะที่เก็บไว้และธุรกรรมแบบมีสถานะที่สำคัญซึ่งรอดำเนินการ ตัวอย่างเช่น การเปลี่ยนแปลงช่องที่แก้ไขได้ ความคืบหน้าของเกม เมนู วิดีโอ และส่วนอื่นๆ ของแอปหรือเกม
|
|
| การแจ้งเตือน | VX-S1 | CR-9 | การแจ้งเตือนเป็นไปตามหลักเกณฑ์ด้านการออกแบบ โดยเฉพาะอย่างยิ่งในเรื่องต่อไปนี้
|
| VX-S2 | CR-9 | สำหรับแอปรับส่งข้อความ แอปโซเชียล และการสนทนา
| |
| UI และกราฟิก | VX-U1 | CR-5 | แอปนี้รองรับการวางในแนวนอนและแนวตั้ง รวมถึงสถานะของอุปกรณ์ที่พับและกางออก การวางแนวและสถานะการพับจะแสดงฟีเจอร์และการดำเนินการที่เหมือนกันโดยพื้นฐาน และรักษา ความเท่าเทียมกันของฟังก์ชันการทำงาน |
| VX-U2 | CR-5 | แอปจะเติมเต็มหน้าต่างแอปในทั้ง 2 แนว และไม่มีแถบดำเนื่องจาก การเปลี่ยนแปลงการกำหนดค่า ซึ่งรวมถึงการพับและกางอุปกรณ์ การเว้นขอบดำเล็กน้อยเพื่อชดเชยความแตกต่างเล็กๆ น้อยๆ ในรูปทรงเรขาคณิตของหน้าจอเป็นสิ่งที่ยอมรับได้ |
|
| VX-U3 | CR-5 | แอปจัดการการเปลี่ยนการวางแนวการแสดงผลและการพับ และกางอุปกรณ์อย่างรวดเร็วได้อย่างถูกต้องโดยไม่มีปัญหาการแสดงผลและไม่สูญเสียสถานะ | |
| คุณภาพของภาพ | VX-V1 | CR-all | แอปแสดงกราฟิก ข้อความ รูปภาพ และองค์ประกอบ UI อื่นๆ โดยไม่มีการบิดเบือน เบลอ หรือเป็นพิกเซลที่สังเกตเห็นได้ชัด
|
| VX-V2 | CR-all | แอปจะแสดงข้อความและบล็อกข้อความในลักษณะที่ยอมรับได้สำหรับแต่ละภาษาที่แอปนั้นรองรับ
|
|
| VX-V3 | CR-all | เนื้อหาของแอปและเนื้อหาเว็บทั้งหมดที่แอปอ้างอิงรองรับธีมมืด | |
| การช่วยเหลือพิเศษ | VX-A1 | CR-all | เป้าหมายการสัมผัสควรมีขนาดอย่างน้อย 48dp ดูข้อมูลเพิ่มเติม |
| VX-A2 | CR-all | ข้อความและเนื้อหาพื้นหน้าของแอปควรมีอัตราส่วนคอนทราสต์ของสีที่สูงเพียงพอ กับพื้นหลัง
ดูข้อมูลเพิ่มเติมเกี่ยวกับสีและคอนทราสต์ |
|
| 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 วินาที
|
|
| 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 | แอปจะหลีกเลี่ยงการเรียกใช้บริการในเบื้องหลังเป็นเวลานานโดยไม่จำเป็น ระบบจะใช้ข้อจำกัดต่างๆ กับบริการที่ทำงานอยู่เบื้องหลังเพื่อให้มั่นใจว่าอุปกรณ์ของผู้ใช้จะทำงานได้อย่างราบรื่น การใช้งานบริการในเบื้องหลังต่อไปนี้ไม่ถือเป็นการใช้งานที่ดี
|
ประสิทธิภาพและความเสถียร
แอปควรมีประสิทธิภาพ ความเสถียร ความเข้ากันได้ และ การตอบสนองอย่างรวดเร็วตามที่ผู้ใช้คาดหวัง
| พื้นที่ | รหัส | การทดสอบ | คำอธิบาย |
|---|---|---|---|
| ความเสถียร | 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 |
แอปจะตั้งค่าแอตทริบิวต์ เฉพาะคอมโพเนนต์ของแอปพลิเคชันที่แชร์ข้อมูลกับแอปอื่นๆ หรือคอมโพเนนต์ที่แอปอื่นๆ ควรเรียกใช้เท่านั้นที่จะส่งออก |
| SC-AC2 | CR-0 SC-4 |
เจตนาและการออกอากาศทั้งหมดเป็นไปตามแนวทางปฏิบัติแนะนำ
|
|
| 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 |
กราฟิกเด่นของแอปเป็นไปตามหลักเกณฑ์ที่ระบุไว้ในบทความสนับสนุนนี้ ตรวจสอบตามรายละเอียดต่อไปนี้
|
| 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 | ไปยังส่วนต่างๆ ของแอป ซึ่งรวมถึงหน้าจอ กล่องโต้ตอบ การตั้งค่า และโฟลว์ของผู้ใช้ทั้งหมด
|
| 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()