diff --git a/Lerntagebuch.md b/Lerntagebuch.md index d27df28..47baca6 100644 --- a/Lerntagebuch.md +++ b/Lerntagebuch.md @@ -265,3 +265,44 @@ Normalerweise sind wir blind für unsere eigenen Fehler, daher wäre es besser, Frühzeitig erkannte Fehler sind kostengünstiger und einfacher zu beheben als solche, die spät entdeckt werden. Die Testpyramide ist ein Leitfaden, um Fehler frühzeitig auf verschiedenen Ebenen zu identifizieren, wobei Unit-Tests besonders präzise Fehlerursachen aufdecken können. Je weiter unten im Entwicklungsprozess ein Fehler erkannt wird, desto schneller und genauer kann ich den Ort des Fehlers bestimmen. Durch Fokus auf Unit-Tests und zusätzliche Integration von Integrations- und UI-Tests können Teams die Softwarequalität verbessern und die Kosten für Fehler minimieren. ___ + +## 8. Vorlesung (19.12.2023) + +### Lernziel + +- Gründe gegen manuelles Testen + - Testfähigkeit der Software, Überlappungen / Lücken bei der Testausführung +- welche Tests automatisieren? Tests mit: + - häufiger Wiederholung + - hohe Anzahl + Kritikalität + Stabilität +- Applications und Module Test vs. UnitTest: + + | Applications und Module Test | UnitTest | + | :----: | :----: | + | Späte Tests von Anwendungen und Modulen | Frühe Tests im Entwicklungsprozess (idealerweise nach jedem Speichern) | + | Komplexe Testwerkzeuge mit hohem Wartungsaufwand | Einfache API für Werkzeuge und Stabilität bei Änderungen (anderer Einheiten)| + | Fehlererkennung, aber ohne genaue Information, wo der Fehler liegt | Klare Anzeige von nicht erfüllten Anforderungen, Fehlerort und Bedingungen | + +- UnitTests prüfen die Geschäftslogik, Application/Module–Tests die ”Verdrahtung” +- UnitTest: + - Unittests sind ausführbare Dokumentation + - Sie testen nicht den Code direkt + - Verifizieren beobachtbares gewünschtes Verhalten + - Prüfen Rückgabewerte und Kommunikation mit anderen Units + - Jeder Test hat eine klare Erwartung + - Verhindern ungewollte Änderungen + - **F**ast, **I**ndependent, **R**epeatable, **S**elfevaluating, **T**imely, **R**eadable, **T**rustworthy, **F**ast, **M**aintainable +- Arten von Test–Doubles: + - Stub + - Fake + - Mock +- Merkmale eines sauberen Codes + +### Erkenntnis + +Wir müssen sauberen Code schreiben, indem wir auf der Grundlage klarer Schnittstellen programmieren und Prinzipien wie das "Separation of Concerns"- und "Single Responsibility"-Prinzip befolgen. Das "Don't Repeat Yourself"-Prinzip (DRY) vermeidet die Wiederholung von Code. Außerdem versuchen wir, sauberen Code zu erzeugen, indem wir eine einheitliche Abstraktionsebene beibehalten, um die Lesbarkeit zu verbessern. + +### Wiederholung + +Unittests sind wie ausführbare Dokumentation, prüfen beobachtbares Verhalten des Codes durch Testen von Rückgabewerten und Kommunikation mit anderen Einheiten, setzen klare Erwartungen in einzelnen Tests und verhindern ungewollte Änderungen. +Unabhängigkeit beim Schreiben von Tests bedeutet: Jeder Test kann einzeln ausgeführt werden und kein Test schafft Vorbedingungen für nachfolgende Tests. Tests können in beliebiger Reihenfolge ausgeführt werden.