Verschiedene Bildschirm- und Fenstergrößen testen

Tests sind ein wesentlicher Bestandteil der App-Entwicklung. Normalerweise führen Sie Apps auf einem Emulator oder Gerät aus, um manuell zu überprüfen, ob Ihr Code wie erwartet funktioniert. Manuelle Tests sind jedoch zeitaufwendig, fehleranfällig und für Anwendungen, die auf Bildschirmen und Geräten unterschiedlicher Größe ausgeführt werden, oft nicht zu verwalten. Die Probleme manueller Tests entstehen häufig, wenn ein einzelnes Gerät für die Entwicklung verwendet wird. Dadurch können Fehler auf anderen Geräten mit anderen Formfaktoren unbemerkt bleiben.

Um Regressionen für verschiedene Fenster- und Bildschirmgrößen zu identifizieren, sollten Sie automatisierte Tests implementieren, um zu prüfen, ob Verhalten und Erscheinungsbild Ihrer App über verschiedene Formfaktoren hinweg konsistent sind. Mit automatisierten Tests werden Probleme frühzeitig erkannt und das Risiko von Problemen, die sich auf die Nutzererfahrung auswirken, verringert.

Zu testendes Element

Bei der Entwicklung von UIs für verschiedene Bildschirm- und Fenstergrößen sollten Sie besonders auf zwei Aspekte achten:

  1. wie sich die visuellen Attribute der Komponenten und Layouts in Fenstern unterschiedlicher
  2. Wie der Status bei Konfigurationsänderungen beibehalten wird

Visuelle Attribute

Unabhängig davon, ob Sie UIs für verschiedene Fenstergrößen anpassen, sollten Sie prüfen, ob sie korrekt angezeigt werden. Berücksichtigen Sie kompakte, mittelgroße und erweiterte Breiten und Höhen. Die empfohlenen Haltepunkte finden Sie unter Fenstergrößenklassen.

Abbildung 1: Der Bildschirm „Für mich“ in Now In Android in verschiedenen Fenstergrößen

Außerdem rendert Ihre Anwendung einige Komponenten in Ihrem Designsystem möglicherweise nicht wie erwartet, wenn ihre Größenbeschränkungen gelockert werden.

Wenn Ihre App adaptive Layouts für verschiedene Fenstergrößen verwendet, sollten Sie automatisierte Tests einsetzen, um Regressionen zu verhindern. Wenn Sie z. B. einen Rand auf einem Telefon anpassen, kann das zu Layout-Inkonsistenzen auf dem Tablet führen. Erstellen Sie UI-Tests, um das Verhalten Ihrer Layouts und Komponenten zu überprüfen, oder erstellen Sie Screenshot-Tests, um die Layouts visuell zu überprüfen.

Wiederherstellung des Bundesstaats

Apps, die auf Geräten wie Tablets ausgeführt werden, werden viel häufiger gedreht und ihre Größe angepasst als Apps auf Smartphones. Außerdem bieten faltbare Smartphones neue Displayfunktionen, die Konfigurationsänderungen auslösen können. Ihre Anwendung muss den Status wiederherstellen können, wenn diese Konfigurationsänderungen auftreten. Anschließend müssen Sie Tests schreiben, die bestätigen, dass der Zustand Ihrer Anwendung korrekt wiederhergestellt wird.

Abbildung 2. Faltbares Gerät zugeklappt, flach aufgeklappt, flach aufgeklappt im Querformat und zur Hälfte aufgeklappt (Auf dem Tisch).

Testen Sie zuerst, ob Ihre App bei Konfigurationsänderungen abstürzt. Jede UI in Ihrer App muss eine beliebige Kombination aus Drehen, Größenänderung oder Falten verarbeiten können. Da die Aktivität durch Konfigurationsänderungen standardmäßig neu erstellt wird, treten einige Abstürze aufgrund der Annahme von Aktivitätspersistenz auf.

Es gibt mehrere Möglichkeiten, Konfigurationsänderungen zu testen, aber in den meisten Fällen gibt es zwei Möglichkeiten:

  • Verwenden Sie in Compose StateRestorationTester, um eine Konfigurationsänderung effizient zu simulieren, ohne die Aktivität neu zu starten. Weitere Informationen finden Sie in den folgenden Abschnitten.
  • Simulieren Sie in jedem UI-Test wie Espresso oder Compose eine Konfigurationsänderung durch Aufrufen von Activity.recreate().

