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.
Testelemente
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 Ausführung. 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. Erstelle UI-Tests, um das Verhalten deiner Layouts und Komponenten zu überprüfen, oder erstelle Screenshot-Tests, um die Layouts visuell zu prü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 Anwendung 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 Konfigurationsänderungen die Aktivität standardmäßig neu erstellen, treten einige Abstürze aufgrund der Annahme einer Aktivitätspersistenz 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 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 sich ein Nutzer beispielsweise eine Benutzeroberfläche mit Listendetails auf einem offenen faltbaren Gerät ansieht und das Gerät zusammenfaltet, um zum Frontdisplay zu wechseln, wird in der Regel die Detailseite angezeigt. Ein automatisierter Test sollte diese Wiederherstellung des UI-Zustands, 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:
- Sie können während eines Tests die Bildschirmgröße auf einem beliebigen Gerät ändern. In den meisten Fällen werden dadurch alle Mechanismen zur Zustandswiederherstellung ausgelöst, die Sie prüfen müssen. Dieser Test funktioniert jedoch nicht bei Logik, die bestimmte Sicherheitspositionen in faltbaren Smartphones erkennt, da Änderungen des Sicherheitsstatus 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 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 mit Robolectric auf der JVM ausgeführt werden.
Mit Tests des UI-Verhaltens kannst du prüfen, ob die Navigation in einer App korrekt implementiert ist. Mit den Tests werden Aktionen wie Klicks und Wischbewegungen durchgefü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 Einheitentests, um die Funktionalität von Logikeinheiten zu testen, die sich je nach Geräte- oder Fenstergröße unterschiedlich verhalten. Einheitentests 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.