✍️ OffenEin Team hat kaum automatisierte Tests und eine gewachsene Codebasis. Beschreiben Sie ein realistisches Vorgehen zum Aufbau einer Testabdeckung.
Musterantwort: Der Versuch, die bestehende Codebasis flächendeckend nachträglich mit Tests zu versehen, scheitert in der Regel an Aufwand und Motivation. Realistisch ist ein risikoorientiertes, schrittweises Vorgehen. Zunächst wird ermittelt, wo Fehler tatsächlich auftreten und wo Änderungen am häufigsten stattfinden; die Schnittmenge aus beidem ist der Bereich mit dem höchsten Nutzen je investierter Stunde. Dort beginnt der Aufbau. Als Zweites gilt die Regel, dass jede neue oder geänderte Funktionalität ab sofort mit Tests entsteht. Damit wächst die Abdeckung genau dort, wo gearbeitet wird, ohne dass ein separates Testprojekt nötig wäre. Diese Regel gehört in die Definition of Done, sonst weicht sie unter Termindruck auf. Als Drittes werden vor größeren Umbauten zunächst sogenannte Charakterisierungstests geschrieben, die das heutige Verhalten festhalten, auch wenn es nicht das gewünschte ist; sie sind die Voraussetzung für risikoarmes Refactoring. Als Viertes wird auf die richtige Ebene geachtet: Viele schnelle Tests auf Einheitenebene, wenige auf der Oberfläche, weil langsame und instabile Tests die Akzeptanz zerstören. Parallel dazu muss der Build zuverlässig und schnell sein, sonst werden Tests umgangen. Wichtig ist schließlich die Erwartungssteuerung gegenüber dem Product Owner: Der Aufbau verlangsamt das Team anfangs sichtbar und zahlt sich erst nach mehreren Sprints aus. Ohne diese Vereinbarung wird das Vorhaben beim ersten Termindruck abgebrochen.