ทดสอบหน้าจอและหน้าต่างขนาดต่างๆ

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

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

สิ่งที่ต้องทดสอบ

เมื่อพัฒนา UI สำหรับหน้าจอและหน้าต่างขนาดต่างๆ ให้ให้ความสำคัญเป็นพิเศษกับ 2 ด้านต่อไปนี้

  1. ลักษณะที่ปรากฏของแอตทริบิวต์ของคอมโพเนนต์และเลย์เอาต์แตกต่างกันอย่างไรในหน้าต่างขนาดต่างๆ
  2. วิธีเก็บสถานะไว้ระหว่างการเปลี่ยนแปลงการกําหนดค่า

แอตทริบิวต์ภาพ

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

รูปที่ 1 หน้าจอ "สำหรับคุณ" ใน "ตอนนี้ใน Android" ในหน้าต่างขนาดต่างๆ

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

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

สถานะการกู้คืน

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

รูปที่ 2 อุปกรณ์แบบพับได้แบบพับอยู่ แบบกางออกราบ แบบกางออกราบและปรับเป็นแนวนอน และแบบกางออกครึ่งหนึ่ง (ตั้งโต๊ะ)

ก่อนอื่น ให้ทดสอบว่าแอปไม่ขัดข้องเมื่อเกิดการเปลี่ยนแปลงการกําหนดค่า ตรวจสอบว่า UI ทั้งหมดในแอปของคุณจัดการกับการหมุน การปรับขนาด หรือการเปลี่ยนรูปแบบแบบผสมผสานกันได้ เนื่องจากการเปลี่ยนแปลงการกําหนดค่าจะสร้างกิจกรรมขึ้นมาใหม่โดยค่าเริ่มต้น การขัดข้องบางอย่างจึงเกิดขึ้นเนื่องจากมีการสมมติว่ากิจกรรมคงอยู่

การทดสอบการเปลี่ยนแปลงการกําหนดค่ามีหลายวิธี แต่ในกรณีส่วนใหญ่ การทดสอบทำได้ 2 วิธีดังนี้

  • ใน "เขียน" ให้ใช้ StateRestorationTester เพื่อจําลองการเปลี่ยนแปลงการกําหนดค่าในลักษณะที่มีประสิทธิภาพโดยไม่ต้องเริ่มกิจกรรมใหม่ ดูข้อมูลเพิ่มเติมได้ในส่วนต่อไปนี้
  • ในการทดสอบ UI เช่น Espresso หรือ Compose ให้จำลองการเปลี่ยนแปลงการกําหนดค่าโดยเรียกใช้ Activity.recreate()

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

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

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

  • ปรับขนาดหน้าจอระหว่างการทดสอบโดยใช้อุปกรณ์ใดก็ได้ ในกรณีส่วนใหญ่ การดำเนินการนี้จะทริกเกอร์กลไกการกู้คืนสถานะทั้งหมดที่คุณต้องยืนยัน อย่างไรก็ตาม การทดสอบนี้จะไม่ทำงานกับตรรกะที่ตรวจจับท่าทางที่เฉพาะเจาะจงในอุปกรณ์แบบพับได้ เนื่องจากการเปลี่ยนแปลงท่าทางไม่ได้ทริกเกอร์การเปลี่ยนแปลงการกำหนดค่า
  • การใช้อุปกรณ์หรือโปรแกรมจำลองที่รองรับฟีเจอร์ที่คุณต้องการทดสอบจะทริกเกอร์การเปลี่ยนแปลงการกำหนดค่าที่เกี่ยวข้อง เช่น คุณสามารถควบคุมอุปกรณ์แบบพับได้หรือแท็บเล็ตโดยใช้ Espresso Device เพื่อเปลี่ยนจากพับอยู่เป็นกางออกในแนวนอน ดูตัวอย่างได้ที่ส่วน Espresso Device ของไลบรารีและเครื่องมือเพื่อทดสอบหน้าจอขนาดต่างๆ
รูปที่ 3 การพับและการกางอุปกรณ์

ประเภทการทดสอบสําหรับหน้าจอและหน้าต่างขนาดต่างๆ

ใช้การทดสอบประเภทที่เหมาะสมสำหรับ Use Case แต่ละรายการเพื่อยืนยันว่าการทดสอบทํางานอย่างถูกต้องในอุปกรณ์รูปแบบต่างๆ

  • การทดสอบลักษณะการทํางานของ UI จะเปิด UI ของแอปบางส่วน เช่น การแสดงกิจกรรม การทดสอบจะยืนยันว่าองค์ประกอบบางอย่างมีอยู่หรือมีแอตทริบิวต์ที่เฉพาะเจาะจง การทดสอบอาจทำการจําลองการดําเนินการของผู้ใช้ สำหรับมุมมอง ให้ใช้ Espresso Jetpack Compose มีAPI สำหรับการทดสอบของตนเอง การทดสอบลักษณะการทํางานของ UI อาจเป็นแบบมีเครื่องมือวัดหรือในเครื่อง การทดสอบที่มีเครื่องมือวัดจะทํางานบนอุปกรณ์หรือโปรแกรมจําลอง ส่วนการทดสอบ UI ในเครื่องจะทํางานบน Robolectric ใน JVM

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

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

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

ขั้นตอนถัดไป

ดูข้อมูลเพิ่มเติมเกี่ยวกับวิธีใช้การตรวจสอบที่มีอยู่ในเอกสารนี้ได้ที่คลังและเครื่องมือ