TestFlight: iOS-Apps vor der Veröffentlichung testen – vollständige Anleitung

Kein ernsthaftes App-Release sollte ohne Beta-Test auskommen. TestFlight ist Apples offizielle Plattform für genau diesen Zweck: Du verteilst Vorab-Versionen deiner iOS-App an ausgewählte Tester, sammelst ihr Feedback und behebst Probleme, bevor die App für alle im App Store erscheint. Diese Anleitung erklärt alles, was du über TestFlight wissen musst – von der Einrichtung bis zur professionellen Tester-Verwaltung.

Was ist TestFlight?

TestFlight wurde ursprünglich von Burstly entwickelt und 2014 von Apple übernommen. Seit iOS 8 ist es Apples offizielle Beta-Testing-Plattform und steht allen Apple-Developer-Mitgliedern kostenlos zur Verfügung. Tester installieren die kostenlose TestFlight-App aus dem App Store und erhalten darüber Einladungen und Updates zu Beta-Apps.

TestFlight unterstützt iOS, iPadOS, macOS (ab Monterey), watchOS und tvOS-Apps. Du kannst damit bis zu 10.000 externe Tester einladen und unbegrenzt interne Tester aus deinem Entwicklerteam verwalten.

Interne vs. externe Tester

TestFlight unterscheidet grundlegend zwischen zwei Tester-Typen:

Interne Tester

Interne Tester sind Mitglieder deines Apple Developer Teams in App Store Connect. Sie haben folgende Eigenschaften:

Interne Tester werden über ihre Apple ID in App Store Connect eingeladen. Sie müssen eine Rolle im Team haben (mindestens App Manager, Developer oder Marketing).

Externe Tester

Externe Tester sind echte Nutzer außerhalb deines Teams:

Build hochladen und vorbereiten

Bevor du Tester einladen kannst, muss ein Build in App Store Connect vorliegen. Der Upload-Prozess ist derselbe wie für eine reguläre Einreichung:

  1. In Xcode: Gerät auf "Any iOS Device (arm64)" setzen
  2. Product → Archive ausführen
  3. Im Organizer auf "Distribute App" klicken
  4. "App Store Connect" wählen und hochladen

Nach dem Upload (Apple verarbeitet Builds in ca. 15–30 Minuten) erscheint der Build in App Store Connect unter dem TestFlight-Tab. Du kannst dort optional Testnotizen hinzufügen – kurze Beschreibungen, was in diesem Build neu ist oder was die Tester besonders prüfen sollen.

Build-Nummern richtig verwalten

Jeder hochgeladene Build braucht eine eindeutig höhere Build-Nummer (CFBundleVersion). Die Versionsnummer (CFBundleShortVersionString) kann gleich bleiben, bis du bereit für einen neuen App Store Release bist. Ein gängiges Muster für CI/CD-Pipelines ist die Verwendung des Git-Commit-Zählers oder des aktuellen Timestamps als Build-Nummer:

# Build-Nummer aus Git-Commit-Count
BUILD=$(git rev-list --count HEAD)
agvtool new-version -all $BUILD

Tester einladen und Gruppen verwalten

In App Store Connect unter "TestFlight" kannst du Testergruppen anlegen. Gruppen erlauben es, verschiedene Builds an verschiedene Testergruppen zu verteilen – z.B. eine "Early Adopter"-Gruppe für deine treuesten Nutzer und eine "Allgemeine Beta"-Gruppe für breites Feedback.

Externe Tester per E-Mail einladen

  1. Erstelle oder wähle eine externe Gruppe
  2. Klicke auf "Add Testers" und gib E-Mail-Adressen ein (bis zu 10.000)
  3. Weise der Gruppe einen Build zu
  4. Tester erhalten eine Einladungs-E-Mail mit Link zur TestFlight-App

Öffentlicher Einladungslink

Für offene Beta-Tests kannst du einen öffentlichen Link aktivieren. Wer auf diesen Link klickt, wird automatisch als externer Tester eingeladen – ideal für die eigene Website, Social Media oder Newsletter. Du kannst den Link jederzeit deaktivieren oder die Testergruppe pausieren.

Feedback und Crash-Berichte sammeln

TestFlight bietet mehrere Mechanismen für Feedback:

