* Verständnis der Bedeutung und Notwendigkeit des Testens in der Softwareentwicklung.
* Erlernen der Grundbegriffe und Konzepte im Bereich des Softwaretestens.
* Kennenlernen verschiedener Testmethodologien und deren Anwendungen.
* Verstehen des Testprozesses und der Rolle psychologischer Aspekte im Testen.
### Erkenntnis
Das Testen von Software ist ein kritischer Schritt zur Sicherstellung der Qualität und Zuverlässigkeit von Softwareprodukten. Durch die Identifizierung von Fehlern (Errors), Defekten (Defects) und Fehlverhalten (Failures) lassen sich potenzielle Probleme frühzeitig erkennen und beheben. Diverse Testmethoden, wie manuelle Tests, automatisierte Tests und statische Codeanalysen, bieten verschiedene Ansätze zur Fehlerfindung und Qualitätssicherung.
* Verständnis der Bedeutung und des Einsatzes von automatisierten Tests in der Softwareentwicklung.
* Kennenlernen der Probleme manuellen Testens und der Vorteile von automatisierten Tests, insbesondere UnitTests.
* Einsicht in die Grundlagen und Anforderungen an zu testenden Code.
* Erkennen der Unterschiede zwischen Application/Module-Tests und UnitTests.
* Erlernen, wie man gute UnitTests schreibt und was diese auszeichnet (z.B. FAST-Prinzipien).
### Kritik
NA
### Erkenntnis
Automatisiertes Testen, insbesondere UnitTesting, ist entscheidend für die effiziente und effektive Entwicklung von Software. Es adressiert die Probleme manuellen Testens, wie mangelnde Wiederholbarkeit und nachlassende Aufmerksamkeit, und bietet Vorteile wie schnellere Ausführung und Unabhängigkeit von Tester:Innen. Gute UnitTests folgen bestimmten Prinzipien (FAST: Fast, Independent, Repeatable, Selfverifying, Timely) und tragen wesentlich zur Vermeidung ungewollter Änderungen bei. Die Qualität des produktiven Codes beeinflusst direkt die Qualität der Tests.
### Wiederholung
**Unterschied zwischen Application/Module-Tests und UnitTests:**
* **Application/Module Tests:** Später im Entwicklungszyklus, komplexere Tools, wartungsaufwendig, zeigen nur das Vorhandensein von Fehlern.
* **Unit Tests:** Früh im Entwicklungsprozess, einfachere Tools, widerstandsfähig gegen Änderungen, präzise Fehlerlokalisierung und Fokus auf Geschäftslogik.