בדיקת גדלים שונים של מסכים וחלונות

בדיקה היא חלק בלתי נפרד מתהליך פיתוח האפליקציה. בדרך כלל מריצים אפליקציות במהדמ או במכשיר כדי לוודא באופן ידני שהקוד פועל כצפוי. עם זאת, בדיקה ידנית אורכת זמן רב, נוטה לשגיאות ולרוב קשה לנהל אותה באפליקציות שפועלות במסכים ובמכשירים בגדלים שונים. בדרך כלל, הבעיות בבדיקות ידניות נובעות משימוש במכשיר אחד בלבד לפיתוח. כתוצאה מכך, יכול להיות ששגיאות לא ייבחנו במכשירים אחרים עם גורמי צורה שונים.

כדי לזהות נסיגות בגדלים שונים של חלונות ומסכים, כדאי להטמיע בדיקות אוטומטיות כדי לוודא שההתנהגות והמראה של האפליקציה עקביים בפלטפורמות שונות. בדיקות אוטומטיות מזהות בעיות בשלב מוקדם, ומפחיתות את הסיכון לבעיות שמשפיעות על חוויית המשתמש.

מה כדאי לבדוק

כשמפתחים ממשקי משתמש לגדלים שונים של מסכים וחלונות, חשוב לשים לב במיוחד לשני היבטים:

  1. איך המאפיינים החזותיים של הרכיבים והפריסות משתנים בחלונות בגדלים שונים
  2. איך המצב נשמר במהלך שינויים בהגדרות

מאפיינים חזותיים

בין שאתם מתאימים אישית ממשקי משתמש לגדלים שונים של חלונות ובין שלא, חשוב לוודא שהם מוצגים בצורה נכונה. כדאי להביא בחשבון רוחבים וגבהים של תמונות קומפקטיות, בינוניות ומורחבות. בסיווגים של גודל חלון מפורטים נקודות העצירה המומלצות.

איור 1. המסך 'בשבילך' ב'עכשיו' ב-Android בגדלים שונים של חלונות

בנוסף, יכול להיות שחלק מהרכיבים במערכת העיצוב לא יוצגו באפליקציה כצפוי אם מגבילי הגודל שלהם יתרחבו.

אם באפליקציה שלכם יש פריסות מותאמות לגדלים שונים של חלונות, כדאי להשתמש בבדיקות אוטומטיות כדי למנוע נסיגה לאחור. לדוגמה, הגדרת שוליים בטלפון עלולה להוביל לאי-עקביות בפריסת הטאבלט. אפשר ליצור בדיקות ממשק משתמש כדי לוודא את ההתנהגות של הפריסות והרכיבים, או ליצור בדיקות של צילומי מסך כדי לוודא את הפריסות באופן חזותי.

שחזור המצב

אפליקציות שפועלות במכשירים כמו טאבלטים עוברות סיבוב ושינוי של גודל התצוגה בתדירות גבוהה בהרבה מאשר אפליקציות שפועלות בטלפונים. בנוסף, במכשירים מתקפלים יש יכולות תצוגה חדשות, כמו קיפול ופתיחה, שיכולות לגרום לשינויים בהגדרות. האפליקציה צריכה להיות מסוגלת לשחזר את המצב כשהשינויים בהגדרות מתרחשים. לאחר מכן, תצטרכו לכתוב בדיקות כדי לוודא שהאפליקציה משחזרת את המצב בצורה נכונה.

איור 2. מכשיר מתקפל מקופל, פתוח לחלוטין, פתוח לחלוטין בפריסה לרוחב וחצי פתוח (על שולחן).

קודם כול, צריך לבדוק שהאפליקציה לא קורסת כשמתרחשים שינויים בהגדרות. חשוב לוודא שכל ממשק משתמש באפליקציה יכול להתמודד עם כל שילוב של סיבוב, שינוי גודל או קיפול. מאחר ששינויים בהגדרות יוצרים מחדש את הפעילות כברירת מחדל, חלק מהקריסות מתרחשות בגלל הנחות לגבי עקביות הפעילות.

יש כמה דרכים לבדוק שינויים בהגדרות, אבל ברוב המקרים יש שתי דרכים לבדיקות:

  • ב-Compose, אפשר להשתמש ב-StateRestorationTester כדי לדמות שינוי בהגדרות בצורה יעילה, בלי להפעיל מחדש את הפעילות. למידע נוסף, תוכלו לעיין בקטעים הבאים.
  • בכל בדיקת ממשק משתמש, כמו Espresso או Compose, אפשר לדמות שינוי בהגדרות באמצעות קריאה ל-Activity.recreate().