Screenshot-Feedback

Tester können in der TestFlight-App einen Screenshot machen und direkt annotieren. Das Feedback (Screenshot + Kommentar + Gerätedaten) wird automatisch an App Store Connect gesendet. Du siehst alle Einsendungen im TestFlight-Dashboard unter "Feedback".

Crash-Berichte

Abstürze während des Beta-Tests werden automatisch als Crash Reports gesammelt. Du siehst in App Store Connect die Crash-Logs, betroffene iOS-Versionen und Gerättypen. Für eine detailliertere Analyse integriere Crashlytics (Firebase) oder Apples eigenes MetricKit-Framework:

// MetricKit – Crash-Diagnosen empfangen
import MetricKit

class MeineDiagnoseSubscriber: NSObject, MXMetricManagerSubscriber {
    func didReceive(_ payloads: [MXMetricPayload]) {
        // Metriken verarbeiten
    }

    func didReceive(_ payloads: [MXDiagnosticPayload]) {
        // Crash- und Hang-Diagnosen verarbeiten
        for payload in payloads {
            if let crashes = payload.crashDiagnostics {
                print(crashes)
            }
        }
    }
}

Automatische Verteilung und Build-Ablauf

Du kannst TestFlight so konfigurieren, dass neue Builds automatisch an Tester verteilt werden ("Automatic Distribution"). Sobald Apple den Build verarbeitet hat, erhalten alle Tester in der entsprechenden Gruppe eine Push-Benachrichtigung in der TestFlight-App.

Wichtige Rahmenbedingungen:

TestFlight für macOS und andere Plattformen

Seit macOS Monterey können Mac-Apps über TestFlight verteilt werden – sowohl native macOS-Apps als auch Mac Catalyst-Apps. Der Prozess ist identisch zu iOS: Build hochladen, Tester einladen, Feedback sammeln. Tester installieren die TestFlight-App für macOS aus dem Mac App Store.

Für watchOS-Apps wird TestFlight zusammen mit der iOS-App ausgeliefert – du kannst nicht getrennt Watches beta-testen. tvOS-Apps funktionieren ähnlich wie iOS.

Best Practices für effektives Beta-Testing

Aus der Erfahrung mit mehreren veröffentlichten Apps empfehle ich:

Wenn du bereit bist für den echten Release, lies die vollständige App Store Veröffentlichungs-Anleitung. Alle meine veröffentlichten iOS-Apps findest du auf ios.kotsch.tech.

Häufige Fragen

Brauchen externe Tester einen Apple Developer Account?

Nein. Externe Tester brauchen nur eine reguläre Apple ID und die kostenlose TestFlight-App aus dem App Store. Sie müssen kein Entwickler sein und zahlen nichts. Lediglich du als App-Entwickler benötigst das kostenpflichtige Apple Developer Program.

Wie lange haben Tester Zeit, eine Einladung anzunehmen?

Einladungslinks bleiben 30 Tage gültig. Nimmt ein Tester die Einladung nicht innerhalb dieser Zeit an, musst du eine neue Einladung schicken. Öffentliche Einladungslinks haben kein Ablaufdatum, solange du sie nicht deaktivierst.

Kann ich sehen, wer welchen Build tatsächlich installiert hat?

Ja. In App Store Connect siehst du pro Build und pro Testergruppe, wie viele Sessions, Installationen und Crashes es gab. Auf Testerebene siehst du, ob der Tester die Einladung angenommen hat, welche Build-Version installiert ist und wann die App zuletzt genutzt wurde.

Was passiert, wenn ein TestFlight-Build abläuft?

Nach 90 Tagen wird der Build deaktiviert. Die App bleibt auf den Geräten der Tester installiert, lässt sich aber nicht mehr starten – sie sehen eine Meldung, dass der Beta-Build abgelaufen ist. Du musst einen neuen Build bereitstellen oder den Testern mitteilen, die App zu löschen.

Kostet TestFlight etwas?

TestFlight selbst ist kostenlos und im Apple Developer Program inbegriffen. Du zahlst nur die jährliche Developer-Mitgliedschaft (99 USD/Jahr). Es gibt keine zusätzlichen Kosten pro Tester oder pro Build.