In der Regel müssen Sie keine verschiedenen Geräte verwenden, um die Statuswiederherstellung als Reaktion auf Konfigurationsänderungen zu testen. Das liegt daran, dass alle Konfigurationsänderungen, durch die die Aktivität neu erstellt wird, ähnliche Auswirkungen haben. Einige Konfigurationsänderungen können jedoch auf bestimmten Geräten unterschiedliche Mechanismen zur Zustandswiederherstellung auslösen.

Wenn ein Nutzer beispielsweise eine UI mit Listendetails auf einem aufgeklappten faltbaren Smartphone aufruft und das Gerät zusammenfaltet, um zum Frontdisplay zu wechseln, wird normalerweise zur Detailseite gewechselt. Ein automatisierter Test sollte diese Wiederherstellung des UI-Status einschließlich des Navigationsstatus abdecken.

Wenn Sie Konfigurationsänderungen auf Geräten testen möchten, die von einem Bildschirm zum anderen wechseln oder in den Mehrfenstermodus wechseln, haben Sie mehrere Möglichkeiten:

  • Du kannst die Größe des Bildschirms während eines Tests auf einem beliebigen Gerät ändern. In den meisten Fällen werden dadurch alle Mechanismen zur Wiederherstellung des Status ausgelöst, die Sie überprüfen müssen. Dieser Test funktioniert jedoch nicht bei Logik, die bestimmte Sicherheitsfunktionen in faltbaren Smartphones erkennt, da Änderungen der Sicherheitseinstellungen keine Konfigurationsänderung auslösen.
  • Wenn Sie ein Gerät oder einen Emulator verwenden, das die zu testenden Funktionen unterstützt, werden die entsprechenden Konfigurationsänderungen ausgelöst. Ein faltbares Gerät oder ein Tablet können beispielsweise mit einem Espresso-Gerät gesteuert werden, um sich im Querformat von zugeklappt zu öffnen. Beispiele finden Sie im Abschnitt Espresso-Gerät des Artikels Bibliotheken und Tools zum Testen verschiedener Bildschirmgrößen.
Abbildung 3: Gerät auf- und zuklappen.

Testarten für unterschiedliche Bildschirm- und Fenstergrößen

Prüfen Sie mit dem geeigneten Testtyp für jeden Anwendungsfall, ob der Test für verschiedene Formfaktoren richtig funktioniert:

  • Mit UI-Verhaltenstests wird ein Teil der App-UI gestartet, z. B. die Anzeige einer Aktivität. Die Tests prüfen, ob bestimmte Elemente vorhanden sind oder bestimmte Attribute haben . Die Tests können optional simulierte Nutzeraktionen ausführen. Verwenden Sie für Ansichten Espresso. Jetpack Compose hat eigene Test-APIs. UI-Verhaltenstests können instrumentiert oder lokal sein. Instrumentierte Tests werden auf Geräten oder Emulatoren ausgeführt, während lokale UI-Tests auf Robolectric auf der JVM ausgeführt werden.

    Prüfen Sie mit UI-Verhaltenstests, ob die Navigation in einer App korrekt implementiert ist. Bei den Tests werden Aktionen wie Klicken oder Wischen ausgeführt. Bei UI-Verhaltenstests wird auch geprüft, ob bestimmte Elemente oder Attribute vorhanden sind. Weitere Informationen finden Sie unter UI-Tests automatisieren.

  • Bei Screenshot-Tests wird ein Screenshot einer Benutzeroberfläche oder einer Komponente erstellt und mit einem zuvor genehmigten Screenshot verglichen. Dies ist ein sehr effektiver Schutz vor Regressionen, da ein einzelner Screenshot eine große Anzahl von Elementen und deren visuellen Eigenschaften abdecken kann. Sie können Screenshot-Tests auf der JVM oder auf Geräten ausführen. Es stehen mehrere Screenshot-Test-Frameworks zur Verfügung.

Schließlich benötigen Sie möglicherweise Einheitentests, um die Funktionalität von Logikeinheiten zu testen, die sich je nach Art des Geräts oder der Fenstergröße unterschiedlich verhalten. In diesem Bereich sind Einheitentests jedoch weniger üblich.

Nächste Schritte

Weitere Informationen zur Implementierung der in diesem Dokument enthaltenen Prüfungen finden Sie unter Bibliotheken und Tools.