Barrierefreiheit der App testen (Ansichten)

Konzepte und Jetpack Compose-Implementierung

Wenn Sie Ihre App auf Barrierefreiheit testen, können Sie sie aus der Perspektive der Nutzer betrachten und Usability-Probleme finden, die Sie sonst vielleicht übersehen würden. Barrierefreiheitstests können Ihnen helfen, Ihre App für alle Nutzer, auch für Menschen mit Behinderungen, leistungsfähiger und vielseitiger zu machen.

In diesem Dokument werden die folgenden Ansätze beschrieben:

  • Mit Analysetools testen: Verwenden Sie Tools, um Möglichkeiten zur Verbesserung der Barrierefreiheit Ihrer App zu finden.
  • Automatisierte Tests: Aktivieren Sie Bedienungshilfetests in Espresso und Robolectric.

Mit Analysetools testen

Mit Analysetools lassen sich Möglichkeiten zur Verbesserung der Barrierefreiheit aufdecken, die Sie bei manuellen Tests möglicherweise übersehen.

Accessibility Scanner

Die App Accessibility Scanner scannt Ihren Bildschirm und schlägt Möglichkeiten zur Verbesserung der Barrierefreiheit Ihrer App vor. Der Accessibility Scanner verwendet das Accessibility Test Framework und liefert spezifische Vorschläge, nachdem er sich unter anderem Inhaltslabels, anklickbare Elemente und Kontrast angesehen hat.

Das Android Accessibility Test Framework ist in Android Studio integriert, damit Sie Bedienungshilfenprobleme in Ihren Layouts finden können. Klicken Sie auf die Schaltfläche für den Fehlerbericht !, um das Feld zu öffnen. im Layout-Editor.

Demo des Accessibility Scanners Abbildung 1. Demo des Accessibility Scanners.

Weitere Informationen finden Sie in den folgenden Ressourcen:

UI Automator Viewer

Das uiautomatorviewer-Tool bietet eine praktische grafische Benutzeroberfläche zum Scannen und Analysieren der UI-Komponenten, die derzeit auf einem Android-Gerät angezeigt werden. Mit UI Automator können Sie die Layouthierarchie untersuchen und die Eigenschaften von UI-Komponenten ansehen, die im Vordergrund des Geräts sichtbar sind. Mithilfe dieser Informationen können Sie detailliertere Tests erstellen, z. B. durch Erstellen eines UI-Selektors, der einer bestimmten sichtbaren Eigenschaft entspricht. Das Tool befindet sich im Verzeichnis tools des Android SDK.

Bei Bedienungshilfen-Tests ist dieses Tool nützlich, um Probleme zu beheben, die mit anderen Testmethoden gefunden wurden. Wenn bei manuellen Tests beispielsweise festgestellt wird, dass eine Ansicht nicht den erforderlichen vorlesbaren Text enthält oder eine Ansicht den Fokus erhält, obwohl dies nicht der Fall sein sollte, können Sie mit dem Tool die Quelle des Problems ermitteln.

Weitere Informationen zu UI Automator Viewer finden Sie unter Automatisierte Tests mit UI Automator schreiben.

Flusen

Android Studio zeigt Lint-Warnungen für verschiedene Barrierefreiheitsprobleme an und stellt Links zu den entsprechenden Stellen in Ihrem Quellcode bereit. Im folgenden Beispiel fehlt einem Bild das Attribut contentDescription. Die fehlende Beschreibung des Inhalts führt zu folgender Meldung:

[Accessibility] Missing 'contentDescription' attribute on image

Abbildung 2 zeigt ein Beispiel dafür, wie diese Meldung in Android Studio angezeigt wird:

Ein Bild, auf dem in Android Studio für einige Bilder eine fehlende Inhaltsbeschreibung gemeldet wird.
Abbildung 2. Meldung in Android Studio, die das fehlende Attribut contentDescription zeigt.

Automatisierte Tests

