@ -159,3 +159,30 @@ Im Rahmen der Testplanung und Teststrategie sind klare Ziele für das Projekttes
### Wiederholung
Die Testfallentwicklung umfasste die Erstellung von Szenarien, die sich an den Anforderungen orientieren, um eine korrekte Funktionsweise der Software zu gewährleisten. Dabei wird besonderes Augenmerk auf verschiedene Defektarten wie lexikalische, syntaktische, semantische und logische Fehler gelegt, um eine umfassende Testabdeckung sicherzustellen und potenzielle Schwachstellen frühzeitig zu identifizieren.
## Vorlesung am 19.12.2024
### Lernziele
- Motivation für automasierte Tests
- Probleme manuellen Testens: Testfähigkeit der Software, Wiederholbarkeit, Fehlerzustände Testen, Wissen der Tester, Aufwand
- Qualitätskosten
- Gründe gegen Automatischen Test: UnitTests schreiben eine Fertigkeit, muss ständig geübt werden; Technische Vorraussetzungen sichergestellt , Team und Chef mussen unterstützen
- Grundlagen
- welche Tests automatisieren? häufig Wiederholte, hohe Anzahl, hohe Kritikalität, hohw Stabilität
- Unittests prüfenm die Geschäftslogik, Application/Module-Tests testen die "Verdrahtung"
- Unittests sind ausfürbare Dokumentationen, sie testen keinen Code, verifizieren von außen beobachtbares gewünschtes Verhalten, ein einzelner test testet genau eine Erwartung
- gute Unittests nach F(ast) I(ndependent) R(epeatable) S(elfevaluating) T(imely) und R(eadable) T(Trustworthy) F(ast) M(aintainable)
- Anforderungen an zu testenden Code
- Testbarkeit von produktivem Code
- Arten von Test-Doubles: Stub, Fake, Mock
- was Ermöglicht die Ersetzung von Abhängigkeiten?
- schreibe "Clean Code": programmiere gegen Schnitstellen, SoC/SRP (Feature envy), Law of Demeter, DRY, same level of abstraction
### Erkenntnis
Unittests ermöglichen eine systematische Überprüfung der einzelnen Komponenten des Projekts, gewährleisten Konsistenz und verringern das Risiko von Fehlern. In einer Gruppenarbeit ermöglichen Unittests eine bessere Zusammenarbeit, da sie die Integration neuer Funktionen erleichtern und das Vertrauen in den Code der Teammitglieder stärken. Zudem erleichtern sie die Fehlererkennung und -behebung, was die Gesamteffizienz des Entwicklungsprozesses steigert.
### Wiederholung
Die Qualitätskosten zeigen auf ob man eher die Kosten im vorne hinein hat durch viele und gute Tests, oder ob man nachdem die Software herrausgegeben wurde kosten durch Fehler enstehen die durch gutes Testen hätten gefunden und behoben werden können. Die beste Lösung ist es einen Sweet Spot zwischen den beiden Extremen zu finden. Jedoch muss auch einzeln danach geguckt werden wie wichtig die Fehlerfreie Funktion ist, zum Beispiel, falls es um Menschenleben geht sollte man vielleicht mehr Testen.