Tests sind ein wesentlicher Bestandteil der App-Entwicklung. Normalerweise führen Sie Apps in einem Emulator oder auf einem 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 verschiedener Größen ausgeführt werden. Die Probleme bei manuellen Tests sind in den meisten Fällen auf die Verwendung eines einzelnen Geräts für die Entwicklung zurückzuführen. Daher können Fehler auf anderen Geräten mit anderen Formfaktoren unbemerkt bleiben.
Um Regressionen bei verschiedenen Fenster- und Bildschirmgrößen zu erkennen, implementieren Sie automatisierte Tests, um zu prüfen, ob das Verhalten und das Erscheinungsbild Ihrer App auf verschiedenen Formfaktoren einheitlich ist. Mit automatisierten Tests können Probleme frühzeitig erkannt und das Risiko von Problemen, die sich auf die Nutzerfreundlichkeit auswirken, verringert werden.
Was Sie testen sollten
Achten Sie beim Entwickeln von UIs für verschiedene Bildschirm- und Fenstergrößen besonders auf zwei Aspekte:
- Wie sich die visuellen Attribute der Komponenten und Layouts in Fenstern unterschiedlicher Größe unterscheiden
- So wird der Status bei Konfigurationsänderungen beibehalten
Visuelle Attribute
Unabhängig davon, ob Sie die Benutzeroberflächen für unterschiedliche Fenstergrößen anpassen, sollten Sie prüfen, ob sie korrekt angezeigt werden. Berücksichtigen Sie Breite und Höhe in kompakter, mittlerer und erweiterter Version. Die empfohlenen Unterbrechungspunkte finden Sie unter Fenstergrößenklassen.
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 haben, um Rückfälle zu vermeiden. Wenn Sie beispielsweise einen Rand auf einem Smartphone festlegen, kann dies zu Layoutinkonsistenzen auf einem 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.
Zustandswiederherstellung
Apps, die auf Geräten wie Tablets ausgeführt werden, werden viel häufiger gedreht und die Größe wird viel häufiger angepasst als bei Apps auf Smartphones. Außerdem bieten faltbare Smartphones neue Displayfunktionen wie das Zusammen- 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 der Status Ihrer App korrekt wiederhergestellt wird.
Prüfen Sie zuerst, ob Ihre App nicht abstürzt, wenn Konfigurationsänderungen auftreten. Achten Sie darauf, dass jede Benutzeroberfläche in Ihrer App jede Kombination aus Drehen, Ändern der Größe oder Zusammenklappen verarbeiten kann. Da bei Konfigurationsänderungen die Aktivität standardmäßig neu erstellt wird, kommt es manchmal zu Abstürzen, weil davon ausgegangen wird, dass die Aktivität fortgesetzt wird.
Es gibt mehrere Möglichkeiten, Konfigurationsänderungen zu testen. In den meisten Fällen gibt es jedoch zwei Möglichkeiten:
- Verwenden Sie in Compose die Tastenkombination
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, indem Sie
Activity.recreate()
aufrufen.
Sie müssen in der Regel nicht verschiedene Geräte verwenden, um die Wiederherstellung des Status nach 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 Wiederherstellung des Status auslösen.
Wenn ein Nutzer beispielsweise auf einem geöffneten faltbaren Gerät eine Liste mit Detailinformationen sieht und das Gerät zusammenklappt, um zum Frontdisplay 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.
Wenn Sie Konfigurationsänderungen testen möchten, die auf Geräten auftreten, die von einem Display zu einem anderen wechseln oder in den Multifenstermodus wechseln, haben Sie mehrere Möglichkeiten:
- Ä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 Zustandswiederherstellung ausgelöst, die Sie prüfen müssen. Dieser Test funktioniert jedoch nicht für Logik, die bestimmte Positionen in faltbaren Geräten erkennt, da Änderungen der Position keine Konfigurationsänderung auslösen.
- Lösen Sie mit einem Gerät oder Emulator, das die zu testenden Funktionen unterstützt, die entsprechenden Konfigurationsänderungen aus. So kann beispielsweise ein faltbares Gerät oder ein Tablet mit Espresso Device gesteuert werden, um es von einem zusammengeklappten Zustand in einen flachen Zustand im Querformat zu verwandeln. Beispiele finden Sie im Abschnitt Espresso-Gerät des Artikels Bibliotheken und Tools zum Testen verschiedener Bildschirmgrößen.
Testtypen für verschiedene Bildschirm- und Fenstergrößen
Verwenden Sie für jeden Anwendungsfall den geeigneten Testtyp, um zu prüfen, ob der Test auf verschiedenen Formfaktoren korrekt funktioniert:
Bei UI-Verhaltenstests wird ein Teil der App-Benutzeroberfläche gestartet, z. B. die Anzeige einer Aktivität. Dabei wird geprüft, ob bestimmte Elemente vorhanden sind oder bestimmte Attribute haben . Optional können bei den Tests simulierte Nutzeraktionen ausgeführt werden. Verwenden Sie für Datenansichten 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 mit Robolectric auf der JVM ausgeführt werden.
Mit UI-Verhaltenstests können Sie prüfen, ob die Navigation einer App richtig implementiert ist. Dabei werden Aktionen wie Klicks und Wischen ausgeführt. Bei UI-Verhaltenstests wird auch geprüft, ob bestimmte Elemente oder Eigenschaften vorhanden sind. Weitere Informationen finden Sie unter UI-Tests automatisieren.
Bei Screenshot-Tests wird ein Screenshot einer Benutzeroberfläche oder Komponente erstellt und mit einem zuvor genehmigten Screenshot verglichen. 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 Unit-Tests, um die Funktionalität von Logikeinheiten zu testen, die sich je nach Gerätetyp oder Fenstergröße unterschiedlich verhalten. Unit-Tests sind in diesem Bereich jedoch weniger üblich.
Nächste Schritte
Weitere Informationen zur Implementierung der in diesem Dokument enthaltenen Prüfungen finden Sie unter Bibliotheken und Tools.