Tests sind ein wesentlicher Bestandteil der App-Entwicklung. Normalerweise führen Sie Apps auf einem Emulator oder Gerät aus, um manuell zu prüfen, ob Ihr Code wie erwartet funktioniert. Manuelle Tests sind jedoch zeitaufwendig, fehleranfällig und oft nicht praktikabel für Apps, die auf Bildschirmen und Geräten unterschiedlicher Größe ausgeführt werden. Die Probleme manueller Tests sind meistens darauf zurückzuführen, dass nur ein einziges Gerät für die Entwicklung verwendet wird. Daher können Fehler auf anderen Geräten mit unterschiedlichen Formfaktoren unbemerkt bleiben.
Um Regressionen bei unterschiedlichen Fenster- und Bildschirmgrößen zu erkennen, implementieren Sie automatisierte Tests, um zu prüfen, ob sich Ihre App auf verschiedenen Formfaktoren einheitlich verhält und aussieht. Automatisierte Tests erkennen Probleme frühzeitig, verringern so das Risiko, dass die Nutzererfahrung beeinträchtigt wird.
Was sollte getestet werden?
Bei der Entwicklung von Benutzeroberflächen für unterschiedliche Bildschirm- und Fenstergrößen sollten Sie besonders auf zwei Aspekte achten:
- Wie sich die visuellen Attribute der Komponenten und Layouts in Fenstern unterschiedlicher Größe unterscheiden
- Wie der Status bei Konfigurationsänderungen beibehalten wird
Visuelle Attribute
Unabhängig davon, ob Sie Benutzeroberflächen für unterschiedliche Fenstergrößen anpassen, sollten Sie prüfen, ob sie korrekt angezeigt werden. Berücksichtigen Sie Breiten und Höhen, die kompakt, mittel und erweitert sind. Die empfohlenen Breakpoints finden Sie unter Fenstergrößenklassen für die.
Außerdem werden einige Komponenten in Ihrem Designsystem möglicherweise nicht wie erwartet gerendert, wenn ihre Größenbeschränkungen überschritten werden.
Wenn Ihre App adaptive Layouts für unterschiedliche Fenstergrößen hat, sollten Sie automatisierte Tests durchführen, um Regressionen zu vermeiden. Wenn Sie beispielsweise einen Rand auf einem Smartphone korrigieren, kann dies zu Layout-Inkonsistenzen auf einem Tablet führen. Erstellen Sie UI-Tests, um das Verhalten Ihrer Layouts und Komponenten zu prüfen, oder erstellen Sie Screenshot-Tests, um die Layouts visuell zu prüfen.
Statuswiederherstellung
Apps, die auf Geräten wie Tablets ausgeführt werden, werden viel häufiger gedreht und in der Größe angepasst als Apps auf Smartphones. Außerdem bieten faltbare Geräte neue Anzeigefunktionen wie das Zusammenklappen und Aufklappen, die Konfigurationsänderungen auslösen können. Ihre App muss den Status wiederherstellen können, wenn diese Konfigurations änderungen auftreten. Außerdem müssen Sie Tests schreiben, die bestätigen, dass Ihre App den Status korrekt wiederherstellt.
Testen Sie zuerst, ob Ihre App bei Konfigurationsänderungen nicht abstürzt. Achten Sie darauf, dass jede Benutzeroberfläche in Ihrer App jede Kombination aus Drehen, Größenänderung, oder Zusammenklappen verarbeiten kann. Da bei Konfigurationsänderungen die Aktivität standardmäßig neu erstellt wird, treten einige Abstürze aufgrund von Annahmen zur Aktivitätsbeständigkeit auf.
Es gibt mehrere Möglichkeiten, Konfigurationsänderungen zu testen. In den meisten Fällen gibt es jedoch 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 einem beliebigen UI-Test wie Espresso oder Compose eine Konfigurationsänderung
durch Aufrufen von
Activity.recreate().
Im Allgemeinen 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 die die Aktivität neu erstellen, ähnliche Auswirkungen haben. Einige Konfigurationsänderungen können jedoch auf bestimmten Geräten unterschiedliche Mechanismen zur Statuswiederherstellung auslösen.
Wenn ein Nutzer beispielsweise eine Liste mit Details auf einem aufgeklappten faltbaren Gerät ansieht und das Gerät zusammenklappt, um zum vorderen Display zu wechseln, wechselt die Benutzeroberfläche in der Regel zur Detailseite. Ein automatisierter Test sollte diese Wiederherstellung des UI-Status einschließlich des Navigationsstatus abdecken.
Es gibt mehrere Möglichkeiten, Konfigurationsänderungen zu testen, die auf Geräten auftreten, wenn sie von einem Display zu einem anderen wechseln oder in den Multifenstermodus wechseln:
- Ändern Sie während eines Tests die Größe des Bildschirms auf einem beliebigen Gerät. In den meisten Fällen werden dadurch alle Mechanismen zur Statuswiederherstellung ausgelöst, die Sie prüfen müssen. Dieser Test funktioniert jedoch nicht für Logik, die bestimmte Positionen auf faltbaren Geräten erkennt, da Positionsänderungen keine Konfigurationsänderung auslösen.
- Lösen Sie auf einem Gerät oder Emulator, der die zu testenden Funktionen unterstützt, die entsprechenden Konfigurationsänderungen aus. Ein faltbares Gerät oder ein Tablet kann beispielsweise mit Espresso Device gesteuert werden, um vom zusammengeklappten Zustand zum flach aufgeklappten Zustand im Querformat zu wechseln. Beispiele finden Sie im Abschnitt Espresso Device unter Bibliotheken und Tools zum Testen verschiedener Bildschirmgrößen.
Testtypen für unterschiedliche Bildschirm- und Fenstergrößen
Verwenden Sie für jeden Anwendungsfall den entsprechenden Testtyp, um zu prüfen, ob der Test auf verschiedenen Formfaktoren korrekt funktioniert:
Tests des UI-Verhaltens starten einen Teil der App-Benutzeroberfläche, z. B. die Anzeige einer Aktivität. Die Tests prüfen, ob bestimmte Elemente vorhanden sind oder bestimmte Attribute haben . Optional können die Tests simulierte Nutzer aktionen ausführen. Verwenden Sie für Ansichten Espresso. Jetpack Compose hat eigene Test APIs. Tests des UI-Verhaltens 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.
Verwenden Sie Tests des UI-Verhaltens, um zu prüfen, ob die Implementierung der Navigation in einer App korrekt ist. Die Tests führen Aktionen wie Klicks und Wischbewegungen aus. Außerdem wird geprüft, ob bestimmte Elemente oder Attribute vorhanden sind. Weitere Informationen finden Sie unter UI-Tests automatisieren.
Screenshot-Tests nehmen einen Screenshot einer Benutzeroberfläche oder Komponente auf und vergleichen das Bild mit einem zuvor genehmigten Screenshot. Dies ist eine sehr effektive Methode, um sich vor Regressionen zu schützen, 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 gibt mehrere Frameworks für Screenshot-Tests. Weitere Informationen finden Sie unter Screenshot-Tests.
Schließlich benötigen Sie möglicherweise Einheitentests, um die Funktionalität von Logikeinheiten zu testen, die sich je nach Gerätetyp oder Fenstergröße unterschiedlich verhalten. Einheitentests sind in diesem Bereich jedoch weniger verbreitet.
Nächste Schritte
Weitere Informationen zur Implementierung der in diesem Dokument enthaltenen Prüfungen finden Sie unter Bibliotheken und Tools.