Agiles Testen: Die Rolle des Testers und des Testmanagement in agilen Vorgehen

🕒 Lesedauer: 4 Minuten

Agiles Testen hat sich als unverzichtbarer Bestandteil moderner Softwareentwicklung etabliert. In einem dynamischen Umfeld, in dem Flexibilität und Geschwindigkeit entscheidend sind, bietet agiles Testen den Schlüssel zur kontinuierlichen Qualitätssteigerung. Doch was genau unterscheidet agiles Testen von klassischen Ansätzen? Wie profitieren agile Teams von Methoden wie Test Driven Development (TDD) oder Behaviour Driven Development (BDD)? In diesem Artikel beleuchten wir die wichtigsten Merkmale des agilen Testens, die Herausforderungen für Tester und wie Automatisierung und explorative Tests das Testen in agilen Projekten optimieren können.

 

Was ist agiles Testen?

Agiles Testen ist zu einem unverzichtbaren Bestandteil agiler Softwareentwicklung geworden. Es ist dabei unerheblich, ob agil in Teams getestet wird, die nach Scrum oder Kanban entwickeln, und ob das agile Testen im Rahmen von agilen Projekten/Programmen oder in agilen Organisationen stattfindet.

Wir beraten Sie in Ihren agilen Projekten. Vereinbaren Sie noch heute Ihr kostenfreies Erstgespräch

Was sind die Unterschiede zwischen klassischem Testen und agilem Testen?

Auch wenn das Handwerkzeug eines klassischen Testers durchaus noch gebraucht wird, tritt der agile Tester unter teilweise geänderten Voraussetzungen an. Zuerst einmal wird von einem agilen Tester eine agile Denkweise erwartet: Als Teil des agilen Teams teilt er agile Werte. Agile Tester sind direkt in den Entwicklungsteams aktiv, nehmen z.B. an Sprint Plannings, Dailys und Retros teil. Wichtig ist, dass agile Tester Entwicklern zeitnah Feedback geben. Aber auch Aufgaben des klassischen Testmanagements werden vom agilen Tester eingenommen, damit auch ein systematischer, strukturierter und risikobasierter Testansatz etabliert wird und die Ergebnisse transparent nachgehalten werden, wie in einem Testmanagement Werkzeug. Hier werden die Testabdeckungen, Testpläne und Testdurchführungen protokolliert und sind jederzeit abrufbar. Darüber hinaus gibt es Schnittstellen zum Anforderungs-, Fehler- und Releasemanagement sowie zur Entwicklung, auch teamübergreifend.

Testen kann bei agiler Softwareentwicklung auch zum bestimmenden Prinzip der Softwareentwicklung werden: Dieser Ansatz wird als Test Driven Development (TDD) oder Test First bezeichnet. Bevor der Entwickler Code schreibt, erstellt er einen Test, der nach Abschluss der Entwicklung fehlerfrei durchlaufen muss. TDD erleichtert die Umorganisation des Codes (Refactoring). Refactoring kann aufgrund häufiger Änderungen oder von Fehlerbereinigungen notwendig werden und dient dem Ziel, die technische Schuld nicht zu stark anwachsen zu lassen.

Neben einem meist sehr hohen Automatisierungsgrad im Softwaretest sollen explorative Tests oder session based testing nicht außer Acht gelassen werden. Denn nur durch diese extra Tests, die gut die Erfahrungswerte des Teams bzw. Testers einbringen, können Seiteneffekte von Neuimplementationen oder nicht abgedeckte Bereiche des Produkts bzw. Inkrements identifiziert und qualitätsgesichert werden.

Welche Herausforderungen gibt es für agile Tester?

Durch das iterative Vorgehen ist häufiger zu testen. Testautomatisierung wird unabdingbar, wobei auf Komponentenebene (Unittests) Entwickler und auf Systemebene (Service, Frontend) Tester oder Entwickler die Testautomatisierung übernehmen. Eine bewährte Darstellung der Zusammenhänge zwischen den verschiedenen Ebenen der Testautomatisierung ist die Testpyramide (Cohn). Im agilen Team, in größeren Vorhaben auch in Zusammenarbeit mit einem agilen Testmanager, kann mit Hilfe der Testpyramide die Verteilung der Testautomatisierung auf die verschiedenen Ebenen geplant und gesteuert werden.

Image
Testpyramide
Bild: Testpyramide [Quelle: Qytera]

Neben Test Driven Development zum Erreichen der kurzen Iterationszyklen und laufende Regressionstests spielen zwei weitere Methoden beim agilen Testen noch eine Rolle. Behaviour Driven Development (BDD) und Exploratory Testing. Behaviour Driven Development setzt auf die verhaltensorientierte, möglichst natürlichsprachliche Beschreibung eines Systems, um daraus Testskripte abzuleiten. Kommunikation und Automatisierung sind gleichberechtigte Ziele. Werkzeuge wie JBehave oder Cucumber unterstützen die Methode. Bei explorativen Tests besteht die Herausforderung, dass keine Wiederholungen der Regressionstests vorgenommen werden, idealerweise sogar neue Testfälle bzw. Vorlagen für automatisierte Tests entstehen und diese in einem sehr kurzen Zeitraum durchgeführt werden sollen. Hier passt ein session based Ansatz sehr gut, der für einen gewissen Zeitraum, z.B. eine Stunde, für ein Thema bzw. Testziel einen explorativen Test vorsieht.

