Wenn Sie ein Entwickler oder Tester sind, ist das Wort „agil“ nichts Neues für Sie. Wenn Sie aber neu in diesem Bereich sind und sich fragen, was agiles Testen ist und was es in der Praxis bedeutet, werden Sie nach der Lektüre dieses Artikels keine Fragen mehr haben.
Was ist agiles Testen?
Agiles Testen ist ein untrennbarer Bestandteil der agilen Softwareentwicklungsmethodik. Bei der agilen Entwicklung läuft das Testen kontinuierlich parallel zur eigentlichen Entwicklung. Es ist eine gemeinsame Anstrengung von Entwicklern, Testern, Projektmanagern und Kunden, um das Produkt an die Bedürfnisse des Kunden anzupassen.
Im Gegensatz zur Wasserfallmethodik, bei der das Testen eine separate Phase ist, die nach der Entwicklungsphase stattfindet, bedeutet die agile Testmethodik, dass das Testen gleich zu Beginn des Projekts beginnt und Hand in Hand mit der Entwicklung geht, so dass ein ständiges Feedback zum Entwicklungsprozess gegeben ist.
Die Tester sind nicht länger eine separate Einheit. Sie sind Teil des agilen Softwareentwicklungsteams und arbeiten während des gesamten Lebenszyklus der agilen Softwareentwicklung eng mit den Entwicklern zusammen, was Folgendes ermöglicht:
- Zeit- und Kostenersparnis
- Weniger Dokumentation
- Regelmäßiges Feedback
- Erkennen von Problemen im Voraus
Was sind also die Gründe, warum Sie sich für oder gegen einen agilen Prozess entscheiden? Die beste Antwort darauf ist die Liste der Vor- und Nachteile.
Vorteile der agilen Methodik
- Flexibilität
- Produktivität
- Transparenz
- Hohe Qualität
- Regelmäßige Anpassung an sich ändernde Umstände
- Größere Kundenbeteiligung und -zufriedenheit
Nachteile der agilen Methodik
- Nicht für jedes Projekt geeignet
- Schwierig zu implementieren, wenn der Kunde starre Prozesse oder Methoden verfolgt
- Schwierige Schätzung des erforderlichen Aufwands zu Beginn des Softwareentwicklungslebenszyklus
- Fehlender Schwerpunkt auf dem notwendigen Design und der Dokumentation
- Nur erfahrene Entwickler können die Art von Entscheidungen treffen, die während des Entwicklungsprozesses erforderlich sind.
Wenn Sie sich für das agile Testen entscheiden, müssen Sie auch die wichtigsten Grundsätze kennen.
Agile Testprinzipien
- Testen ist keine separate Phase, sondern ein ständiger Prozess
- Testen verbessert das Produkt durch ständiges Feedback
- Am Testen können nicht nur die Tester, sondern auch die Entwickler beteiligt sein
- Testen erfolgt nach einer wiederverwendbaren Checkliste, nicht nach einer detaillierten Dokumentation
- Testen findet in selbstorganisierten Teams statt
All das ist zu beachten:
- Sich ändernde Anforderungen auch noch spät im Test berücksichtigen
- ein qualitativ hochwertiges Softwareprodukt in kurzer Zeit zu liefern
- den Kunden mit der schnellen Lieferung eines qualitativ hochwertigen Produkts zufrieden zu stellen
Bevor Sie sich jedoch an eines dieser Ziele halten, müssen Sie den agilen Testrahmen wählen, der am besten zu Ihren Prozessen und Testmethoden passt. Die am häufigsten verwendeten Methoden sind Scrum und Kanban.
Scrum und Kanban: Was ist der Unterschied?
Scrum ist ein Ansatz, bei dem ein universelles Team von Spezialisten an jedem Projekt arbeitet. Dazu gehören auch ein Product Owner und ein Scrum Master:
- Der Product Owner stellt die Verbindung zwischen dem Team und dem Kunden her und überwacht die Entwicklung des Projekts.
- Der Scrum Master hilft dem Product Owner bei der Organisation des Geschäftsprozesses: Er hält allgemeine Besprechungen ab, löst alltägliche Probleme, motiviert das Team und überwacht die Einhaltung des Scrum-Ansatzes.
Der Scrum-Ansatz unterteilt den Arbeitsablauf in gleiche Sprints. Das sind Zeiträume von einer Woche bis zu einem Monat, je nach Projekt und Team. Nach Ablauf des Sprints werden abgeschlossene Aufgaben in die Produktion überführt, andere werden auf einen anderen Sprint übertragen.
Die Aufgaben, die während des Sprints erledigt werden, ändern sich in der Regel nicht: Was zu Beginn des Sprints zur Umsetzung angesetzt wurde, sollte unbedingt bis zum Ende des Sprints erledigt sein. Sprints sind sehr leicht zu vergleichen, was die Verwaltung der Arbeitseffizienz ermöglicht.
Beim Kanban-Ansatz geht es darum, die Arbeit der verschiedenen Spezialisten innerhalb des Teams auszubalancieren und die Situation zu vermeiden, dass die Designer tagelang arbeiten und die Entwickler sich über den Mangel an neuen Aufgaben beschweren.
Das gesamte Team ist bei Kanban eine Einheit. Hier gibt es weder einen Product Owner noch einen Scrum Master. Der Geschäftsprozess wird nicht in universelle Sprints unterteilt, sondern in die Phasen der Ausführung bestimmter Aufgaben:
- Erledigen
- Entwicklung
- Testen
- Bereitstellung
Der wichtigste Indikator für die Effektivität von Kanban ist die durchschnittliche Zeit, die für die Erledigung einer Aufgabe benötigt wird. Die Aufgabe geht schnell vorbei – das Team arbeitet produktiv und harmonisch. Die Aufgabe zieht sich in die Länge – man muss sich überlegen, in welchem Stadium und warum es zu Verzögerungen kam und wessen Arbeit optimiert werden muss.
Kanban gibt Ihnen mehr Flexibilität, d. h. die Häufigkeit, mit der sich Prioritäten ändern. Wenn der Entwickler die fertige Aufgabe hochlädt und die Rückmeldung erhält, dass sie nicht wie vorgesehen funktioniert, erhält er neue Anforderungen, an denen er arbeiten kann. Diese neuen Aufgaben steigen in der Priorität nach oben und der Programmierer führt sie zuerst aus.
Um in Scrum einen Sprint zu bilden, müssen die Aufgaben in Story Points oder Stunden bewertet werden. Ohne eine solche Bewertung ist es nicht möglich, einen Sprint zu bilden, da man wissen muss, ob man es schafft, die Aufgaben in einer bestimmten Zeit zu erledigen. Nachdem diese Zeit verstrichen ist, erhalten Sie eine Statistik über die Stunden oder Story Points, die das Team in einem Sprint erledigen konnte. Damit lässt sich die Leistungsgeschwindigkeit des Teams in einem Sprint messen. Mit diesem Wissen kann der Scrum-Manager vorhersagen, wo das Team im nächsten Sprint stehen wird.
Kanban erfordert keine Bewertung. Das Konzept der „Teamwork-Geschwindigkeit“ gibt es nicht: Es wird nur die durchschnittliche Zeit berücksichtigt, die für den Abschluss einer Arbeitseinheit benötigt wird.
Bei Scrum ist das Ziel also die Fertigstellung des Sprints, bei Kanban die Aufgabe.
Um alles in Ordnung und unter Kontrolle zu halten, werden sowohl bei Scrum als auch bei Kanban Tafeln verwendet, auf denen die Aufgaben und das Stadium, in dem sie sich befinden, visualisiert werden.
Die Aufgaben auf den Tafeln sind nach dem Prinzip aufgeteilt:
- Zu erledigen
- In Arbeit
- Erledigt
Der einzige Unterschied besteht darin, dass das Scrum-Board die Aufgaben in Sprints unterteilt, und dass alle Aufgaben, die sich in einem bestimmten Sprint befinden, „erledigt“ sein müssen, wenn dieser Sprint vorbei ist.
Sollen wir jetzt rekapitulieren?
Damit Sie sehen, wie das in der Praxis funktioniert, sehen wir uns einige Beispiele an.
Agiles Testen im QAwerk
Als Software-Testing-Unternehmen können wir mit eigenen Beispielen zeigen, wie sich die agile Methodik auf einen bestimmten Projektablauf auswirkt.
Unfold
Unfold ist eine iOS- und Android-App zum Erstellen von Geschichten mit Fotos und Videos unter Verwendung verschiedener Vorlagen.
Bei diesem Projekt wird die Entwicklung auf der Seite des Kunden durchgeführt. Die Arbeit ist so strukturiert, dass sowohl für iOS als auch für Android ständig Versionsupdates herauskommen: kleinere Bearbeitungen, Designänderungen, Hinzufügen von Abonnementfunktionen, Hinzufügen neuer Vorlagensammlungen, die oft in Zusammenarbeit mit Stars (Miley Cyrus), Filmen (The Sun is Also a Star), Großereignissen (Billboard Music Awards), Bekleidungsmarken (Tommy Hilfiger) hinzugefügt werden.
Der Kunde gibt die Entwicklungspläne und die Dokumentation nicht an uns weiter. Aber hier ist, was der agile Testprozess uns bei der Arbeit an diesem Projekt ermöglicht:
- Wir sind jederzeit bereit, die neue Version auf allen uns zur Verfügung stehenden Geräten zu testen
- Wir kommunizieren mit den Entwicklern, führen häufige Regressionen von Fehlern durch, die in der aktuellen Version behoben werden, bis sie so weit verbessert ist, dass sie in die Freigabe gehen kann
- Wir arbeiten auch mit Nutzerbewertungen in App Stores (Google, Apple) und sammeln Nutzerfeedback, um Fehler zu reproduzieren, Berichte zu erstellen und mit Entwicklern zu kommunizieren
- Einmal haben wir als Team am Wochenende gearbeitet, um beim Testen eines größeren Updates zu helfen – das Hinzufügen von Abonnements zur App
Fazit
Unabhängig davon, welche agile Testmethodik verwendet wird, ermöglichen beide die frühzeitige Erkennung von Fehlern, was die Kosten für deren Behebung reduziert. Außerdem handelt es sich um einen kundenorientierten Ansatz, der es ermöglicht, in relativ kurzer Zeit ein hochwertiges Produkt zu liefern.