Agiles Testen in IT Projekten wie Scrum, Kanban - Tipps

Agiles Testen (z.B. in Scrum, Kanban, XP, SAFe) ist zu einem unverzichtbaren Bestandteil agiler Softwareentwicklung geworden. Heutzutage wird in IT-Projekte nicht mehr darüber diskutiert, ob agile Methoden eingesetzt werden sollen, sondern wie man Sie richtig einsetzt und die Agilität gegebenenfalls sogar skaliert.

Testen in agilen Entwicklungsprojekten unterscheidet sich vom klassischen Testen in erster Linie dadurch, dass Testen eine präventive Maßnahme ist und dass die Tests viel häufiger ausgeführt werden müssen. Diesen Anforderungen wird man in erster Linie durch Continuous Integration / Continuous Delivery und Testautomatisierung gerecht.

Agiles Testen - Wichtige agile Prinzipien

Wenn wir agiles Testen betrachten sind die agilen Prinzipien allgegenwärtig und es handelt sich dabei um folgende wichtige Punkte:

  • Frühe und kontinuierliche Lieferung effizienter Software und damit die Zufriedenstellung des Auftraggebers

  • Direkte und tägliche Zusammenarbeit zwischen Fachexperten und Entwicklern

  • Die Software wird inkrementell und in kurzen Iterationen erstellt.

  • Direkte Kommunikation “face to face” als effizienteste und effektivste Art des Informationsaustausches

  • Funktionierende Software bedeutet Projektfortschritt.

  • Konzentration auf das Wesentliche, d.h. explizite und regelmäßige Entscheidung über das, was wegzulassen ist, etwa in einem Sprint-Planning

 

Image
Agile

 

Typische Probleme mit der Qualitätssicherung und Test in Scrum Teams

Der gesamte Test liegt in der Verantwortung des Teams und des Product Owners. Somit ist es in der Teamzusammenstellung wichtig diesen Aspekt zu berücksichtigen, so dass ein Softwaretester Teil des Teams wird. Der Product Owner achtet normalerweise nur auf die Formulierung von produktbezogenen Akzeptanzkriterien und den Abschluss der User Stories. Somit ist das Team gefordert, die Aspekte der Qualitätssicherung und des Testens als Aufwand zu berücksichtigen und als zusätzliche Akzeptanzkriterien festzuhalten.

Die oftmals entwickler-lastigen Teams sehen ihre Verantwortung für die Produktqualität primär aus Entwicklersicht, implementieren daher vorrangig Unittests und vernachlässigen methodische Systemtests oder auch nicht-funktionale Tests. Somit kann davon ausgegangen werden, dass durch die geringe Testqualität erst spät Fehler gefunden werden, die teilweise sehr tiefgreifend sind und damit in der Behebung lange Zeit kosten. Darüber hinaus fehlt ein übergeordnetes Testmanagement und somit ein adäquater Ansprechpartner für testmethodische Aspekte und Prozessverbesserungen. Dies führt auch zu Qualitätsproblemen im Zusammenspiel von Produkten bzw. Komponenten aus verschiedenen Teams. Scrum, Kanban & Co. bieten hier per se keine Lösung. In Kanban lässt sich das Dashboard bzw. Swimmlane um weitere Schritte bzw. Spalten erweitert werden, wie Testdesign, Testausführung, etc (weiterführende Tipps). Auch der Inspect-and-Adapt-Mechanismus im Scrum vernachlässigt weitestgehend Testaspekte.

Rolle des Testers in agilen Projekten - agiles Testen

Wir lesen immer wieder in Beschreibungen von agilen Entwicklungsmodellen von Entwicklungsteams, die ganzheitlich alle Aufgaben wahrnehmen, um ein Inkrement bzw. Produkt fertigzustellen. Oft wird dabei kaum auf die qualitätssichernden Maßnahmen, wie Softwaretest, eingegangen und damit kann der Eindruck gewonnen werden, dass Tester überflüssig werden.

