In diesem zweiteiligen Artikel stelle ich agile Softwareentwicklung und die darin enthaltende agile Testmethodik mit ihren Vorteilen und Nachteilen dar und vergleiche diese mit den Forderungen aus dem ISTQB-Standard.
Agiles Projektmanagement
Agiles Projektmanagement ist eine Variation des adaptiven Projektmanagements. Adaptives Projektmanagement reagiert auf die instabile Projektumwelt und instabile Projekte (intern), berücksichtigt die offenen Lösungsansätze und -technologien und die daraus folgende abnehmende Plan- und Steuerbarkeit im Projekt. Die Veränderlichkeit der Bedingungen und Wirkfaktoren wird in geeignete prozessuale Strukturen umgesetzt. Neben dem agilen Projektmanagement existiert noch das evolutionäre und das dynamische Projektmanagement, welche die Adaptivität als gemeinsamen Nenner aufweisen.
Agiles Manifest
Bedingt durch die Problemen beim klassischen Projektmanagement, wie Überschreitung von Kosten und Zeit bzw. die Nichterreichung der Projektziele wurde das agile Projektmanagement mit dem agilen Manifest ins Leben gerufen. Dessen wichtige Forderungen sind:
- Individuen und Interaktion ist wichtiger als Prozesse und Tools
- funktionierende Programme sind wichtiger als umfangreiche Dokumentation
- stetige Zusammenarbeit mit dem Auftraggeber ist wichtiger als Vertragserfüllung
- Offenheit ggü. Änderungen ist wichtiger als bloße Planerfüllung
Damit werden folgende Ziele erreicht:
- kürzere Einführungszeit von Neuentwicklungen
- Verringerung des Ausschusses
- Verbesserung der Moral und höhere Produktivität im Team
- Verbesserung der Produktqualität
- Bessere Vorhersagbarkeit der Ergebnisse
SCRUM
In SCRUM gibt es verschiedene Rollen. Der Product-Owner ist der fachliche Projektleiter, welcher die Kundenwünsche im Projekt vertritt. Der SCRUM-Master hält dem Projektteam den Rücken frei, führt zu optimalen Arbeits- und Produktionsbedingungen und leitet das Team an. Das Team wiederum besteht aus autonom arbeitenden Fachleuten. Dazu gehören dann auch der Testmanager und die Tester.
SCRUM läuft in mehreren Phasen ab. Zunächst wird ein sog. Productbacklog erstellt, welches alle initial an das System gestellten Anforderungen enthält. Danach werden die Aufwände abgeschätzt und Prioritäten vergeben, was schließlich zum Springbacklog führt. Ein Sprint ist eine Iteration von 2 bis 4 Wochen, in denen ein Inkrement, welches im Sprintbacklog spezifiziert wurde, fertig gestellt wird. Ein Sprint wird aufgeteilt in tägliche kurze Daily SCRUM Meetings. Dort wird geklärt, was abgeschlossen wurde aus dem Backlog, wo Probleme bestehen und was bis zum nächsten Daily SCRUM geplant ist. Der Softwaretest erfolgt entwicklungsbegleitend während des Sprints.
Nach dem Sprint findet ein Review statt, in dem das Inkrement dem Kunden präsentiert wird. Weiterhin findet dort eine Retroperspektive statt, um zu klären, was gut im Sprint gelaufen ist und was verbessert werden muss.
Ist das gesamte Productbacklog in Sprints zufriedenstellend abgearbeitet, wird ein übergreifender Integrations- und Systemtest durchgeführt und das Produkt dem Kunden zum Abnahmetest übergeben. Zuvor wird noch eine zweckorientierte Dokumentation erstellt.
Agiles Test Manifest
Wie schon gezeigt, muss bei SCRUM das Testen entwicklungsbegleitend erfolgen und an die anderen Gegebenheiten bei agiler Softwareentwicklung angepasst werden. Daher liegt es nahe, dass aus dem Agilen Manifest ein Agiles Test Manifest abgeleitet wurde, bei dem die 4 Hauptforderungen auf dem Bereich Softwaretest adaptiert wurden:
- Konstruktives Verhältnis zwischen allen Teammitgliedern mehr als Test-Prozesse und Test-Werkzeuge
- Getestete Software mehr als umfassende Test-Dokumentation
- Zusammenarbeit mit dem Kunden mehr als formale Abnahmetests am Projektende
- Reagieren auf Veränderung mehr als das Befolgen eines Test-Plans
Damit werden folgende Ziele erreicht:
- hohe Entwicklungsgeschwindigkeit, durch die Reduktion von unnötige Dokumentation, unnötige Fehlerkorrekturarbeit
- hohe Kundenzufriedenheit, durch die enge Zusammenarbeit zwischen Kunde bzw. Productowner und Entwicklungsteam
- hohe Teammotivation, die durch Selbstorganisation und dauerhaft einhaltbares Arbeitstempo unterstützt wird
- hohe Produktqualität, die durch eine konsequente Ausrichtung der Entwicklungsaktivitäten auf Fehlerprävention und frühzeitige Fehlerfindung entsteht
- schnelle Reaktion auf Änderungen, die durch kurze Iterationen ermöglicht wird
Agiles Testen
Agiles Testen orientiert sich daher an folgenden Grundprinzipien:
- Tester geben schnelles Feedback zu neuen bzw. geänderten Funktionen während des Sprints. Dies wird durch hohe Testautomatisierung unterstützt durch exploratives Testen erreicht.
- Der Aufwand für operative Testaktivitäten (wie Testmanagement, Fehlermanagement, Dokumentationsarbeit) wird so gering wie möglich gehalten.
- Das Team testet, d.h. es verschwinden die Grenzen zwischen den klassischen Testrollen (Testmanager, Testanalyst, Tester) und teilweise auch die Grenzen zwischen Entwickler und Tester. Der agile Testmanager muss als Teil des Teams der Vermittler zwischen Entwicklung und Kundenvertreter sein.
- Die Teststufen wie im V-Modell sind hier nicht mehr zeitlich durchführbar und werden abgelöst durch „Mikro-Testzyklen“ (typischerweise eine Abfolge von Unit-, Integrations- und Systemtests in weniger als 24 Stunden).
Bald folgt der zweite Teil dieses Artikels. Seien Sie also gespannt.