Remove ads
Aus Wikipedia, der freien Enzyklopädie
Als agiles Testen (von lateinisch agilis „flink, beweglich“) wird das Prüfen von Software im Rahmen eines agilen Entwicklungsprojekts bezeichnet. Testen in agilen Entwicklungsprojekten bedarf dabei vor allem eines Fokus auf die Unterstützung des Entwicklungsteams. Viele Eigenschaften von agilen Testern helfen auch einem traditionellen Tester, allerdings werden die damit verbundenen Probleme nicht so deutlich und deshalb nicht von jedem Projektteam behoben. Agiles Testen folgt den Prinzipien des agilen Manifests und wendet die agilen Prinzipien auf das Testen an.
Agiles Testen muss so gestaltet sein, dass es die Ziele agiler Softwareentwicklung optimal unterstützt, nämlich
Dabei müssen unter Umständen Werte des Testens im „klassischen“, meist phasenorientierten oder iterativ-inkrementellen Vorgehen Berücksichtigung finden, z. B. in einem regulierten Umfeld:
Um den Ansprüchen nach Geschwindigkeit und Vermeidung unnötiger Arbeit einerseits sowie Systematik und Vertrauenswürdigkeit andererseits gerecht zu werden, sollte ein agiles Testvorgehen auf folgende Grundprinzipien aufgebaut sein:
Neu entwickelter oder geänderter Programmcode muss noch vor dem Ausliefern getestet werden. In iterativen Methoden wie Scrum bedeutet das, dass ein agiler Tester das Team durch schnelles Feedback meistens innerhalb von zwei Wochen mit Informationen über die erschaffene und geänderte Funktionalität versorgen muss. Damit dieser schnelle Feedbackzyklus funktionieren kann, müssen zum einen Funktionen bereits nach wenigen Tagen in einer ersten testbaren Version vorliegen. Außerdem wird der Tester noch bei der Definition der Funktion vor dem Sprint mit eingebunden.
Um möglichst schnelles Feedback zum derzeitigen Stand des Teams liefern zu können, setzen viele Teams dabei auf eine ausgewogene Balance zwischen einem hohen Automatisierungsgrad und leichtgewichtigen manuellen explorativen Tests. Dabei unterstützen Programmierer die Arbeit von Testern bei der Automatisierung, während Tester mit ihren kritischen Fähigkeiten die Ausgangsbasis für die Testautomatisierung liefern. Außerdem sind sich agile Teams darüber im Klaren, dass sich nicht alles automatisieren lässt. Entsprechende Risiken wie schlecht ausgelegte Benutzeroberflächen und versteckte Bedienelemente adressieren sie deshalb über explorative Tests.
Um schnelle Reaktionsfähigkeit auf sich ändernde Anforderungen sowie das permanente Refactoring von Programmcode zu unterstützen, müssen möglichst viele systematische Testfälle entworfen und automatisiert werden. Dies umfasst sowohl strukturbasierte Tests (Unit Tests) als auch fachlich orientierte System- und Akzeptanztests.
Der Aufwand für nicht unmittelbar operative Testaktivitäten (also z. B. Testmanagement, Fehlermanagement, Dokumentationsarbeit) muss so gering wie möglich gehalten werden.
Den agilen Prinzipien folgend wird die Verantwortung für alle Testaktivitäten auf das gesamte Team verteilt. Hierdurch verschwinden die Grenzen zwischen den klassischen Testrollen (Testmanager, Testanalyst, Tester) und teilweise auch die Grenzen zwischen Softwareentwickler und Tester. Wegen der notwendigen hohen Qualifikation sowohl für Entwicklungs- als auch für Testarbeiten ist letzterem allerdings eine enge Grenze gesetzt.
Für eine sequentielle Abfolge von Teststufen (z. B. Unit-, Integrations- und Systemtest), ist innerhalb der typischen agilen Iterationslänge von 2–3 Wochen keine Zeit. Die durch die unterschiedlichen Teststufen abgedeckten unterschiedlichen Testziele sind aber nach wie vor zu erreichen und müssen durch inhaltlich unterschiedlich gestaltete Testaktivitäten in „Mikro-Testzyklen“ (typischerweise eine Abfolge von Unit-, Integrations- und Systemtests in weniger als 24 Stunden) abgedeckt werden. Die Teststufen sollten im agilen Kontext eher als inhaltliche Testarten statt zeitlicher Testphasen verstanden werden.
Der Wunsch nach schnellem Feedback und die Übernahme der Verantwortung für das Testen durch das gesamte Team bedingen eine enge Zusammenarbeit zwischen den „Testern“ (d. h. den mehrheitlich mit dem Testen beschäftigten Teammitgliedern) und den „Entwicklern“ sowie den „Testern“ und den Kundenvertretern (im Scrum dem Product Owner). Diese Zusammenarbeit wird durch direkte Kommunikation (und damit weitgehenden Verzicht auf Dokumentation, die für Kunde und Team keinen Wert besitzt) sowie paarweise Zusammenarbeit (das sogenannte Pairing) erreicht.
Durch „Verankerung“ des systematischen Testens in einigen Scrum-Artefakten sowie an einigen Schlüsselstellen des Prozesses können die Ziele des agilen Testens realisiert werden.
Die DoR dient der frühzeitigen Sicherstellung der Testbarkeit. Sie ist eine Checkliste, die bei der Erstellung der User Stories durch den Product Owner sowie bei deren Qualitätssicherung und spätestens bei der Übernahme von Stories vom Produkt- ins Sprint Backlog Anwendung findet. Stories, die nicht „ready“ im Sinne der Definition sind, dürfen beim Sprint-Planungsmeeting vom Team zurückgewiesen werden. Die DoR sichert die fachliche sowie die technische Testbarkeit der Stories ab und fordert die Definition von möglichst operationalen Akzeptanzkriterien ein. Gute Akzeptanzkriterien entstehen durch den Ansatz „specification by example“[1]. Ein guter Ausgangspunkt für eine DoR sind die sogenannten INVEST-Kriterien[2] für Anforderungen. Bei der Erstellung der Stories ist ein Pairing von Tester und Product Owner sinnvoll, um das methodische Wissen über Testen und Qualitätssicherung mit dem Fachwissen des Product Owner zu vereinen.
Die DoD verankert die Qualitätsziele. Sie ist eine weitere Checkliste und beschreibt, welche Ziele vom Team bei der Umsetzung der Story erreicht werden müssen, bevor diese als „fertig zur Vorlage im Sprint-Review“ betrachtet wird. In der DoD werden Testziele wie z. B. die notwendigen Testarten, die zu erreichende Testabdeckung und die Testendekriterien (i. a. die Entfernung aller gefundenen Fehler) festgeschrieben. Die DoD dient damit unmittelbar der Sicherstellung der Produktqualität und der Kundenzufriedenheit.
Die DoT verankern die Teststrategie in einem agil arbeitenden Team. Sie fassen die für das Team gültigen „Spielregeln“ in einem zentralen Dokument, der sogenannten „Team Charta“, ab. Diese Charta ist auch ein idealer Platz für die Verankerung von gemeinsamen Vorgehensweisen, z. B. zum Testfallentwurf und zur Toolnutzung für die Tester.
In einer DoT wird beschrieben, auf Basis welcher Informationen (z. B. Risiko- und Werteinstufung einer Story sowie deren Beschreibung), auf welche Weise Testfälle entworfen, implementiert und durchgeführt werden sollen. Sie ersetzt damit das aus dem „klassischen“ Test bekannten Artefakt der risiko- oder wertorientierten Teststrategie. Ein guter Ausgangspunkt für die Definition einer agilen Teststrategie sind die „agile testing quadrants“[3].
Es gilt der Grundsatz von Realisierung und Test non-stop. Während des Sprints muss dafür gesorgt werden, dass die „Tester“ vom ersten Tag an ins Team integriert sind und parallel mit (bzw. zusammen mit) den „Entwicklern“ an der Realisierung der Stories arbeiten. Schlüsselfertigkeiten hierfür sind:
Nicht nur Unit- und Integrationstests, sondern auch System- und Akzeptanztests müssen frühzeitig im Sprint (möglichst zeitgleich mit der Implementierung einer Story oder sogar davor im Sinne von „Test First“) entworfen und automatisiert werden. Während des Sprints müssen sie permanent lauffähig sein, um als „Sicherheitsnetz“ bei Änderungen und Refactorings zu dienen. Auf der Ebene von Black Box-Tests erweisen sich für den Aufbau einer solchen frühzeitig einsetzbaren, gegen Änderungen und Fehlverhalten der Software robusten Testautomatisierung verschiedene Frameworks als besonders sinnvoll, beispielsweise
Beispielsweise kann die Geschäftsanforderung, in Form der User Stories, in Gherkin verfasst und mittels eines BDD-Frameworks automatisiert getestet werden, während das Fehlverhalten von Integrationspunkten und die Performancekriterien mit Hilfe eines Test-Harnisch geprüft wird. Die Aufgabe der Tester besteht hierbei darin, zusätzliche Testfälle zu identifizieren und die Anwendung, insbesondere durch Fehleingaben, bewusst zu einem Fehlverhalten zu bewegen.
Seamless Wikipedia browsing. On steroids.
Every time you click a link to Wikipedia, Wiktionary or Wikiquote in your browser's search results, it will show the modern Wikiwand interface.
Wikiwand extension is a five stars, simple, with minimum permission required to keep your browsing private, safe and transparent.