Skip to main content
Switch Language
  • Fallstudie

Einführung testgetriebener Entwicklung

Erfahren Sie, wie unserer Kunde mit automatisierten Unit- und Integrationstests den Aufwand für manuell durchgeführte Systemtests reduzieren konnte.

Die Herausforderung

Das Team des Kunden ist für die Wartung eines großen und auf dem Markt etablierten Softwareprodukts zuständig. Zu den Aufgaben gehört neben der Fehlerbehebung auch die Weiterentwicklung des Produkts mit neuen Features nach Kundenwünschen.

Die über viele Jahre gewachsene Codebasis beruht auf unterschiedlichen Technologien und weist eine weitgehend monolithische Architektur auf. Bei den bislang angewendeten Tests handelte es sich überwiegend um manuelle Systemtests. Automatisierte Unit- oder Integrationstests wurden kaum durchgeführt.

In der bestehenden Struktur war der Aufwand für geplante Änderungen nur schwer abzuschätzen. Auch ungewollte Seiteneffekte waren kaum vorhersehbar. Immer wieder kam es zu Regressionen, die erst spät im Entwicklungsprozess entdeckt wurden, weshalb Produktreleases verschoben werden mussten.

Mittelfristig sollten die Produktqualität und die Wartbarkeit verbessert, die Releasezyklen verkürzt und die Planungssicherheit erhöht werden. Die dazu notwendigen Refactorings können nur mit einem bestehenden Sicherheitsnetz aus automatisierten Tests auf verschiedenen Ebenen effektiv und effizient durchgeführt werden. Der hohe Aufwand für manuelle Systemtests sollte durch die Einführung automatisierter Unit- und Integrationstests deutlich verringert werden.

Projektdauer

Drei Monate

Unser Ansatz

Um die Ziele zu erreichen, mussten die Teams des Kunden zunächst entsprechendes Know-how im Bereich der testgetriebenen Entwicklung erwerben. Sowohl manuelle Tester als auch klassische Entwickler sollten zu Testentwicklern ausgebildet werden. Die Teilnahme an einer Schulung zu diesem Thema reicht jedoch nicht aus, um nachhaltige Veränderungen in der Entwicklungspraxis zu bewirken. Gerade in Pilotprojekten zur testgetriebenen Entwicklung benötigen die Teammitglieder ein hohes Maß an Kompetenz, Disziplin und die Fähigkeit, komplexe Situationen richtig einzuschätzen. Nach eingehendem Assessment wählten wir gemeinsam mit dem Kunden daher den folgenden Ansatz:

1. Analyse

Auf Basis von Interviews und Reviews wurde die Ausgangssituation analysiert: Wie sind

  • die Scrumteams strukturiert?
  • Über welche Skills verfügen die Mitarbeiter?
  • Wie funktioniert der Entwicklungsprozess und wie wird er dokumentiert?
  • Welche Entwicklungspraktiken, insbesondere im Hinblick auf das Testen, sind etabliert?
  • Welche Technologien, Programmiersprachen, Frameworks und Tool sind im Einsatz oder geplant?
  • Wie ist die Qualität der Architektur und des Quellcodes zu bewerten?

2. Anpassung der Schulungsinhalte

Basierend auf den Analyseergebnissen wurden die Inhalte der Schulungen bzw. Workshops für den Kunden geplant. Die Inhalte und praktischen Übungen wurden unter Berücksichtigung der Vorkenntnisse der Teilnehmer und der verwendeten Programmiersprachen, Technologien und Frameworks zusammengestellt. In zwei Tagen sollten die folgenden Themen abgedeckt werden:

Durchführung praktischer Workshops

Jedes Scrumteam sollte an einem praktischen Workshop teilnehmen. Um den Nutzen der Schulung zu maximieren, wurde jede Schulung mit maximal 12 Teilnehmern durchgeführt. Die Schulungsleiter waren hochqualifizierte Softwareingenieure und hatten umfassende praktische Erfahrung mit agilen Entwicklungsteams und den entsprechenden Technologien. Nach einer kurzen theoretischen Einführung arbeiteten die Teilnehmer gemeinsam mit den Schulungsleitern an konkreten Aufgabenstellungen und Problemen, die so nah wie möglich an der Projektrealität lagen.

Begleitung der Teams während des Projekts

In den Sprints nach den Workshops sollten die Teams die gelernten Inhalte in der realen Projektwelt anwenden, was oft eine große Herausforderung ist. Um den Übergang zur testgetriebenen Entwicklung zu erleichtern, begleitete ein Schulungsleiter jeweils ein Team eine Woche lang durch den Projektalltag. So konnten Entwickler und Tester beispielsweise bei einer Paarprogrammierung oder gemeinsamen Reviews ihre konkreten Probleme lösen.

Consultingstunden

In den Sprints standen die Schulungsleiter den Teams in reduziertem Umfang für spezifische Probleme zur Verfügung. Die Teammitglieder konnten Fragen und Herausforderungen telefonisch oder online mit den SIS-Experten klären.

Fazit

Mit einem zeitlichen Abstand von etwa sechs Monaten wurde eine abschließende Retrospektive durchgeführt, in der die Fortschritte und die Wirksamkeit der Maßnahmen bewertet wurden.

Highlights unseres Ansatzes

  • Erfolgreiche Einführung testgetriebener Entwicklung
  • Testgetriebene Entwicklung, verhaltensgesteuerte Entwicklung und akzeptanztestgetriebene Entwicklung
  • Test Doubles und Mocks
  • Legacy-Code-Tests
  • Testabdeckung
  • Clean Code
  • Abhängigkeitsinjektion
  • Refactoring

Vorteile für den Kunden

Mit einem zeitlichen Abstand von etwa sechs Monaten wurde eine abschließende Retrospektive durchgeführt, in der die Fortschritte und die Wirksamkeit der Maßnahmen bewertet wurden. Zu den wichtigsten Vorteilen gehören:

  • Erfolgreiche Einführung testgetriebener Entwicklung in allen Teams
  • Messbar verbesserte Abdeckung durch automatisierte Tests
  • Deutlich niedrigere Fehlerrate
  • Weniger Abhängigkeiten und sauberere Schnittstellen
  • Basis für sicheres Refactoring
  • Agilere Teams und engere Zusammenarbeit zwischen Entwicklung und Testing

Mehr zu dem Thema

Softwareengineering-Services

 

X

Kontaktieren Sie unser Team

Vielen Dank für Ihr Interesse an unseren Produkten und Dienstleistungen. Wir würden gerne ein paar Informationen sammeln, damit wir Sie mit der richtigen Person in Kontakt bringen können.

Bitte warten…

UL Solutions bietet Unternehmen aus verschiedenen Branchen umfassende Dienstleistungen an. Dazu gehören Zertifizierungen, Tests, Inspektionen, Assessments, Verifizierungen und Beratungsdienste. Um Interessenkonflikte zu verhindern, zu erkennen und zu vermeiden und um unsere Marke und die Marken unserer Kunden zu schützen, hat UL Solutions Verfahren zur Erkennung und Handhabung potenzieller Interessenkonflikte eingeführt. Damit wollen wir sicherstellen, dass unsere Konformitätsassessments objektiv bleiben.