Wenn dies so wäre, würden wahrscheinlich die von den Entwicklern betriebenen Unittest völlig ausreichen. Es zeigt sich aber in der Praxis, dass durch weitere Teststufen von Integrations- und Systemtests weiterhin Fehler gefunden werden. Nicht zu vergessen die nicht-funktionalen Tests, die bei Unittest kaum eine Rolle spielen. Deshalb bringen Tester im gesamten Projektverlauf einen anderen Blick mit in das Entwicklungsteam ein. Er führt die Integrationstests und die entsprechenden Regressionstests durch und sorgt so von Anfang an für Produktqualität. Vom Tester wird meist verlangt eine Testautomatisierungslösung entwickeln zu können. Daneben unterstützt der agile Softwaretester die Teamkollegen bei der fachlichen Architektur durch entsprechende fachliche Strukturen in den Tests, gerade bei der Testautomatisierung. Und als ganzheitliches Teammitglied bringt er wichtige und wertvolle Eingaben bei der Definition von Akzeptanzkriterien und bei der Abnahme der Iterationsergebnisse durch den Product Owner.

 

Agiles Testen: Best Practices / Tipps

Auch wenn sich das Testen in einem agilen Entwicklungsvorgehen stark ändert, bleibt es ein besonders wichtiger Bestandteil im Software Development Lifecycle. Damit die geänderten Rahmenbedingungen keine Frustration auslösen, empfehlen wir folgendes:

Die agilen Tester sollen gut ins Entwicklungsteam einbettet werden, denn agiles Testen basiert auf einem ganzheitlichen Team-Ansatz. Jeder im Team ist gleichberechtigt und wichtig bei allen Meetings und bei Entscheidungen zu berücksichtigen, auch wenn Einzelne augenscheinlich keine Berührungspunkte haben. So sind die Tester auch als essentieller Bestandteil bei der Sprintplanung involviert, geben dort ihre Tasks ein und schätzen genauso den Aufwand wie die Entwickler. Frühes und häufiges Testen gilt als unabdingbarer Bestandteil im agilen Vorgehen, das meist nur durch eine Testautomatisierung erreichbar wird. Deswegen müssen alle relevanten Testarten (Unit-, Funktions- und Last- & Performancetests) früh erfolgen und eingeplant werden und eine effiziente Verteilung der Aktivitäten gemäß Testpyramide erfolgen. So hilft z.B. schon das Wissen über hoch priorisierte Backlog-Stories entsprechend Tests zu Beginn des Sprints zu erstellen und nicht erst gegen Ende, wenn die ersten Entwicklungsartefakte geliefert werden. Nur so lassen sich Probleme rechtzeitig erkennen und beheben, um am Ende einer Iteration das Produkt bzw. Inkrement fertigzustellen und die Stories abzuschließen. Da alle im Entwicklungsteam Testaufgaben übernehmen, können die Testspezialisten fachliche und methodische Unterstützung beim Testen (Systemtests) geben. Eine häufig unterschätzte, aber essentielle Tätigkeit ist die Pflege und Wartung der Testumgebung und der Testdaten. Hier können auch gut zu Beginn eines Sprints notwendige Tätigkeiten platziert werden, um ein Abschluss zum Sprintende zu erreichen.

Dazu kommt natürlich auch die zwischenmenschliche Komponente, die für einen agilen Tester wichtig ist. Er bleibt immer im Spannungsfeld von fachlichen Ansprechpartnern, Anforderungsmanagement und Entwicklung als Kommunikator. Somit gibt es einige Lektionen die ein agiler Tester beherzigen sollte.

Fazit

Agiles Testen ist weiterhin ein wichtiger Bestandteil in aktuellen Projekten. Auch wenn die Tätigkeiten des Softwaretesters, weg von manuellen Tests und wenig automatisierten Aufgaben, hin zu Testautomatisierung und kontinuierliche Integration seiner Tests in einen automatisierten Prozess bedeutet. Seine Unabhängigkeit und eine andere Betrachtungsweise der Themen wird einen großen Gewinn in agilen Entwicklungsteams bringen. Denn ein gutes Team ist nur dann erfolgreich, wenn die einzelnen Teammitglieder ein breites Spektrum an Wissen mitbringen und sich in den vielfältigen Aufgaben ergänzen und unterstützen können.

Veröffentlicht am 01.Juni 2019

Aktualisiert am 22.August 2024

Wilson Campero

Geschäftsführer, Senior Testmanager

Wilson Campero ist IT-Unternehmer und Experte für Softwarequalität sowie ISTQB Certified Full Advanced Tester. Seit 13 Jahren ist das Testen von Software sein Spezialgebiet.

Finden Sie weitere interessante Artikel zum Thema: