- Modul 1: Grundlagen des Softwaretestens und TDD
- Vorurteile und typische Missverständnisse beim Testen
- Manuelles Testen vs. automatisierte Tests
- Unit-Tests, Integrationstests, Akzeptanztests
- Blackbox- und Whitebox-Test
- Testabdeckung, Äquivalenzklassen und sinnvolle Testfälle
- TDD-Grundidee: Red - Green - Refactor
Modul 2: Unit Testing in .NET
- Aufbau automatisierter Tests
- Assert-Methoden und Teststruktur
- Visual Studio Testframework
- Testmethoden, Testklassen, Setup und Cleanup
- Testen von Exceptions und Randfällen
- Tests als Spezifikation und Dokumentation
Modul 3: Übungen zu Testfällen und testbarem Code
- nachträgliches Testen vorhandener Klassen
- Umgang mit Dateien, Events und typisierten Properties
- Kriterien guter Testmethoden
- Unabhängigkeit, Lesbarkeit und Wartbarkeit von Tests
Modul 4: Mocking und Abhängigkeitsisolation
- Grundidee von Mocks, Fakes und Stubs
- Programming against Interfaces
- Interaktionstests und Whitebox-Perspektive
- Mocking mit JustMock-Lite
- Arrange - Act - Assert
- Einführung in Reflection und Dynamic Proxies als Verständnisbasis
Modul 5: TDD in der Praxis
- testgetriebene Entwicklung an einem realistischen Beispielprojekt
- kleine Entwicklungsschritte und kontinuierliches Feedback
- Beispiele: Parser für numerische Expressions, logische Schaltungen oder Geldbeträge/Währungen
- Testfälle formulieren, Implementierung ableiten, Refactoring durchführen
Modul 6: Refactoring, Datenbanktests und Multithreading
- Refactoring eines bestehenden, schlecht strukturierten Programms
- Entwicklung testbarer Klassenstrukturen
- Grundprinzipien beim Testen von Datenbankzugriffen
- Herausforderungen beim Testen von Multithreading-Tools
- Transfer in eigene .NET-Projekte
Methode
Das Seminar kombiniert:
- fachliche Impulse und Live-Demonstrationen
- gemeinsame Code-Analyse und Diskussion von Designentscheidungen
- praktische Übungen direkt in Visual Studio
- Test-first-Entwicklung in kleinen Schritten
- Refactoring-Phasen mit unmittelbarer Testabsicherung
- Erfahrungsaustausch zu typischen Herausforderungen in .NET-Projekten
Die Methodik ist bewusst praxisorientiert. Der Schwerpunkt liegt auf eigenem Tun, nicht auf reiner Tool-Demonstration.