W

de-DE

Unit Testing - von 0 auf TDD an einem Tag

Sprecher: Andreas Richter & Tobias Blaschke
Slot: Montag 09:00 - 17:00 Uhr
Raum: Bördestube
Andreas Richter Tobias Blaschke

Unittests sind mittlerweile Bestandteil des Werkzeugkastens eines jeden Softwareentwicklers. Dennoch wirkt dieses Werkzeug, wenn man es in die Hand nimmt, häufig kompliziert, aufwendig, unnötig, ganz und gar nicht DRY oder YAGNI. Wie ein Multi Funktionstool steht es bereit, bei den vielfältigsten Problemen zu unterstützen. Aber der Zeitpunkt, zu dem sich der Aufwand des Einsatzes lohnt, scheint nicht einzutreten.

Wenn man auf der anderen Seite einmal in einem Projekt mit Unittests zu Gast ist, fühlt man sich in der Regel wohl. Die Unittests unterstützen beim Beheben von Bugs, beim Refaktorisieren von Modulen sowie beim Ergänzen bestehender Projekte um neue Funktionalitäten. Der Code ist meist aufgeräumt, wirkt klar strukturiert, jede Variable hat ihren wohl durchdachten Platz und alles ist irgendwie in sich konsistent.

Versucht man diese positive Erfahrung in eigenen, oft über mehrere Jahre gewachsenen Projekten zu imitieren, so endet man nicht selten in Verzweiflung. Die vielen kleinen, idealtypischen Übungen der Pro-Test-Hippies der Softwerkskammer, scheinen einem nicht allzu selten im Stich zu lassen. Real sind dagegen:

  • * hunderte Tests,
  • * mühevolle und umfangreiche Initialisierungen der Testumgebung,
  • * zu viele Überprüfungen pro Testfall
  • * Testnamen die verdeutlichen "hier wird nur die Testabdeckung erfüllt",
  • * statische Abhängigkeiten die erst gar keinen UnitTest ermöglichen,
  • * und jede kleinste Änderung führt zu mindestens 20 fehlschlagenden Tests.

Dieser Workshop richtet sich an Unittest Anfänger und Fortgeschrittene gleichermaßen. Nach einem kurzen Einstieg werden wir die fortgeschrittene Strategien für die Erstellung von Unittests betrachten. Alle Beispiele und Übungen werden wir gruppenweise in C# und Java durchführen.

Themen:

  • * Einführung in Unittests
  • * Vorteile testgestützter Softwareentwicklung
  • * typische Anti-Pattern bei Unittests
  • * Best Practices für die Erstellung von Unittests (Testnamen, Parametrisierung, usw.)
  • * Die Test-Pyramide
  • * Isolierung externer Abhängigkeiten (bspw. Datenbanken)
  • * Strategien für iterative Ergänzung von Unittests in Legacy-Projekten
  • * Test Driven Development