Phase 10
Testing & Quality
Unit-Tests, UI-Tests mit Compose, Debugging, Profiling und Qualitätssicherung im Android-Projekt.
21 Artikel
Die Testing-Pyramide für Android
Die Testing-Pyramide hilft dir, schnelle Unit-Tests und realistische UI-Tests sinnvoll zu balancieren. Lerne, wie du dein Testbudget effizient einteilst.
Was du testen solltest
Nicht jeder Codeabschnitt verdient gleich viele Tests. Lerne, wie du nach Risiko, Verhalten und Wert priorisierst.
Lokale Unit-Tests
Lokale Unit-Tests prüfen Kotlin-Logik direkt auf der JVM, ohne Android-Gerät. Sie liefern schnelles Feedback und sichern Architektur-Code zuverlässig ab.
Instrumentierte Tests: Echtes Android-Framework-Verhalten testen
Instrumentierte Tests laufen direkt auf einem Gerät oder Emulator. Sie prüfen echtes Android-Framework-Verhalten, das Unit Tests nicht abbilden können.
Assertions – Erwartetes Verhalten klar formulieren
Assertions machen Testversprechen explizit. Sie zeigen beim Fehlschlag genau, was erwartet wurde und was stattdessen ankam.
Tests sinnvoll benennen
Gut benannte Tests zeigen beim Fehlschlag sofort, was falsch läuft. Lerne Konventionen für lesbare und wartbare Testsuiten.
Test Doubles: Fakes, Mocks, Stubs und Spies richtig einsetzen
Test Doubles ersetzen echte Abhängigkeiten im Test. Dieser Artikel erklärt Fake, Mock, Stub und Spy und wann du welchen Typ wählst.
Fakes statt Mocks
Fakes ersetzen brüchige Mocks durch realistische In-Memory-Implementierungen. Du erfährst, wann dieser Tausch die Testwartbarkeit messbar verbessert.
ViewModel Testing: Zustände und Events zuverlässig testen
ViewModel-Tests prüfen Zustandsübergänge und Ereignisbehandlung isoliert. So erkennst du Fehler in der UI-Logik früh und zuverlässig.
Repository Testing: Datenschicht zuverlässig absichern
Repository-Tests prüfen die Datenschicht deiner Android-App auf lokalem Speicher, Remote-APIs und Fehlerpfaden. So baust du eine belastbare Architektur.
Room Testing: DAOs und Migrationen sicher testen
Mit In-Memory-Datenbanken testest du Room-DAOs und Schemamigrationen isoliert und schnell. So erkennst du Datenbankfehler früh.
Network Testing: API-Verhalten mit Fake-Servern und Fixtures testen
Fake-Server und Fixtures machen API-Tests deterministisch und reproduzierbar. So prüfst du Fehlerszenarien zuverlässig ohne echtes Backend.
Coroutine Test Dispatchers: Deterministische Tests mit runTest
Coroutines in Tests beherrschbar machen erfordert die richtigen Dispatcher. Lerne, wie du mit runTest und virtueller Zeit deterministische Tests schreibst.
Flow Testing in Android mit Kotlin
Du prüfst Flow-Streams gezielt auf Reihenfolge, Ende und Fehler. So werden asynchrone Datenpfade in Android verlässlicher.
Compose UI Testing
Compose UI Testing prüft Screens über den Semantik-Baum statt über Implementierungsdetails. Du lernst Finder, Matcher und Assertions gezielt einzusetzen.
Compose Test Tags: Selektoren gezielt vergeben
Lerne, wann und wie du Test Tags in Jetpack Compose einsetzt. So bleiben deine UI-Tests stabil und wartbar.
Navigation Testing
Navigation Testing prüft, ob Nutzer sicher durch App-Flows navigieren. Routen, Back-Stack und Deep Links werden dabei systematisch verifiziert.
Espresso Awareness: UI-Tests in View-basierten Android-Apps
Espresso ist Androids offizielles UI-Testframework für Views – zuverlässig dank automatischer Synchronisation.
UI Automator: Tests jenseits der eigenen App
UI Automator ermöglicht Tests über App-Grenzen hinweg. Du lernst, System-UI und andere Apps in Testszenarien einzubeziehen.
Barrierefreiheit testen: Checks, Screen-Reader und Semantik
Accessibility Testing umfasst automatisierte Checks und manuelles Testen mit TalkBack, um Android-Apps für alle Nutzer zugänglich zu machen.
Lint: Statische Analyse für Android-Projekte
Android Lint findet Fehler und Warnungen in deinem Quellcode, ohne dass du die App starten musst. Nutze es für bessere Codequalität.