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

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

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

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

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

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

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

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

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

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

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

การคืนค่าสถานะ

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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