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