Ein hoher Grad an Testautomatisierung kann das agile Team in falscher Sicherheit wiegen. Die automatisierten Tests prüfen genau das, was vorgegeben wurde. Manuelle Tester sind diesbezüglich flexibler. Finden diese Auffälligkeiten im System, können sie systematisch in die Tiefe gehen und unerwarteten Problemen zielgerichtet auf den Grund gehen. Dieses vorher nicht im Detail festgelegte, erfahrungsbasierte Vorgehen wird trotz Testautomatisierung in agilen Teams weiterhin eine wichtige Rolle spielen.

Die Basis für Tests hat sich in User Stories verlagert. Tests müssen in nachvollziehbarem Bezug zu den User Stories im Sprint oder im Release stehen. Das reicht aber für die Sicherstellung der Qualität einer Softwareänderung nicht aus.

Die nicht geänderten Teil des Systems müssen nach einem Inkrement/Sprint weiterhin funktionieren. Dies wird über Regressionstests sichergestellt. Regressionstests sind ein bevorzugter Kandidat für die Einführung von Testautomatisierung. Das zu automatisierende Portfolio muss zu Beginn im Team und mit den Auftraggebern abgestimmt, nachfolgend laufend aktuell gehalten werden.

 

Weitere Besonderheiten um agiles Testen

Beim agilen Testen können operative Testmanagementaufgaben vom agilen Tester oder auch vom gesamten Team übernommen werden. Dazu gehört auch die risikoorientierte Anpassung der Teststrategie oder die Bestimmung der Relevanz nicht-funktionaler Testarten, die Erstellung von Dashboards und Testberichten sowie die Vorbereitung der Abnahmeentscheidung. Sind an einem Release jedoch mehrere Teams und ggf. sogar Fremdfirmen beteiligt, so empfiehlt sich der Einsatz eines Testkoordinators mit entsprechendem Erfahrungshintergrund oder die Hinzuziehung des agilen Testmanagers.

Testumgebungen und Testdaten sind auf iterative Abläufe umzustellen. Mit Cloud-Technologien (Docker, Kubernetes) kann die Bereitstellung von Testumgebungen beschleunigt werden. Die sprintbegleitende Bereitstellung passender Daten in Entwicklungsumgebungen unter Berücksichtigung der DSGVO-Belange wird wichtiger.

Um das Know-how im agilen Teams und vor allem bei agilen Testern zu stärken, neue Arbeitsweisen anzuregen oder konkrete Verbesserungsvorschläge für den Testprozess einzubringen, wird der agile Testmanager die Einrichtung einer testbezogenen Interessensgruppe favorisieren, z.B. die Etablierung einer Testgilde nach dem Spotify-Modell.

Fazit

Das klassische Handwerkszeug eines Testers wird auch im agilen Umfeld gebraucht. Agile Denkweise, Teamorientierung, Programmierfähigkeiten (Tester = Entwickler), eine stärkere Beteiligung am Entwicklungsprozess und die Übernahme operativer Testmanagementaufgaben stärken das Profil des agilen Testers, dessen Unabhängigkeit und Erfahrung auch bei zunehmender Testautomatisierung für den Teamerfolg wesentlich bleibt.

Weitere Anregungen zum agilen Testen finden Sie in unserem eBook "Agiles Testmanagement in der CI/CD Pipeline" oder auch in unserem Blog "Was macht ein Testautomatisierer". Zum Thema Testautomatisierung empfehlen wir unseren Testautomatisierung Workshop.

 

Veröffentlicht am 19.September 2024

Aktualisiert am 19.September 2024

Moritz Salein

Senior Testmanager und Test Automation Engineer

Moritz Salein ist seit über 20 Jahren in der IT tätig, aber vor über 10 Jahren begann seine Passion des Softwaretestens. Seit dieser Zeit übernahm er immer mehr Aufgaben die im Softwaretest, Testmanagement und auch ganz speziell in der Testautomatisierung anfallen. Dadurch war er in den unterschiedlichsten, meist international aufgestellten Unternehmen und Projekten beschäftigt. Auch in der agilen Softwareentwicklung fand er großen Gefallen, so dass er schon seit über 8 Jahren Erfahrungen mit verschiedensten Vorgehensweisen, wie Scrum, Kanban oder SAFe sammeln konnte. Er war als Senior Testmanager und Test Automation Engineer bei Qytera tätig.

Finden Sie weitere interessante Artikel zum Thema: