Testen in der mobilen Entwicklung: was es ist, welche Arten und wie man es organisiert

Autor: IT Sectr Veröffentlicht: 2026-03-31 Lesezeit: 9 Min.

Mobile-App-Testing ist der Prozess der Überprüfung, ob eine Anwendung korrekt funktioniert, nicht abstürzt und die Anforderungen erfüllt. Laut Software Testing Help (2025) reduziert automatisiertes Testen die Zeit für Regressionstests um 70–80% im Vergleich zu manuellen Tests. In diesem Artikel behandeln wir Testebenen, Tools für iOS und Android, TDD und BDD sowie CI/CD für Tests.

Wichtigste Erkenntnisse

  • Unit-Tests überprüfen einzelne Funktionen und Klassen; Integrationstests überprüfen die Interaktion von Modulen; E2E deckt das gesamte Benutzerszenario ab.
  • iOS: XCTest für Unit-Tests, XCUITest für UI-Tests. Android: JUnit + Mockito + Espresso.
  • Plattformübergreifende Frameworks: Detox (React Native), Appium (universell), XCUITest (iOS).
  • TDD (Test-Driven Development) — zuerst der Test, dann der Code; BDD — Szenarien in verständlicher Sprache.
  • CI/CD: Tests werden automatisch bei jedem Push ausgeführt — das ist ein verbindlicher Standard für die kommerzielle Entwicklung.

Testebenen: Unit, Integration, E2E

Unit-Tests

Unit-Tests sind die Grundlage des Mobile-App-Testings. Sie überprüfen die kleinste Code-Einheit — eine einzelne Funktion, Methode oder Klasse isoliert vom Rest des Systems. In der mobilen Entwicklung werden Unit-Tests in JUnit (Android) und XCTest (iOS) geschrieben. Ein guter Unit-Test muss schnell, unabhängig und wiederholbar sein — er darf nicht von Netzwerk, Datenbank oder UI-Komponenten abhängen. Zur Isolation werden Test-Doubles verwendet: Mocks, Stubs und Fakes.

Mockito (Java/Kotlin) und MockK (Kotlin-first) sind beliebte Bibliotheken zum Erstellen von Mock-Objekten unter Android. Auf iOS werden OCMock, Cuckoo oder manuelle Protokolle verwendet. Regel: Unit-Tests sollten Geschäftslogik und Datenmodelle abdecken. UI-Tests sollten Unit-Tests nicht duplizieren — sie überprüfen die Benutzerinteraktion mit der Oberfläche.

Integrationstests

Integrationstests überprüfen die Interaktion zwischen Komponenten: Repository mit Datenbank, ViewModel mit API-Dienst, Navigation zwischen Bildschirmen. Im Gegensatz zu Unit-Tests verwenden Integrationstests reale oder realitätsnahe Abhängigkeiten (z. B. In-Memory-Datenbank oder Mock-Server). Robolectric ist ein Framework zum Ausführen von Android-Tests auf der JVM ohne Emulator, das Integrationstests um das 10-fache beschleunigt.

Snapshot-Tests (Golden Tests) sind eine spezielle Art von Integrationstests, die eine gerenderte UI-Komponente mit einem Referenzbild (Snapshot) vergleichen. Wenn sich das Aussehen ändert, schlägt der Test fehl — der Entwickler sieht, was sich geändert hat. Facebook SnapshotTestCase (iOS) und Shot (Android) sind beliebte Tools für Snapshot-Tests.

E2E- und UI-Tests

E2E-Tests (End-to-End) überprüfen das vollständige Benutzerszenario von Anfang bis Ende: App-Start, Anmeldung, Durchführung einer Aktion, Überprüfung des Ergebnisses. UI-Tests sind eine Teilmenge von E2E, die sich auf die Oberfläche konzentriert. Tools: Espresso (Android), XCUITest (iOS), Detox (React Native). E2E-Tests sind am langsamsten, daher werden sie separat auf CI ausgeführt — normalerweise bei nächtlichen Builds.

iOS-Tools: XCTest und XCUITest

XCTest

XCTest ist Apples integriertes Framework für Unit-Tests mobiler Anwendungen. XCTestRunner führt Tests auf dem Simulator oder einem realen Gerät aus. Tests erben von XCTestCase, enthalten setUp und tearDown zur Vorbereitung und Bereinigung. XCTest enthält XCTAssert für Behauptungen (XCTAssertEqual, XCTAssertNil, XCTAssertTrue) und XCTWaiter zum Warten auf asynchrone Operationen.

Beispiel eines einfachen XCTest-Tests: Erstellen eines User-Modells, Überprüfung der Korrektheit der Initialisierung, Namensformatierung und Altersberechnung. Code Coverage in Xcode zeigt, welche Codezeilen von Tests abgedeckt werden — das Ziel für kommerzielle Projekte: mindestens 70–80% Abdeckung der Geschäftslogik. XCTest ist über xcodebuild test in Xcode Server und CI-Systeme integriert.

XCUITest

XCUITest ist Apples Framework für UI-Tests. Es arbeitet über Accessibility-Identifikatoren: XCUIElementQuery findet Schaltflächen, Eingabefelder, Tabellen nach Label, Identifier oder Typ. XCUITest zeichnet eine Aktionssequenz auf (Record/Playback) und generiert Testcode. Wichtig: Alle UI-Elemente müssen einen accessibilityIdentifier für einen stabilen Testbetrieb haben.

Android-Tools: JUnit, Espresso, Robolectric

JUnit und Mockito

JUnit ist das grundlegende Framework für Unit-Tests mobiler Anwendungen in Java/Kotlin. Unter Android werden JUnit 4 (neueste stabile Version 4.13.2) und JUnit 5 für neue Projekte verwendet. Mockito ist eine Bibliothek zum Erstellen von Mock-Objekten: when(mock.method()).thenReturn(value) — ein Standardmuster zum Isolieren der getesteten Klasse von Abhängigkeiten.

Beispiel eines JUnit-Tests für Android:

java
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.Mock;
import org.mockito.junit.MockitoJUnitRunner;

import static org.junit.Assert.*;
import static org.mockito.Mockito.*;

@RunWith(MockitoJUnitRunner.class)
public class LoginViewModelTest {

    @Mock
    AuthRepository authRepository;

    @Test
    public void login_emptyEmail_returnsError() {
        LoginViewModel vm = new LoginViewModel(authRepository);
        String result = vm.login("", "password123");
        assertEquals("Email cannot be empty", result);
        verify(authRepository, never()).authenticate(any());
    }
}

Espresso und UI Automator

Espresso ist Googles Framework für Android-UI-Tests. Espresso synchronisiert automatisch mit dem UI-Thread: onView(withId(R.id.button)).perform(click()).check(matches(isDisplayed())). Espresso ist einfach zu schreiben und stabil dank integrierter Wartezeit auf den Ruhezustand. UI Automator ist ein Framework für appübergreifende Tests, das mit Systemelementen (Berechtigungsdialoge, Benachrichtigungsleiste) interagieren kann.

Plattformübergreifende Tools: Detox, Appium

Detox für React Native

Detox ist ein Gray-Box-E2E-Framework zum Testen von React-Native-Mobil-Apps von Wix. Detox funktioniert auf beiden Plattformen von einer einzigen Testcodebasis aus und verwendet intern Espresso (Android) und XCUITest (iOS). Detox wartet automatisch, bis die App inaktiv ist (keine Animationen, Netzwerkanfragen, Timer), und führt erst dann die nächste Aktion aus.

Appium

Appium ist ein universelles plattformübergreifendes Framework, das Android, iOS, Web und Hybrid-Apps unterstützt. Appium verwendet das WebDriver-Protokoll und unterstützt jede Programmiersprache (Java, Python, JS, Ruby). Appium Server fungiert als HTTP-Server, der Befehle in native UI-Automator-/XCUITest-Befehle übersetzt. Der Hauptnachteil von Appium ist die Geschwindigkeit: Tests laufen langsamer als native Espresso- oder XCUITest-Tests.

Vergleich von iOS- und Android-Testtools
Kriterium iOS Android
Unit-Tests XCTest JUnit 4/5 + Mockito
UI-Tests XCUITest Espresso, UI Automator
Snapshot-Tests FBSnapshotTestCase Shot, Roborazzi
Gestenautomatisierung XCUIGesture UiAutomator touch
Code Coverage Xcode Code Coverage Jacoco
CI-Integration xcodebuild test Gradle connectedCheck

TDD und BDD: Testmethodiken

TDD: Test-Driven Development

TDD ist eine Mobile-App-Testmethodik, bei der der Test vor dem Implementierungscode geschrieben wird. Der Red-Green-Refactor-Zyklus: (1) einen Test schreiben, der fehlschlägt (Red), (2) minimalen Code schreiben, um den Test zu bestehen (Green), (3) den Code umgestalten, während der Test bestanden bleibt. TDD bietet 100% Testabdeckung für neue Funktionen und eine saubere Architektur, da der Test die erste Spezifikation der Anforderung ist.

BDD: Behaviour-Driven Development

BDD ist eine Erweiterung von TDD, bei der Tests in natürlicher Sprache im Given-When-Then-Format geschrieben werden. Given (Kontext) — When (Aktion) — Then (erwartetes Ergebnis). BDD-Tests sind für alle Teammitglieder verständlich: Entwickler, Tester, Analysten und Kunden. Mock vs. Stub vs. Fake: Mock überprüft die Interaktion (ob die Methode aufgerufen wurde), Stub gibt feste Daten zurück, Fake ist eine vereinfachte funktionierende Implementierung (z. B. In-Memory-DB). Bei IT Sectr verwenden wir TDD für kritische Geschäftslogik und BDD für Abnahmeszenarien.

Test-Doubles ist der allgemeine Name für Objekte, die reale Abhängigkeiten in Tests ersetzen. Es gibt vier Typen: Dummy (Objekt zum Füllen von Parametern, wird nicht verwendet), Stub (gibt vorgegebene Werte zurück), Spy (zeichnet Aufrufe zur Überprüfung auf), Mock (definiert erwartete Aufrufe vorab). Das Verständnis des Unterschieds ist für ein korrektes Testdesign entscheidend.

CI/CD und Device Farm

Testautomatisierung in CI/CD

CI/CD — Continuous Integration und Continuous Delivery: die Praxis des automatischen Buildens und Testens mobiler Anwendungen bei jeder Codeänderung. In der mobilen Entwicklung umfasst die CI/CD-Pipeline: Linting, Unit-Tests, Integrationstests, APK/IPA-Build und UI-Tests. GitHub Actions und Bitrise sind beliebte Plattformen für mobiles CI/CD. Tests sollten schnell ausgeführt werden: Unit-Tests in 1–2 Minuten, Integrationstests in 5–10, UI-Tests in 15–30 Minuten.

Device Farm

Device Farm ist eine Farm realer Geräte zum Testen. Firebase Test Lab (Android) und Xcode Cloud (iOS) bieten Cloud-Zugriff auf hunderte Gerätemodelle. Device Farm deckt Probleme auf, die auf Emulatoren nicht sichtbar sind: unterschiedliche Bildschirmgrößen, Leistung auf älteren Geräten, Kompatibilitätsprobleme. Bei IT Sectr verwenden wir regelmäßig Firebase Test Lab für Android und Xcode Cloud für iOS.

Häufig gestellte Fragen

Welcher Prozentsatz der Testabdeckung gilt als normal?

Für kommerzielle Projekte mindestens 70–80% Abdeckung der Geschäftslogik. UI-Code ist schwerer abzudecken — 50% sind ausreichend. Die Hauptsache ist nicht der Prozentsatz, sondern die Qualität der Tests: Testen Sie kritische Szenarien, Grenzfälle und Fehlerbehandlung.

Wie unterscheidet sich Mock von Stub?

Mock überprüft die Interaktion — ob eine bestimmte Methode mit bestimmten Parametern aufgerufen wurde. Stub gibt vordefinierte Daten zurück. Mock prüft das Verhalten, Stub prüft den Zustand.

Sollte ich Tests für die UI schreiben?

Ja, aber nur für kritische Szenarien: Login, Registrierung, Bestellabschluss, Zahlung. UI-Tests sind langsam und fragil — schreiben Sie keinen Test für jeden Bildschirm. Konzentrieren Sie sich auf E2E-Benutzerszenarien.

Was ist ein Snapshot-Test?

Snapshot-Test (Golden Test) vergleicht eine gerenderte UI-Komponente mit einem Referenzbild. Wenn sich das Aussehen ändert (Schriftart, Abstand, Farbe), schlägt der Test fehl — der Entwickler prüft, ob die Änderung beabsichtigt ist. Ideal für Komponentenbibliotheken.

Wie kann ich E2E-Tests beschleunigen?

Führen Sie E2E-Tests parallel auf mehreren Geräten aus, verwenden Sie Cloud Device Farm und teilen Sie Tests in unabhängige Gruppen auf. Optimieren Sie Tests: minimieren Sie Wartezeiten, verwenden Sie Mocks für Netzwerkanfragen.

Zusammenfassung

  • Unit-Tests — die Basis der Testpyramide: schnell, isoliert, decken Geschäftslogik ab.
  • iOS: XCTest für Unit, XCUITest für UI. Android: JUnit + Mockito, Espresso für UI, Robolectric für schnelle Integrationstests.
  • Plattformübergreifende Frameworks: Detox (React Native), Appium (universell), XCUITest (iOS-nativ).
  • TDD — Test vor Code, BDD — Szenarien in Geschäftssprache (Given-When-Then).
  • CI/CD — automatische Testausführung bei jedem Push ist für die moderne Entwicklung obligatorisch.
  • Device Farm — Tests auf realen Geräten in der Cloud zur Identifizierung von Hardwareproblemen.
  • Die Testpyramide: viele Unit, weniger Integration, noch weniger E2E — das optimale Gleichgewicht zwischen Geschwindigkeit und Abdeckung.

Wir entwickeln eine mobile Applikation schlüsselfertig

IT Sectr entwickelt seit 2017 iOS- und Android-Apps für Startups und Unternehmen. Wir beraten Sie und schlagen die beste Lösung vor.

Projekt besprechen