About this episode
Nach der Episode über die Fehler, spechen wir heute darüber, wie man sie vermeidet. Wie nicht anders zu erwarten, ist auch dies ein Thema, bei dem reichhaltige Meinungsdiskurse geführt werden.Shownotes
Warum testen? -> siehe STP037
Anforderungen an Tests
reproduzierbar: nicht abhängig von unerwarteten äußeren Einflüssen oder menschlicher Intervention
fokussiert: im Fehlerfall soll möglichst klar sein, wo das Problem liegt
schnell: damit man beim Ändern des Systems schnelles Feedback bekommt (siehe auch XKCD 303)
realitätsnah: überprüft eine Funktion, die der Benutzer so tatsächlich benötigt
manuelle Tests
kostenintensiv: Online-Shooter braucht(e) 200 Tester (das Spiel erlaubt Matches mit bis zu 60 Teilnehmern)
erfüllt von den obigen Anforderungen nur die Realitätsnähe
wenn's geht, lieber automatisieren
gängige Strategie: manuelle Tests zur Fehlersuche, im Zweifelsfall durch die Kunden ;) – dann Nachstellung des gefundenen Problems
automatisierte Tests am Beispiel der Testpyramide
Unit Tests: Überprüfung einer einzelnen Komponente in Isolation
besonders wertvoll, wenn die Komponenten auf besonders reproduzierbare Weise arbeiten (zum Beispiel pure Berechnungen; Vorgänge, die nicht Netzwerkzugriff/Festplattenzugriff/etc. erfolgen)
Problem: es reicht nicht, wenn jede Komponente für sich genommen funktioniert, aber sie nicht zusammen passen
Bewertung: reproduzierbar, fokussiert, schnell, aber nicht realitätsnah
Integration Tests: Überprüfung des Zusammenspiels mehrerer Komponenten eines Gesamtsystems
nach Möglichkeit Eingrenzung äußerer Faktoren, z.B. statt Kommunikation mehrerer Komponenten über ein reales Netzwerk Simulation einer Netzwerkstruktur im Programm oder mittels Containern/VMs (siehe STP023)
Bewertung: tendenziell weniger reproduzierbar, etwas langsamer, weniger fokussiert, aber realitätsnäher
End-to-End-Tests (E2E): Überprüfung des Verhaltens eines Gesamtsystems
analog zu den manuellen Tests, aber nach festem Algorithmus
höchster Aufwand in der Umsetzung, siehe insbesondere UI-Tests mittels Headless Browser etc.
Bewertung: am wenigsten reproduzierbar (aufgrund der Vielzahl an Variablen), am unfokussiertesten, am langsamsten, aber am nächsten an der Realit