การทดสอบเป็นส่วนสำคัญของกระบวนการพัฒนาแอป โดยปกติแล้ว คุณจะเรียกใช้แอป ในโปรแกรมจำลองหรืออุปกรณ์เพื่อยืนยันด้วยตนเองว่าโค้ดทำงานตามที่คาดไว้ อย่างไรก็ตาม การทดสอบด้วยตนเองใช้เวลานาน มีโอกาสเกิดข้อผิดพลาด และมักจะจัดการได้ยากสำหรับแอปที่ทำงานบนหน้าจอและอุปกรณ์ที่มีขนาดต่างๆ ปัญหาของการทดสอบด้วยตนเองมักเกิดจากการใช้อุปกรณ์เครื่องเดียว ในการพัฒนา ด้วยเหตุนี้ ข้อผิดพลาดจึงอาจไม่สังเกตเห็นในอุปกรณ์อื่นๆ ที่มี รูปแบบต่างกัน
หากต้องการระบุการถดถอยในขนาดหน้าต่างและหน้าจอต่างๆ ให้ใช้ การทดสอบอัตโนมัติเพื่อยืนยันว่าลักษณะการทำงานและรูปลักษณ์ของแอป สอดคล้องกันในรูปแบบต่างๆ การทดสอบอัตโนมัติจะระบุปัญหาตั้งแต่เนิ่นๆ เพื่อลดความเสี่ยงของปัญหาที่ส่งผลต่อประสบการณ์ของผู้ใช้
สิ่งที่ต้องทดสอบ
เมื่อพัฒนา UI ที่สร้างขึ้นสำหรับหน้าจอและขนาดหน้าต่างต่างๆ ให้ใส่ใจเป็นพิเศษกับ 2 ด้านต่อไปนี้
- แอตทริบิวต์ภาพของคอมโพเนนต์และเลย์เอาต์แตกต่างกันอย่างไรใน หน้าต่างขนาดต่างๆ
- วิธีเก็บสถานะเมื่อมีการเปลี่ยนแปลงการกำหนดค่า
แอตทริบิวต์ภาพ
ไม่ว่าคุณจะปรับแต่ง UI สำหรับขนาดหน้าต่างต่างๆ หรือไม่ก็ตาม คุณควรตรวจสอบ ว่า UI แสดงอย่างถูกต้อง พิจารณาความกว้างและความสูงที่ กะทัดรัด ปานกลาง และขยาย ดูคลาสขนาดหน้าต่างเพื่อดูจุดพักที่แนะนำ

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