בדרך כלל אין צורך להשתמש במכשירים שונים כדי לבדוק את שחזור המצב בתגובה לשינויים בהגדרות. הסיבה לכך היא שלכל השינויים בהגדרות שמאפשרים ליצור מחדש את הפעילות יש השלכות דומות. עם זאת, שינויים מסוימים בהגדרות עשויים להפעיל מנגנונים שונים לשחזור המצב במכשירים ספציפיים.

לדוגמה, כשמשתמש צופה בממשק משתמש של רשימה עם פרטים במכשיר מתקפל פתוח, והוא מקפל את המכשיר כדי לעבור לתצוגה הקדמית, בדרך כלל ממשק המשתמש עובר לדף הפרטים. בדיקה אוטומטית צריכה לכלול את השחזור הזה של מצב ממשק המשתמש, כולל מצב הניווט.

כדי לבדוק שינויים בהגדרות שמתרחשים במכשירים שעוברים ממסך אחד למסך אחר או נכנסים למצב חלונות מרובים, יש כמה אפשרויות:

  • משנים את גודל המסך במהלך בדיקה בכל מכשיר. ברוב המקרים, הפעולה הזו מפעילה את כל המנגנונים לשחזור המצב שצריך לאמת. עם זאת, הבדיקה הזו לא תפעל עבור לוגיקה שמזהה תנוחות ספציפיות במכשירים מתקפלים, כי שינויים בתנוחה לא מפעילים שינוי בהגדרה.
  • באמצעות מכשיר או אמולטור שתומכים בתכונות שרוצים לבדוק, מפעילים את השינויים הרלוונטיים בהגדרות. לדוגמה, אפשר להשתמש ב-Espresso Device כדי לשלוט במכשיר מתקפל או בטאבלט ולעבור ממצב מקופל למצב פתוח בפריסה לרוחב. דוגמאות מפורטות מופיעות בקטע מכשיר Espresso בקטע ספריות וכלים לבדיקת מסכים בגדלים שונים.
איור 3. קיפול ופתיחה של המכשיר.

סוגי בדיקות למסכים ולחלונות בגדלים שונים

כדי לוודא שהבדיקה פועלת בצורה תקינה בפלטפורמות שונות, צריך להשתמש בסוג הבדיקה המתאים לכל תרחיש לדוגמה:

  • בדיקות התנהגות של ממשק המשתמש מפעילות חלק מ-UI של האפליקציה, כמו הצגת פעילות. הבדיקות מאמתות שרכיבים מסוימים קיימים או שיש להם מאפיינים ספציפיים . אפשר לבצע פעולות משתמש מדומינות בבדיקות. לתצוגות, משתמשים ב-Espresso. ל-Jetpack פיתוח נייטיב יש ממשקי API משלו לבדיקות. בדיקות התנהגות של ממשק משתמש יכולות להיות מוטמעות או מקומיות. בדיקות עם מכשירי מדידה פועלות במכשירים או באמולטורים, ואילו בדיקות ממשק משתמש מקומיות פועלות ב-Robolectric ב-JVM.

    משתמשים בבדיקות התנהגות של ממשק המשתמש כדי לוודא שההטמעה של הניווט באפליקציה נכונה. הבדיקות מבצעות פעולות כמו קליקים והחלקות. בדיקות התנהגות של ממשק המשתמש בודקות גם את קיומם של רכיבים או מאפיינים מסוימים. למידע נוסף, ראו אוטומציה של בדיקות ממשק משתמש.

  • בדיקות של צילומי מסך מצלמות צילום מסך של ממשק משתמש או רכיב ומשוות את התמונה לצילום מסך שאושר בעבר. זוהי דרך יעילה מאוד להגנה מפני נסיגה (regression), כי צילום מסך אחד יכול לכסות מספר גדול של רכיבים ואת המאפיינים החזותיים שלהם. אפשר להריץ בדיקות של צילומי מסך ב-JVM או במכשירים. יש כמה frameworks של בדיקות של צילומי מסך. מידע נוסף זמין במאמר בדיקות של צילומי מסך.

לבסוף, יכול להיות שתצטרכו בדיקות יחידה כדי לבדוק את הפונקציונליות של יחידות לוגיות שמתנהגות בצורה שונה בהתאם לסוג המכשיר או לגודל החלון, אבל בדיקות יחידה פחות נפוצות בתחום הזה.

השלבים הבאים

מידע נוסף על הטמעת הבדיקות שמפורטות במסמך הזה זמין בקטע ספריות וכלים.