בדיקת הנגישות של האפליקציה (תצוגות)

מושגים ויישום ב-Jetpack פיתוח נייטיב

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

במסמך הזה מתוארות הגישות הבאות:

  • בדיקה באמצעות כלי ניתוח: שימוש בכלים כדי לגלות הזדמנויות לשיפור הנגישות של האפליקציה.
  • בדיקות אוטומטיות: מפעילים את בדיקות הנגישות ב-Espresso וב-Robolectric.

בדיקה באמצעות כלי ניתוח

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

Accessibility Scanner

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

מסגרת הבדיקה של נגישות ב-Android משולבת ב-Android Studio כדי לעזור לכם למצוא בעיות נגישות בפריסות. כדי להפעיל את החלונית, לוחצים על לחצן דוח השגיאה ! ב-Layout Editor.

הדגמה של Accessibility Scanner איור 1. הדגמה של Accessibility Scanner.

מידע נוסף זמין במקורות המידע הבאים:

UI Automator Viewer

הכלי uiautomatorviewer מספק ממשק משתמש גרפי נוח לסריקה ולניתוח של רכיבי ממשק המשתמש שמוצגים כרגע במכשיר עם Android. אפשר להשתמש ב-UI Automator כדי לבדוק את היררכיית הפריסה ולראות את המאפיינים של רכיבי ממשק המשתמש שגלויים בחזית המכשיר. המידע הזה מאפשר לכם ליצור בדיקות מפורטות יותר, למשל על ידי יצירת בורר ממשק משתמש שתואם למאפיין גלוי ספציפי. הכלי נמצא בספרייה tools של Android SDK.

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

מידע נוסף על UI Automator Viewer זמין במאמר כתיבת בדיקות אוטומטיות באמצעות UI Automator.

מוך

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

[Accessibility] Missing 'contentDescription' attribute on image

תמונה 2 מציגה דוגמה לאופן שבו ההודעה הזו מופיעה ב-Android Studio:

תמונה שבה מוצג דיווח של Android Studio על תיאור תוכן חסר בחלק מהתמונות.
איור 2. הודעה ב-Android Studio שמוצג בה המאפיין contentDescription שחסר.

בדיקות אוטומטיות

פלטפורמת Android תומכת בכמה frameworks של בדיקות, כמו Espresso, שמאפשר לכם ליצור ולהריץ בדיקות אוטומטיות שמעריכות את הנגישות של האפליקציה.

אספרסו

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

כדי לראות סקירה כללית של בדיקות נגישות באמצעות Espresso, אפשר לצפות בסרטון הבא מדקה 31:54 עד דקה 34:19: Inclusive design and testing: Making your app more accessible - Google I/O 2016.

בקטע הזה מוסבר איך להריץ בדיקות נגישות באמצעות Espresso.

הפעלת בדיקות

אפשר להפעיל ולהגדיר בדיקות נגישות באמצעות המחלקה AccessibilityChecks:

Kotlin

import androidx.test.espresso.accessibility.AccessibilityChecks

@RunWith(AndroidJUnit4::class)
@LargeTest
class MyWelcomeWorkflowIntegrationTest {
    init {
        AccessibilityChecks.enable()
    }
}

Java

import androidx.test.espresso.accessibility.AccessibilityChecks;

@RunWith(AndroidJUnit4.class)
@LargeTest
public class MyWelcomeWorkflowIntegrationTest {
    @BeforeClass
    public void enableAccessibilityChecks() {
        AccessibilityChecks.enable();
    }
}

כברירת מחדל, הבדיקות מופעלות כשמבצעים פעולת צפייה כלשהי שמוגדרת ב-ViewActions. כל בדיקה כוללת את התצוגה שבה הפעולה מתבצעת, וגם את כל התצוגות הצאצאות. אפשר להעריך את כל היררכיית התצוגה של מסך במהלך כל בדיקה על ידי העברת true אל setRunChecksFromRootView(), כמו בקטע הקוד הבא:

Kotlin

AccessibilityChecks.enable().setRunChecksFromRootView(true)

Java

AccessibilityChecks.enable().setRunChecksFromRootView(true);

הסתרת תת-קבוצות של תוצאות

אחרי שאפליקציית Espresso מריצה בדיקות נגישות באפליקציה שלכם, יכול להיות שתמצאו כמה הזדמנויות לשיפור הנגישות של האפליקציה שלא תוכלו לטפל בהן באופן מיידי. כדי למנוע מצב שבו בדיקות Espresso נכשלות שוב ושוב בגלל התוצאות האלה, אפשר להתעלם מהן באופן זמני. ה-Accessibility Test Framework‏ (ATF) מספק את הפונקציונליות הזו באמצעות השיטה setSuppressingResultMatcher(), שמורה ל-Espresso להסתיר את כל התוצאות שתואמות לביטוי ההתאמה שצוין.

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

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

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

ה-ATF מגדיר כמה התאמות כדי לעזור לכם להגדיר אילו תוצאות יוצגו בבדיקות Espresso. בדוגמה הבאה מוסתרות תוצאות הבדיקות שקשורות לניגודיות הצבע של רכיב TextView יחיד. מזהה הרכיב הוא countTV.

Kotlin

AccessibilityChecks.enable().apply {
        setSuppressingResultMatcher(
                allOf(
                    matchesCheck(TextContrastCheck::class.java),
                    matchesViews(withId(R.id.countTV))
                )
        )
}

Java

AccessibilityValidator myChecksValidator =
    AccessibilityChecks.enable()
        .setSuppressingResultMatcher(
            allOf(
                matchesCheck(TextContrastCheck.class),
                matchesViews(withId(R.id.countTV))));