Testen im agilen Umfeld
Immer mehr Entwicklungsprojekte – auch im Embedded Umfeld – bauen agile Elemente in ihre Prozesse mit ein oder setzen vollständig und konsequent auf agile Entwicklungsmethoden. Die Attraktivität wird oft darin gesehen, dass der Kunde im Mittelpunkt steht: Es werden nur Schritte durchgeführt, die zum Kundennutzen beitragen. Eine weitere Beobachtung ist, dass sich das Testen selbst dadurch verändert. Diesen Aspekt möchte ich im nachfolgenden Beitrag behandeln.
Eines der 12 Prinzipien der agilen Entwicklung (in Ergänzung zum agilen Manifest) ist Folgendes: Funktionierende Software ist das wichtigste Fortschrittsmaß.
Andererseits ist Testen die beste Methode, um Funktionalität nachzuweisen. Dies ist ein Grund dafür, warum in funktionierenden und gut organisierten agilen Projekten das Testen eine sehr wichtige Rolle spielt. Ein weiterer Grund ist, dass in einem Scrum Projekt die „Definition of Done“ durch Tests messbar, transparent und nachvollziehbar wird. Somit unterstützt das Testen auch ganz wesentlich die erfolgskritischen Faktoren in agilen Projekten und sollte hier daher verstärkt eingesetzt werden.
Nun wollen wir den Blick in die entgegengesetzte Richtung wenden: Welche Auswirkungen haben agile Projekte auf das Testen?
Hier ist zu beobachten, dass einige Themen, die bisher in Embedded Projekten keine große Rolle spielten, nun in den Vordergrund rücken. Testautomatisierung sowie die Kommunikation zwischen Entwicklung und Test sind dabei die zentralen Punkte.
Die Automatisierung von Tests wird erzwungen, weil in den sehr dynamischen, agilen Projekten die Tests in sehr kurzer Abfolge ansonsten nicht wiederhol- und durchführbar wären. Dauert ein gesamter Sprint nur 2 Wochen, darf ein Testdurchlauf nicht länger als einige Stunden dauern. Dies ist nur möglich, indem der Automatisierungsgrad der Tests maximiert wird. Die Definition der Testfälle, sowie die Ersterstellung der Testskripte sind dann idealerweise die einzig verbleibenden Tätigkeiten, welche manuell ausgeführt werden müssen.
Der zweite Aspekt ist die Kommunikation zwischen Testern und Entwicklern. Erfolgreiche agile Projekte erfordern funktionierende Teams. Die Selbstorganisation der Teams funktioniert nur, wenn insgesamt viel und gut untereinander kommuniziert wird. Dieser Aspekt wirkt sich extrem positiv auf das Testen aus. In agilen Projekten sind Tester absolut gleichberechtigte Teammitglieder. Jedem ist bewusst, dass entweder alle Erfolge feiern oder keiner. Damit gehören Schuldzuweisungen zwischen Testern und Entwicklern der Vergangenheit an. Im Gegenteil, das gegenseitige Verständnis für die jeweiligen Herausforderungen wird gestärkt. Im Ergebnis wird die Qualität der Systeme dadurch deutlich erhöht.
Fazit
Zusammenfassend lässt sich sagen, dass hier eine klassische Win-Win-Situation vorliegt. Das Testengineering profitiert von den agilen Projekten und im mindestens gleichen Umfang gilt dies auch umgekehrt – agile Projekte werden im Ergebnis deutlich besser, wenn sie das Testen pro-aktiv und bewusst einsetzen.