*** # Teststufen und Arten *** ### Modul 450 --- # Testpyramide ## Nach Lehrbuch ***  ---- # Testvase ## Die eigentliche Pyramide... ***  --- # Testarten ***
# Was steckt dahinter?
 Note: * Gruppenarbeit 30' * Zusammentragen 15'
---- ## Testarten # Unittests *** * einzlene Einheiten isoliert vom Rest des Systems * Einheit: Klasse, Methode, Funktion
### Vorteile * schnell * einfach zu kontrollieren * einfach zu schreiben
### Nachteile * unrealistisch * unvollständig
Note: **Vorteile** * schnell auszuführen: praktisch alles passiert lokal und im Arbeitsspeicher (Millisekunden) * einfach zu kontrollieren: der Test wird über mitgegebene Parameter definiert * einfach zu schreiben: es muss keine Umgebung aufgebaut werden **Nachteile** * unrealistisch: viele Fehler entstehen aus der Interaktion von Komponenten * unvollständig: nicht alles damit testbar (Abhängigkeiten) ---- ## Testarten # Integrationstests *** * Integration zwischen Komponenten * Komponenten: Klassen, Funktionen, (Web-Services), Module
### Vorteile * realistisch * vollständig
### Nachteile * aufwändig * langsam * zerbrechlich
Note: **Vorteile** * realistisch: testet Einheiten und deren Interaktionen untereinander * vollständig: Interaktion mit externen Systemen kann getestet werden **Nachteile** * aufwändig: Abhängigkeiten müssen in den richtigen Zustand gebracht werden * langsam: Zugriffe auf externe Systeme sind zeitintensiv (Sekunden) * zerbrechlich (brittle): Fehler an einer Einheit wirken sich auf mehrere Tests aus ---- ## Testarten # Systemtests *** * das System als ganzes
### Vorteile * vollständig * aussagekräftig
### Nachteile * langsam * schwierig * unzuverlässig
Notes: **Vorteile** * vollständig: das komplette System wird getestet * aussagekräftig: Testergebnisse repräsentieren Funktionalität **Nachteile** * langsam: Aufstarten, Aufsetzen, Kommunikation (Minuten) * schwierig zu schreiben: zusätzlicher Code zur Testausführung nötig * unzuverlässig (“flaky”): künstliche Umgebung läuft weniger stabil als Produktivumgebung ---- ## Testarten # Manuelle Tests *** * das System als ganzes
### Vorteile * mehr als nur eine Maschine * Fachpersonal
### Nachteile * langsam * fehleranfällig
Notes: **Vorteile** * mehr als nur eine Maschine: Es können Details auffallen welche sonst nicht bemerkt werden * Fachpersonal: schaut das was bei ihnen wichtig ist **Nachteile** * langsam: Aufstarten, Aufsetzen, Kommunikation (Minuten) * fehleranfällig: Menschen machen Fehler --- ## Testarten # Weitere ***
* End-to-End-Test * Usability-Test * Penetrationstest * Lasttest * Benchmarks * Fuzzying * property-based Test
Bekanntes oder schon eingesetzt?  Note: * Gruppenarbeit 5' * Zusammentragen 5'
Note: * End-to-End-Test: Verwendet Client- und Serverkomponente (Systemtest) * Usability-Test: Fokus auf Benutzerführung, Optik, Barrierefreiheit usw. * Penetrationstest: Sicherheitstest für Aussgengrenzen (Eindringen in ein System) * Lasttest: Verhalten des Systems unter (hoher) Last * die Last wird meistens synthetisch generiert * Benchmarks: Zeitliche Messung unter wiederholter Ausführung * Vergleich verschiedener Implementierungen * Fuzzying: “Beschiessen” von Komponenten mit synthetisch generierten Zufallsdaten * zum Auffinden unerwarteter Verhalten * property-based Test: Testen allgemeiner Eigenschaften statt konkreter Werte * z.B. “Summe positiver Zahlen ist immer positiv” Einige dieser Testarten werden im weiteren Verlauf des Moduls noch behandelt. * Gruppenarbeit 5' * Zusammentragen 5'