Skip to content

Unit Testing Deep Dive

Unsere Unit Testing Deep Dive Schulung vermittelt praxisnahes Wissen zu Test Driven Development, Design durch Tests und Legacy-Code-Management. Teilnehmer lernen Techniken wie explanation tests, learning tests und triangulation, um Code flexibler, wartbarer und besser testbar zu machen. Übungen werden direkt mit der bevorzugten Programmiersprache durchgeführt, sodass das Gelernte sofort in den eigenen Projekten angewendet werden kann.

Bedeutung von Unit Testing und TDD

Das Thema Unit-Testing und Test Driven Development (TDD) ist in nahezu jedem Softwareprojekt von Bedeutung. Diese Schulung vermittelt kurz das notwendige Grundlagenwissen, um dann tiefer in die verschiedenen Fragestellungen einzutauchen, die für das erfolgreiche Unit-Testing relevant sind. Test Driven Development hilft dabei – auch aus didaktischen Gründen – ein besseres Bewusstsein für die Schwierigkeiten und Herausforderungen zu entwickeln. Es wird eine Vielzahl an Techniken, wie explanation tests, learning tests oder triangulation, vermittelt und geübt, welche später auch außerhalb des TDD-Kontext angewendet werden können.

Unit Testing für besseres Code-Design

Die Teilnehmerinnen und Teilnehmer lernen dabei, wie man durch die Unit-Tests zu einem guten Design im Produktivcode kommt. Sie werden in die Lage versetzt sich bewusst mit Seams, Enabling- und Interception-Punkten in ihrem Programmcode auseinanderzusetzen. Dadurch entsteht flexiblerer Code, welcher nicht nur leichter zu testen, sondern auch wartbarer und besser verständlich ist.

Praxisnahe Übungen mit eigener Programmiersprache

Neben der reinen Wissensvermittlung üben die Teilnehmenden die Inhalte aktiv an Beispielaufgaben ein. Um dabei möglichst nah am Entwicklungsalltag zu bleiben, verwenden sie dazu ihre bevorzugte Programmiersprache und Testumgebung. Während den Übungen steht es den Teilnehmerinnen und Teilnehmern frei, das Erlernte auch im eigenen Projekt anzuwenden und sofern möglich, Erkenntnisse daraus zu diskutieren.

Unit Testing im Legacy-Code-Umfeld

Abgerundet wird die Schulung mit einem speziellen Blick auf die Problematik des Unit-Testing im Legacy-Code Umfeld. Während TDD am liebsten ohne existierenden Code startet, stellen die großen Mengen an existierendem Quellcode im Alltag oft eine zusätzliche Herausforderung dar. Dieser lässt sich häufig schwer testen, ist komplex und Änderungen daran bergen ein hohes Fehlerrisiko. Die größte Schwierigkeit dabei ist die hohe Kopplung, d.h. Abhängigkeiten zu vielen anderen Teilen des Quellcodes, welche einer Isolation des zu testenden Codes entgegenwirken. Um diese in den Griff zu bekommen, vermittelt die Schulung hilfreiche Dependency-Breaking-Techniken und grundlegende Vorgehensweisen für dieses Umfeld

Inhalte

  • Vor- und Nachteile von Unit-Tests
  • Wichtige Begrifflichkeiten (coverage, seams, dependency breaking)
  • Test Driven Development (Definition und Techniken)
  • TDD-Patterns (Explanation test, self shunt, crash test dummy, …)
  • Dependency-Breaking-Techniken
  • Testen von Legacy-Code
  • Best Practices

Ziele

Teilnehmerinnen und Teilnehmer bekommen durch die Schulung das notwendige Wissen über Techniken und Methodiken, um wartbare und wertvolle Unit-Tests entwickeln zu können. Sie erleben das Zusammenspiel zwischen Unit-Tests und gutem Design und sind gerüstet, um auch bestehenden Legacy-Quellcode testen zu können.

Voraussetzungen

Die Teilnehmerinnen und Teilnehmer benötigen für die Übungen einen eigenen Rechner mit funktionierender Unit-Testing-Umgebung. (Tests und Produktiv-Code erstellen, Tests ausführen, Ergebnisse sehen). Für die Übungen werden auch die eigene Projektumgebung und Quellcode verwendet und die Teilnehmenden sind dabei angehalten, die Inhalte der Schulung bereits in diesem Rahmen auf ihren Alltag zu übertragen. Dabei entstehende Fragen oder Hilfestellungen durch die Trainerinnen und Trainer können allerdings nur erfolgen, wenn dies gemäß der projektspezifischen Vereinbarungen (NDA) erlaubt ist. Die Teilnehmenden sollten daher vor der Schulung ihre projektspezifischen Grenzen in Erfahrung bringen.

Weitere Informationen

Zielgruppe

Die Schulung richtet sich primär an Softwareentwicklerinnen und Softwareentwickler, aber auch an interessierte Testerinnen und Tester, die mehr über den Zusammenhang zwischen Unit-Tests und Codedesign erfahren möchten.

Ihr Ansprechpartner

Dr. Frank Raiser

Dr. Frank Raiser