Lektion 03 - Testverfahren
Testverfahren: Welche Art von Test brauchst du?
Nicht jeder Test prueft dasselbe. Manche Tests pruefen eine kleine Funktion, andere pruefen mehrere Bausteine zusammen, wieder andere pruefen die ganze App aus Sicht eines Users. In dieser Lektion lernst du die wichtigsten Testverfahren.
1. Die Testpyramide
Die Testpyramide ist ein Denkmodell. Unten stehen viele schnelle kleine Tests. Oben stehen wenige grosse Tests, die naeher am echten Nutzerverhalten sind, aber laenger dauern und aufwendiger sind.
Testpyramide:
End-to-End Tests
Integrationstests
Widget- / Komponententests
Unit-Tests
Als Lernregel gilt: Viele Unit-Tests, einige Integrations- oder Widget-Tests, wenige sehr grosse End-to-End-Tests.
2. Unit-Tests
Unit-Tests pruefen eine kleine Einheit. Das ist oft eine Funktion, Methode oder Klasse. Sie sind schnell, klar und gut fuer Logik geeignet.
int add(int a, int b) {
return a + b;
}
test('addiert zwei Zahlen', () {
expect(add(2, 3), 5);
});
Unit-Tests sind ideal fuer Berechnungen, Validierung, Formatierung, Statuslogik und Klassenmethoden.
3. Widget-Tests in Flutter
Widget-Tests pruefen Flutter-Oberflaechen. Du kannst testen, ob Text sichtbar ist, ob ein Button existiert oder ob sich die Anzeige nach einem Klick aendert.
testWidgets('Counter startet bei 0', (tester) async {
await tester.pumpWidget(const MyApp());
expect(find.text('0'), findsOneWidget);
expect(find.text('1'), findsNothing);
});
tester.pumpWidget baut das Widget fuer den Test auf. Mit
find.text suchst du nach sichtbarem Text.
4. Integrationstests
Integrationstests pruefen, ob mehrere Teile zusammen funktionieren. Zum Beispiel: Eine Eingabe wird gemacht, ein Service verarbeitet Daten und die UI zeigt danach das Ergebnis.
5. Systemtests und End-to-End-Tests
Systemtests pruefen ein komplettes System. End-to-End-Tests gehen noch staerker aus Nutzerperspektive vor: User oeffnet App, klickt, gibt Daten ein und sieht ein Ergebnis. Diese Tests sind realistisch, aber langsamer und empfindlicher.
End-to-End-Idee:
App starten
Login-Daten eingeben
Login klicken
Dashboard muss sichtbar sein
Neue Aufgabe anlegen
Aufgabe muss in Liste erscheinen
6. Weitere Testverfahren
7. Welcher Test fuer welchen Zweck?
8. Uebungen
- Ordne zehn Beispieltests den Kategorien Unit, Widget, Integration oder End-to-End zu.
- Schreibe drei Unit-Test-Ideen fuer eine Klasse
LearningTask. - Schreibe zwei Widget-Test-Ideen fuer eine Counter-App.
- Schreibe einen Akzeptanztest fuer: User kann eine Aufgabe als erledigt markieren.
- Entscheide fuer jeden Test, ob er eher Black-Box oder White-Box ist.