Die Android-Plattform unterstützt mehrere Test-Frameworks, z. B. Espresso. Damit können Sie automatisierte Tests erstellen und ausführen, mit denen die Bedienungshilfe Ihrer App bewertet wird.

Espresso

Espresso ist eine Android-Testbibliothek, die UI-Tests schnell und einfach macht. Damit können Sie mit UI-Komponenten in Ihrer App interagieren, die getestet werden, und bestätigen, dass bestimmte Verhaltensweisen auftreten oder bestimmte Bedingungen erfüllt sind.

Einen Videoüberblick über die Barrierefreiheitstests mit Espresso finden Sie im folgenden Video von Minute 31:54 bis 34:19: Inclusive design and testing: Making your app more accessible – Google I/O 2016.

In diesem Abschnitt wird beschrieben, wie Sie mit Espresso Barrierefreiheitsprüfungen durchführen.

Prüfungen aktivieren

Sie können Barrierefreiheitstests mit der Klasse AccessibilityChecks aktivieren und konfigurieren:

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();
    }
}

Standardmäßig werden die Prüfungen ausgeführt, wenn Sie eine in ViewActions definierte Ansichtsaktion ausführen. Jede Prüfung umfasst die Ansicht, in der die Aktion ausgeführt wird, sowie alle untergeordneten Ansichten. Sie können die gesamte Hierarchie anzeigen eines Bildschirms bei jedem Check auswerten, indem Sie true an setRunChecksFromRootView() übergeben, wie im folgenden (das) Code-Snippet gezeigt:

Kotlin

AccessibilityChecks.enable().setRunChecksFromRootView(true)

Java

AccessibilityChecks.enable().setRunChecksFromRootView(true);

Teilmengen von Ergebnissen unterdrücken

Nachdem Espresso Barrierefreiheitsprüfungen für Ihre App ausgeführt hat, stellen Sie möglicherweise mehrere Möglichkeiten zur Verbesserung der Barrierefreiheit Ihrer App fest, die Sie nicht sofort beheben können. Damit Espresso-Tests aufgrund dieser Ergebnisse nicht ständig fehlschlagen, können Sie sie vorübergehend ignorieren. Das Accessibility Test Framework (ATF) bietet diese Funktion mit der Methode setSuppressingResultMatcher(). Damit wird Espresso angewiesen, alle Ergebnisse zu unterdrücken, die dem angegebenen Matcher-Ausdruck entsprechen.

Wenn Sie Änderungen an Ihrer App vornehmen, um einen Aspekt der Barrierefreiheit zu verbessern, ist es von Vorteil, wenn Espresso Ergebnisse für möglichst viele andere Aspekte der Barrierefreiheit anzeigt. Aus diesem Grund sollten Sie nur bestimmte bekannte Verbesserungsmöglichkeiten unterdrücken.

Wenn Sie Ergebnisse von Bedienungshilfentests, die Sie später beheben möchten, vorübergehend unterdrücken, ist es wichtig, dass Sie nicht versehentlich ähnliche Ergebnisse unterdrücken. Verwenden Sie daher Matcher mit einem engen Geltungsbereich. Wählen Sie dazu einen Matcher aus, damit Espresso ein bestimmtes Ergebnis nur unterdrückt, wenn es alle der folgenden Barrierefreiheitsprüfungen erfüllt:

  1. Bedienungshilfen-Prüfungen eines bestimmten Typs, z. B. Prüfungen der Größe von Berührungszielen.
  2. Barrierefreiheitsprüfungen, bei denen ein bestimmtes UI-Element wie eine Schaltfläche bewertet wird.

Das ATF definiert mehrere Matcher, mit denen Sie festlegen können, welche Ergebnisse in Ihren Espresso-Tests angezeigt werden sollen. Im folgenden Beispiel werden die Ergebnisse von Prüfungen unterdrückt, die sich auf den Farbkontrast eines einzelnen TextView-Elements beziehen. Die ID des Elements lautet 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))));