ก่อนอื่น ให้ทดสอบว่าแอปไม่ขัดข้องเมื่อมีการเปลี่ยนแปลงการกำหนดค่า ตรวจสอบว่า UI ทุกส่วนในแอปสามารถรองรับการหมุน การปรับขนาด หรือการพับได้ทุกรูปแบบ เนื่องจากการเปลี่ยนแปลงการกำหนดค่าจะสร้างกิจกรรมขึ้นมาใหม่โดยค่าเริ่มต้น ข้อขัดข้องบางอย่างจึงเกิดขึ้นเนื่องจากสมมติฐานเกี่ยวกับความต่อเนื่องของกิจกรรม
การทดสอบการเปลี่ยนแปลงการกำหนดค่าทำได้หลายวิธี แต่ในกรณีส่วนใหญ่ คุณจะทดสอบได้ 2 วิธีดังนี้
- ใน Compose ให้ใช้
StateRestorationTester
เพื่อจำลองการเปลี่ยนแปลงการกำหนดค่า อย่างมีประสิทธิภาพโดยไม่ต้องรีสตาร์ทกิจกรรม ดูข้อมูลเพิ่มเติมได้ในส่วนต่อไปนี้ - ในการทดสอบ UI เช่น Espresso หรือ Compose ให้จำลองการเปลี่ยนแปลงการกำหนดค่า
โดยการเรียกใช้
Activity.recreate()
โดยทั่วไปแล้ว คุณไม่จำเป็นต้องใช้อุปกรณ์อื่นเพื่อทดสอบการคืนค่าสถานะเมื่อมีการเปลี่ยนแปลงการกำหนดค่า เนื่องจากการเปลี่ยนแปลงการกำหนดค่าทั้งหมด ที่สร้างกิจกรรมขึ้นมาใหม่จะส่งผลกระทบที่คล้ายกัน อย่างไรก็ตาม การเปลี่ยนแปลงการกำหนดค่าบางอย่างอาจทริกเกอร์กลไกการคืนค่าสถานะที่แตกต่างกันในอุปกรณ์บางรุ่น
ตัวอย่างเช่น เมื่อผู้ใช้ดู UI แบบรายการ-รายละเอียดบนอุปกรณ์พับที่เปิดอยู่ และพับอุปกรณ์เพื่อเปลี่ยนไปใช้จอแสดงผลด้านหน้า โดยปกติแล้ว UI จะ เปลี่ยนไปที่หน้าแบบละเอียด การทดสอบอัตโนมัติควรครอบคลุมการกู้คืนสถานะ UI นี้ รวมถึงสถานะการนำทาง
หากต้องการทดสอบการเปลี่ยนแปลงการกำหนดค่าที่เกิดขึ้นในอุปกรณ์เมื่อเปลี่ยนจากจอแสดงผลหนึ่งไปยังอีกจอหนึ่ง หรือเข้าสู่โหมดหลายหน้าต่าง คุณมีตัวเลือกหลายอย่างดังนี้
- ปรับขนาดหน้าจอระหว่างการทดสอบโดยใช้อุปกรณ์ใดก็ได้ ในกรณีส่วนใหญ่ การดำเนินการนี้จะ ทริกเกอร์กลไกการคืนค่าสถานะทั้งหมดที่คุณต้องยืนยัน อย่างไรก็ตาม การทดสอบนี้ใช้ไม่ได้กับตรรกะที่ตรวจจับท่าทางเฉพาะใน อุปกรณ์พับได้ เนื่องจากท่าทางที่เปลี่ยนไปไม่ได้ทริกเกอร์การเปลี่ยนแปลงการกำหนดค่า
- ใช้อุปกรณ์หรือโปรแกรมจำลองที่รองรับฟีเจอร์ที่คุณต้องการทดสอบ เพื่อทริกเกอร์การเปลี่ยนแปลงการกำหนดค่าที่เกี่ยวข้อง เช่น คุณสามารถควบคุมอุปกรณ์พับได้หรือแท็บเล็ตโดยใช้ Espresso Device เพื่อเปลี่ยนจากพับเป็นเปิด ราบในแนวนอน ดูตัวอย่างได้ที่ส่วนอุปกรณ์ Espresso ในไลบรารีและเครื่องมือสำหรับทดสอบขนาดหน้าจอต่างๆ
ประเภทการทดสอบสำหรับขนาดหน้าจอและหน้าต่างต่างๆ
ใช้การทดสอบประเภทที่เหมาะสมสำหรับ Use Case แต่ละรายการเพื่อยืนยันว่าการทดสอบทำงานอย่างถูกต้องในรูปแบบต่างๆ ดังนี้
การทดสอบลักษณะการทำงานของ UI จะเปิดใช้ UI ของแอปบางส่วน เช่น การแสดง กิจกรรม การทดสอบจะยืนยันว่ามีองค์ประกอบบางอย่างหรือมี แอตทริบิวต์ที่เฉพาะเจาะจง การทดสอบอาจดำเนินการจำลองการกระทำของผู้ใช้หรือไม่ก็ได้ สำหรับมุมมอง ให้ใช้ Espresso Jetpack Compose มี API การทดสอบของตัวเอง การทดสอบลักษณะการทำงานของ UI สามารถตรวจสอบหรือทดสอบในเครื่องได้ การทดสอบที่มีการตรวจสอบจะทำงานบนอุปกรณ์หรือโปรแกรมจำลอง ในขณะที่การทดสอบ UI ในเครื่องจะทำงานบน Robolectric ใน JVM
ใช้การทดสอบลักษณะการทำงานของ UI เพื่อยืนยันว่าการติดตั้งใช้งานการนำทางของแอปถูกต้อง การทดสอบจะดำเนินการต่างๆ เช่น การคลิกและการปัด การทดสอบลักษณะการทำงานของ UI ยังตรวจสอบการมีอยู่ขององค์ประกอบหรือพร็อพเพอร์ตี้บางอย่างด้วย ดูข้อมูลเพิ่มเติมได้ที่การทดสอบ UI อัตโนมัติ
การทดสอบภาพหน้าจอจะถ่ายภาพหน้าจอของ UI หรือคอมโพเนนต์ แล้วเปรียบเทียบ รูปภาพกับภาพหน้าจอที่อนุมัติไว้ก่อนหน้านี้ วิธีนี้มีประสิทธิภาพมากในการ ป้องกันการถดถอย เนื่องจากภาพหน้าจอเดียวครอบคลุมองค์ประกอบจำนวนมาก และคุณสมบัติภาพขององค์ประกอบนั้นได้ คุณสามารถเรียกใช้การทดสอบภาพหน้าจอใน JVM หรือในอุปกรณ์ได้ มีเฟรมเวิร์กการทดสอบภาพหน้าจอหลายรายการให้ใช้งาน ดูข้อมูลเพิ่มเติมได้ที่การทดสอบภาพหน้าจอ
สุดท้าย คุณอาจต้องใช้การทดสอบหน่วยเพื่อทดสอบฟังก์ชันการทำงานของหน่วยตรรกะ ที่ทำงานแตกต่างกันไปตามประเภทอุปกรณ์หรือขนาดหน้าต่าง แต่การทดสอบหน่วย ไม่ค่อยพบในส่วนนี้
ขั้นตอนถัดไป
ดูข้อมูลเพิ่มเติมเกี่ยวกับวิธีใช้การตรวจสอบที่มีอยู่ในเอกสารนี้ได้ที่ไลบรารีและเครื่องมือ