Beim agilen Testen werden die Prinzipien der Agile-Methode auf Produkttests angewendet, um kontinuierliche Tests in jede Phase der Entwicklung zu integrieren.
Der Agile-Ansatz für die Softwareentwicklung hat die Art und Weise, wie Unternehmen den App-Erstellungsprozess angehen, möglicherweise stärker verändert als jede andere Entwicklungsmethode. Im Unterschied zu herkömmlichen „Wasserfall“-Methoden – bei denen lineare Systeme verlangen, dass Teams ganze Projektphasen abschließen, bevor nachfolgende Phasen beginnen können – können Teams mit der Agile-Entwicklung an mehreren Projektphasen gleichzeitig arbeiten.
Zu den Vorteilen dieses Verfahrens gehören eine kürzere Markteinführungszeit, eine höhere Projekttransparenz und die Flexibilität, mitten im Projekt Anpassungen vorzunehmen, um geänderte Ziele oder neue Daten zu berücksichtigen. Ein Kernelement des Agile-Ansatzes ist agiles Testen.
Mit der Agile-Methode müssen Tests nicht warten, bis die Entwicklung des Projekts abgeschlossen ist. Stattdessen finden Tests kontinuierlich parallel zu den anderen Entwicklungsaktivitäten statt. Tester arbeiten Hand in Hand mit Entwicklern und sogar Kunden, um am Ende höherwertige Produkte zu gewährleisten.
Es gibt einige Punkte, in denen sich agiles Testen vom Wasserfallansatz unterscheiden:
Wie oben erwähnt, finden Tests in der klassischen Softwareentwicklung erst ganz am Ende des Entwicklungszyklus statt. Das liegt daran, dass beim Wasserfallansatz die jeweilige Projektphase abgeschlossen sein muss, bevor die nächste beginnen kann. Dementsprechend können die Phasen für Tests und Integration erst gestartet werden, wenn die Phasen für Systemdesign und -implementierung beendet wurden, in denen die Entwicklungsarbeiten bereits abgeschlossen werden.
Dieses starre Entwicklungsmodell ist klar strukturiert und relativ einfach zu verwalten. Es gibt jedoch auch mehrere Nachteile. Wenn sich beispielsweise die Produktanforderungen plötzlich ändern oder die Tests Probleme in frühen Konzeptphasen aufzeigen, ist es nahezu unmöglich, Anpassungen vorzunehmen, um diese Probleme zu lösen. Einfach ausgedrückt: Wenn Tests erst durchgeführt werden, nachdem die Entwicklung abgeschlossen wurde, dann ist es nicht nur schwierig und teuer, Softwarefehler zu beheben, sondern es kann auch dazu führen, dass Teams ihre Fristen nicht einhalten können. Oftmals stehen sie vor einer undankbaren Wahl: die Veröffentlichung aufschieben, bis jedes Problem behoben wurde, oder ein minderwertiges Produkt veröffentlichen – bei dieser Entscheidung können sie nur verlieren.
Im Gegensatz zur Wasserfallmethode sieht der Agile-Ansatz vor, dass Tests in jeder Phase der Entwicklung stattfinden. Jedes Mal, wenn ein Update am Softwarecode vorgenommen wird, wird das Testteam aktiv und prüft die Funktionalität automatisch. Alternativ können Tests auch ganz am Anfang eingesetzt werden, um festzustellen, welche Art von Code erstellt werden muss. Die Tests können außerdem automatisierte Lösungen sowie Usability-Tests mit Endbenutzern umfassen.
Es mag zwar auf den ersten Blick etwas chaotisch erscheinen, Tests in jede einzelne Phase zu implementieren. Doch indem Teams während der gesamten Entwicklung Tests durchführen, können sie am Ende bessere Produkte erstellen – und zwar sogar schneller. Hierzu müssen sie einige wichtige Prinzipien der Agile-Methode einhalten:
- Kontinuierliches Feedback
Tester müssen Endbenutzerfeedback und Testergebnisse ständig an die Entwickler weitergeben. - Höhere Kundenzufriedenheit
Eine positive Benutzer-Experience muss das primäre Ziel aller Agile-Tester sein. - Uneingeschränkte Kommunikation
Kommunikation ist beim agilen Testen von entscheidender Bedeutung. Direkte Meetings mit Entwicklern können Fehler reduzieren und Missverständnisse verhindern und machen die Weitergabe von Benutzerfeedback deutlich effektiver. - Einfachheit
Bei der Agile-Methode gibt es keinen Platz für unnötige Tests oder unkoordinierte Arbeit. Agile-Tester müssen alle erforderlichen Tests durchführen – und zwar nur die erforderlichen. - Anpassungsfähigkeit
Agile-Tester müssen in der Lage sein, mit Projektänderungen und Endbenutzerfeedback Schritt zu halten. - Zusammenarbeit
Tester arbeiten direkt mit Menschen für Menschen. Das bedeutet, dass Interaktionen wichtiger sind als Technologie – ein klarer Fokus auf die Anwender hilft dabei, die Benutzerfreundlichkeit zu priorisieren.
Da agiles Testen integraler Bestandteil der Agile-Entwicklungsmethode ist, bietet es ähnliche Vorteile wie andere agile Ansätze. Zu den Vorteilen gehören:
Da Teams mit agilem Testen Fehler so viel früher im Entwicklungsprozess erkennen und beheben können, ist es weniger wahrscheinlich, dass es Fehler bis ins fertige Produkt schaffen. Gleichzeitig sind alle Mitglieder des Entwicklungsteams in die Tests eingebunden, sodass sie ihre einzigartigen Fähigkeiten einsetzen können, um ein besseres Endprodukt zu schaffen.
Bei der herkömmlichen Entwicklung wird das Produkt erst veröffentlicht, wenn jede Entwicklungsphase abgeschlossen ist. Doch angesichts der rasanten technologischen Evolution, die wir derzeit erleben, können schon Verzögerungen von wenigen Monaten bedeuten, dass die entwickelten Funktionen – oder sogar ganze Produkte – bei Erscheinen bereits überholt sind. Indem Entwicklung und Tests über den gesamten Lebenszyklus hinweg kombiniert werden, wird gewährleistet, dass die Produktion schnell voranschreitet und dass die veröffentlichten Anwendungen für den aktuellen Markt relevant sind.
Wenn Teams wie am Fließband arbeiten, wird viel Zeit verschwendet, während Tester darauf warten, dass Projekte endlich in die Testphase gelangen. Agiles Testen beseitigt diese Zeitverschwendung, indem Tester zur selben Zeit wie Entwickler arbeiten können. So werden mehr Aufgaben in kürzerer Zeit abgeschlossen.
Kunden und andere Endbenutzer wollen Lösungen sofort. Wenn sie erst lange auf Produkteinführungen warten müssen, verlieren sie irgendwann das Interesse. Agiles Testen sorgt nicht nur dafür, dass Anwendungen schneller erscheinen, sondern gewährleistet auch, dass Anwendungen ständig optimiert werden, um Kunden eine bessere Experience zu bieten.
Zwar findet agiles Testen in jeder Phase des Entwicklungszyklus statt, doch eine effektive Agile-Teststrategie umfasst auch ihren eigenen Lebenszyklus, der vier verschiedene Phasen beinhaltet:
Die erste Phase des agilen Testens wird oft als „Iteration 0“ bezeichnet. Sie deckt die Grundlagen ab, die erforderlich sind, um Tests voranzutreiben. Dazu gehören neben der Erstellung eines Business Case, eines Umfangs sowie von Grenzen für das Projekt auch die Darstellung wichtiger Anforderungen, die Identifizierung von Risiken und die Durchführung von Kostenschätzungen. Diese Phase umfasst außerdem das Identifizieren und Sichern wichtiger Testressourcen (einschließlich Personen und Tools).
In dieser Phase findet der Großteil des agilen Testens statt. Konstruktionsiterationen sind Testaktionen, die wiederholt stattfinden und sich entweder als Bestätigungstests oder investigative Tests klassifizieren lassen. Bestätigungstests verifizieren, dass Funktionen oder Produkte den Zweck erfüllen, für den sie entwickelt wurden. Mit investigativen Tests wird nach Fehlern oder anderen Problemen gesucht, die nicht direkt mit dem Zweck des Produkts in Zusammenhang stehen, darunter Benutzerfreundlichkeit oder fehlerhafte Integrationen.
Wenn sich das Projekt dem Abschluss nähert, müssen Agile-Tester die komplette Software als Ganzes validieren. Diese Tests umfassen vollständige System- und Akzeptanztests und sind in der Regel viel strenger als die Tests während der Entwicklung.
Wenn alle Tests abgeschlossen wurden, kann das Produkt in die Produktion übergehen.
Nachdem sie einige Erfahrung mit Agile-Entwicklung gesammelt haben, entscheiden sich viele Unternehmen dazu, eigene agile Testmethoden zu erstellen, um ihre individuellen Anforderungen besser zu erfüllen. Doch es empfiehlt sich häufig, mit einer bereits etablierten Methode zu beginnen und sie dann an spezifische Anwendungsfälle anzupassen. Folgende Ansätze zum agilen Testen sind beliebt:
Bei der testbasierten Entwicklung (Test-Driven Development, TDD) finden Tests ganz zu Beginn des Agile-Entwicklungsprozesses statt. Diese Tests werden für jede Funktion erstellt und dann durchgeführt. Wenn das Programm den Test nicht besteht – und das wird es, da der Code für die Funktion schließlich noch gar nicht geschrieben wurde –, schreiben Entwickler den denkbar einfachsten Code, um den Test zu bestehen. Automatisierte Testskripte helfen Entwicklern, Code nur dann zu schreiben, wenn Tests fehlschlagen, um das Risiko doppelten Codes zu vermeiden.
Die Akzeptanztest-basierte Entwicklung (Acceptance Test-Driven Development, ATDD) ähnelt der testbasierten Entwicklung. Der Unterschied besteht darin, dass ATDD damit beginnt, eine Kundengeschichte zu schreiben. Teams geben Input dazu, wie das Produkt verwendet werden soll, und erstellen dann einen Benutzerakzeptanztest, um die Entwicklung anzuleiten. Dieser Ansatz stellt die Benutzererwartungen in den Vordergrund des Entwicklungszyklus.
Die verhaltensbasierte Entwicklung (Behavior-Driven Development, BDD) ist eine natürliche Erweiterung von ATDD und beginnt ebenfalls damit, eine Benutzergeschichte zu schreiben. Diese Geschichte muss jedoch auch direkt mit einem Geschäftsergebnis in Verbindung stehen und aus der Geschäftsperspektive vermitteln, warum die Funktion entwickelt wird. Dann werden Tests erstellt, um die Entwicklung in Richtung der gewünschten Geschäftsergebnisse voranzubringen.
Während bei TDD, ATDD und BDD automatisierte Testskripts zum Einsatz kommen, verfolgen Erkundungstests einen manuellen Ansatz. Hierbei generieren menschliche Tester relevante Tests, während sie die Produktentwicklung erkunden. Diese Erkundungstests sind zwar weniger strukturiert und langsamer als die anderen Methoden, doch sie nutzen die Fähigkeiten und die Intuition der Tester optimal und sind äußerst effektiv, um risikobezogene Probleme zu finden, die bei anderen Testansätzen übersehen würden.
Sitzungsbasierte Tests führen Erkundungstests noch einen Schritt weiter. Anstatt sich stark auf die Instinkte der Tester zu verlassen, bieten sie eine gewisse Struktur, mit der die Tests durchgeführt werden können. Zu Beginn jedes sitzungsbasierten Tests erstellen Tester eine Charter, in der genau aufgeführt ist, was das Team bei den Tests herausfinden soll. Darauf folgt ein konzentrierter, nicht unterbrochener Test, und anschließend wird über die Testergebnisse Bericht erstattet. Indem sie ihre Erkundungstests mit einem klaren Ziel vor Augen starten, können Tester gewährleisten, dass keine Bereiche übersehen werden.
Agiles Testen umfasst viele verschiedene Testansätze und -arten. Daher lässt sich oft nur schwer bestimmen, welche Tests sich am besten für welche Situationen eignen und ob manuelle oder automatisierte Tests die bessere Wahl sind. Um ihre Entwicklungsteams zu unterstützen, verlassen sich deshalb viele Unternehmen auf die Quadranten für agiles Testen.
Quadranten für agiles Testen bieten eine grundlegende Testtaxonomie – Teams können schnell bestimmen, welche Art von Code geschrieben werden muss, indem sie sich die beiden linken Quadranten ansehen, während die beiden rechten Quadranten Informationen über den geschriebenen Code enthalten. Die vier Quadranten lauten wie folgt:
Dieser Quadrant umfasst Tests, mit denen der Code und das Produkt verbessert werden sollen. Sie sind in der Regel automatisiert und finden während des gesamten App‑Entwicklungszyklus statt – mit dem Ziel, Entwicklern Feedback zur Codequalität zu bieten.
Der zweite Quadrant ist für Tests bestimmt, die die Geschäftsergebnisse des Produkts verbessern. Durch die Kombination manueller und automatisierter Skripte gewährleisten diese Tests, dass das Produkt tut, was es soll, und nicht nur dem Unternehmen, sondern auch dem Kunden einen Nutzen bringt.
In Quadrant 3 wird Feedback zu Tests aus den beiden vorherigen Quadranten bereitgestellt. Er umfasst Benutzerakzeptanz-, Usability- und Erkundungstests. Diese manuellen Tests prüfen nicht nur das Produkt selbst, sondern auch die Benutzer-Experience, um Entwicklern wichtige Einblicke in das Produkt zu bieten. So können sie sicherstellen, dass es wie erwartet funktioniert.
Quadrant 4 umfasst Tests hinsichtlich Produktanforderungen, die sich nicht auf Funktionen beziehen, darunter Datensicherheit, Stabilität und Kompatibilität. Bei diesen Leistungstests mit Technologiefokus kommen Tools zum Einsatz, die den Testprozess automatisieren können.
Zusammengenommen bieten diese Quadranten eine ganzheitliche Übersicht der Softwaretests, um eine fundierte Entscheidungsfindung zu unterstützen. Sie bieten jedoch nicht die Möglichkeit, Tests zu priorisieren – diese Entscheidungen müssen die Teams selbst treffen.
Agile-Softwareentwicklung hat die Art und Weise verändert, wie Unternehmen verschiedenster Arten und Größen Software entwickeln – und agiles Testen ist ein wichtiger Bestandteil dieser Revolution. Doch wenn konstante Tests in jede Phase des Entwicklungszyklus integriert werden, kann es schnell unübersichtlich werden.
ServiceNow, der führende Anbieter von IT‑Managementlösungen, stellt die Tools bereit, die Unternehmen brauchen, um agiles Testen optimal zu nutzen. Mit der Anwendung ServiceNow Testmanagement 2.0 können Unternehmen die Verwaltung von Testprozessen organisieren und optimieren. Manager können ganz einfach Tests und Testsätze erstellen und überwachen, Testpläne und -zyklen einrichten, Ressourcen zuweisen sowie Tests und Ergebnisse auswerten. Und Tester werden beim Erstellen von Tests und Testsätzen, beim Durchführen von Tests, beim Erfassen der Ergebnisse und beim Melden von Fehlern besser unterstützt.
Optimieren Sie mit Ihren Tests die Agile-Entwicklung. Testen Sie ServiceNow Testmanagement 2.0, um Ihre Testabläufe auf eine neue Stufe zu stellen.