Die Lernziele dieses Kurses umfassen die Vermittlung von Kenntnissen im Bereich Programmiermethoden und Werkzeuge. Die Schwerpunkte liegen auf der relevanten Literatur, der Motivation für Software-Tests, den Grundlagen von Qualitätssicherung, Testmethodologien, dem Testprozess und psychologischen Aspekten im Kontext von Software-Tests.
###Erkenntnis
+Motivation für Software-Tests:
Menschen machen Fehler, und Fehler im Code führen zu unerwünschtem Softwareverhalten.
Unerwünschtes Softwareverhalten ist teuer, sowohl materiell als auch ideell.
+Grundlagen:
Begriffe wie Qualitätssicherung, Testmanagement, Testumgebung und Software werden erklärt.
Unterscheidung zwischen Error, Defect und Failure sowie verschiedene Arten von Fehlern und Defekten werden behandelt.
+Testmethodologie:
Arten von Tests, Bestandteile eines Tests, Testziele, Testebenen, Testpyramide, Testnamen und Qualitätskosten werden erläutert.
Unterscheidung zwischen manuellen und automatisierten Tests, statischer Codeanalyse und dynamischen Tests.
+Testprozess:
Ablauf des Testprozesses, Planung, Analyse & Design, Testausführung und Testnachbereitung werden detailliert beschrieben.
Testplanung gemäß IEE829, Testanalyse & Design basierend auf Anforderungsdokumentation, Testausführung mit Testlog und Testnachbereitung mit Testreport.
###Wiederholung:
-Die psychologischen Aspekte im Zusammenhang mit Software-Tests betonen, dass Menschen Fehler machen, oft Schwierigkeiten haben, ihre eigenen Fehler zu akzeptieren (errare humanum est) und dazu neigen, betriebsblind zu sein. Lösungsansätze umfassen gegenseitiges Testen und die Nutzung formalisierter Fehlerberichte.
Insgesamt bietet der Kurs eine umfassende Einführung in Programmiermethoden und Werkzeuge mit Schwerpunkt auf Software-Tests und deren psychologischen Aspekten.
## SU 04(22.12.2023)
##Lernziel:
Das Hauptziel des Kurses "Programmiermethoden und Werkzeuge" liegt in der Vermittlung von Kenntnissen über die Motivation, Grundlagen, UnitTests und Anforderungen an zu testenden Code. Der Fokus liegt auf der Bedeutung des automatisierten Testens und der Schaffung von Testbarkeit im Entwicklungsprozess.
###Erkenntnis:
+Motivation für automatisiertes Testen:
Probleme des manuellen Testens, darunter Testfähigkeit, Wiederholbarkeit und nachlassende Aufmerksamkeit.
Qualitätskostenoptimierung als Motivator für automatisierte Tests.
Herausforderungen und Gründe gegen automatisierte Tests, einschließlich persönlicher, technischer und sozialer Voraussetzungen.
+Grundlagen:
Automatisierung von Tests basierend auf Kriterien wie häufiger Wiederholung, hoher Anzahl, hoher Kritikalität und hoher Stabilität.
Unterscheidung zwischen Unittests, Modultests, Integrationstests und ApplicationTests.
Erläuterung der Unterschiede zwischen Application/Module-Tests und UnitTests.
+UnitTests:
Die Rolle von Unittests als ausführbare Dokumentation, die von außen beobachtbares gewünschtes Verhalten von Code verifizieren.
Verbesserung der Testbarkeit durch „Clean Code“ und „S.O.L.I.D.“ Prinzipien.
Arten von Test-Doubles: Stub, Fake, Mock.
Ersetzung von Abhängigkeiten durch Bereitstellung von „seams“ und Anwendung von Dependency Injection.
###Wiederholung:
-Die Wiederholung betont die Bedeutung von schnellen, unabhängigen, wiederholbaren, selbstauswertenden, zeitnahen, lesbaren, vertrauenswürdigen und wartbaren Unittests. Die Ersetzung von Abhängigkeiten und die Beachtung von „Clean Code“ Prinzipien werden als Schlüssel für die Testbarkeit des produktiven Codes hervorgehoben.