Agiles Testen ist das Herzstück agiler Softwareentwicklung

Agiles Testing – The New Normal [Gastbeitrag]
Kommentare

Agile Prozesse haben nicht nur die Software-Entwicklung verändert, sondern auch die Software selbst. Sie ist immer häufigeren und tiefgreifenden Änderungen unterworfen. Um ein erfolgreiches Produkt zu entwickeln, muss sich aber auch das Testing anpassen – hier kommt agiles Testing ins Spiel.

Agilität hat zu umfassenden Veränderungen in der Software-Entwicklung geführt. Die Kunden und ihre Wünsche stehen stärker im Mittelpunkt des Entwicklungsprozesses, als dies bei klassischen Methoden der Fall ist.

Statt am Ende des Projektes ein finales Resultat zu präsentieren, beziehen agile Teams ihre Kunden in den Prozess mit ein und liefern ihnen regelmäßig neue Software-Versionen, die diese bewerten können. Es reicht aber nicht allein aus, Kundenwünsche frühzeitig zu erkennen – eine effiziente Umsetzung ist mindestens genauso wichtig. Die Software ist damit häufigen und oft auch tiefgreifenden Änderungen unterworfen. Die Vorteile liegen auf der Hand: kurze Entwicklungszyklen mit schnellen Realisierungserfolgen.

Doch um mit dem hohen Tempo mithalten zu können, muss sich das Testing den agilen Arbeitsweisen anpassen, da es mittlerweile zu einem unverzichtbaren Bestandteil agiler Softwareentwicklung geworden ist. Längst wird nicht mehr darüber diskutiert, ob agile Methoden eingesetzt werden sollen, sondern wie sie richtig einsetzt und gegebenenfalls skaliert werden können.

Eine der bekanntesten agilen Methoden ist Scrum, das die Prinzipien des Agilen Manifests umsetzt. Allerdings werden sowohl im Agilen Manifest als auch in der Scrum-Beschreibung weder Testaktivitäten noch die Testorganisation tiefergehend behandelt. Es werden zwar Ansätze des Test Driven Development oder der Continuous Integration empfohlen, doch ein systematisches Testvorgehen wird nicht beschrieben. Die Testaktivitäten und die Testorganisation spielen aber eine entscheidende Rolle für den Erfolg agiler Methoden und werden im Folgenden beschrieben.

Agil auf allen Ebenen

Das Testing in agilen Entwicklungsprojekten unterscheidet sich von klassischen Methoden in erster Linie dadurch, dass es eine präventive Maßnahme ist und dass die Tests viel häufiger ausgeführt werden müssen in sogenannten Sprints. In der Regel beträgt die Dauer eines Sprints ein bis zwei Wochen, an dessen Ende die getestete Software stehen soll, die anschließend an den Kunden ausgeliefert wird. In regelmäßigen Retrospektiven werden die Erfolge und Probleme festgehalten und evaluiert, was die Qualität sowie die erzielte Testabdeckung weiter erhöht.

Für den Erfolg eines Projektes ist es unerlässlich, dass alle für ein Projekt relevanten Testverfahren (Unit-, Funktions- und Last-Performancetests) früh eingeplant und auf allen Ebenen umgesetzt werden. Dies hilft dabei, Probleme rechtzeitig zu erkennen und zu beheben. Durch die Automatisierung von Tests ist es möglich, diese mehrmals täglich durchführen zu lassen. Regressionstests sorgen dafür, dass neue Funktionen nicht bereits bestehende Funktionen beeinträchtigen. Da die automatisierten Tests nach jeder Iteration an das überarbeitete digitale Produkt angepasst werden müssen, muss laufend abgewogen werden, wie effizient die Methode ist.

Zusätzlich zur Durchführung von Testfällen, automatisiert oder nicht, ist es wichtig, diese mit explorativen Tests, bei denen die Software ohne vorgegebenen Testplan geprüft wird, zu kombinieren. Menschlicher Scharfsinn und Kreativität sind nötig, um sowohl oberflächliche als auch tiefgehende Fehler zu finden, die vorab nicht im Labor planbar sind. Die Qualität der Testaktivitäten entscheidet letztendlich über die Qualität des Endprodukts.

Klare Sicht im Goldfischglas

Im Mittelpunkt der Team-Organisation steht der Product Owner, der das große Ganze im Blick behält, Ziele definiert und die fachliche Vertretung des Kunden ist. Neben ihm gibt es noch die Testteams selbst. Die funktionsübergreifende Organisation und Zusammenarbeit gibt agilen Entwicklungsteams die Chance, freier zu arbeiten und auch mal über den Tellerrand hinauszuschauen. Entwickler und Product Owner sprechen regelmäßig miteinander und tauschen sich direkt mit den Testverantwortlichen aus. Dies ermöglicht bei Bedarf schnelle Anpassungen und Reaktionen.

Die Festlegung der Ziele gibt den Teams eine klare Vorstellung davon, woran sie arbeiten. Nur wenn diese klar definiert sind, können die Teams effizient testen und die einzelnen Sprints erfolgreich abschließen. Obwohl es sich beim Testing um Qualitätssicherung handelt, können die Tester niemals alle Fehler finden. Das eigentliche Ziel des Testings sollte es daher sein, die Software laufend zu verbessern. Darüber hinaus können die Ziele zu ambitioniert sein, wenn Entwickler zu viele Funktionen implementieren möchten. Die Folge: Die Ziele sind nicht aus Nutzersicht gedacht und die Teams testen am Kern der Probleme vorbei. Was nutzt ein Angebot, das keiner wahrnimmt? Es ist daher elementar, die eigenen User zu kennen und beispielsweise auf Geräten zu testen, die auch die Zielgruppe verwendet. Wie hoch ist die CPU-Auslastung, wieviel Datenvolumen verbraucht die App und welche Ladezeiten sind akzeptabel? Diese und weitere Faktoren sollten während des Testings unbedingt geprüft werden.

Hier kommt Crowdsourced Testing oder Crowdtesting ins Spiel. Diese Art der Qualitätssicherung einer Webseite, einer mobilen App oder eines Connected Device stützt sich für das Testing auf eine Community aus Testern außerhalb des Unternehmens. Mit Crowdtesting werden Produkte nicht in einer sterilen Laborumgebung getestet, sondern durch echte Personen, auf echten Geräten und in gängigen Alltagssituationen auf der ganzen Welt. Die Ergebnisse reflektieren die tatsächliche oder mögliche Nutzererfahrung wesentlich besser, als dies durch Inhouse- oder Labor-Lösungen möglich wäre. Ein weiterer Vorteil dieser Methode: Sie ist kompatibel mit der Geschwindigkeit agiler Prozesse, da viele Tester zur gleichen Zeit testen und so hunderte Teststunden innerhalb eines einzigen Tages generieren können.

Weniger ist mehr

Testdatenmanagement wird häufig unterschätzt, ist aber essenziell. Die Tester fördern wertvolle Informationen und Erkenntnisse zu Tage. Wie viele Testfälle wurden durchgeführt, wie hoch ist die Fehlerrate, etc.? Alles Fragen, die Material für ausführliche und detaillierte Berichte hergeben und mit Sicherheit von hoher Relevanz für den Projektleiter und den Produktmanager sind. Die Frage ist aber: Wen könnten diese Daten darüber hinaus noch interessieren? Denn im Kern dreht sich bei agilen Methoden alles darum, Arbeitsabläufe zu optimieren und nur so viel Zeit wie unbedingt nötig für Reportings aufzuwenden. Es ist daher ratsam, Daten zu sammeln, die auch für andere Abteilungen nützlich sind. Die Aufbereitung der Daten in Form von Best-Practices bzw. Cases kann dabei helfen, die Leistungen der Teams zu steigern und die Entwicklung der Software zu verbessern.

Derartig umfassende Veränderungen stellen Unternehmen – insbesondere das Management – natürlich vor Herausforderungen, die es zu meistern gilt: Die Teams stoßen immer wieder auf Widerstände an den Schnittstellen zur traditionellen Organisation. Eine segmentierte Planungsweise, der erhöhte Abstimmungsaufwand oder die reduzierte Dokumentation sorgen nicht selten für Unsicherheiten. Um dem entgegenzuwirken, bedarf es der vollen Rückendeckung durch das Management, eindeutige Festlegung von Entscheidungskompetenzen, Zeitrahmen und Budgets sowie der Klärung der Schnittstellen mit Funktionseinheiten außerhalb des agilen Prozesses.

Agiles Testing: Schneller, besser, weiter

Agiles Testing ist der zeitgemäße Weg, um in der modernen Softwareentwicklung schnellere und bessere Ergebnisse zu erzielen. Die Umstellung auf agile Methoden erfordert zwar ein Umdenken, birgt aber viele Potenziale und schaufelt Ressourcen für andere Bereiche frei. Um potenzielle Widerstände bei der Implementierung agiler Verfahren zu minimieren bzw. zu lösen, ist es notwendig, dass Unternehmen agiles Testing als ganzheitlichen Ansatz verstehen. Die enge Zusammenarbeit von Entwicklern und agilen Testern ist dabei absolute Grundvoraussetzung: Individuen und Interaktionen haben Vorrang vor Prozessen und Tools. Entwickler brauchen die volle fachliche und methodische Unterstützung, Tester müssen als essenzieller Teil der Sprintplanung in die jeweiligen Prozesse involviert werden. Die Dokumentation wird der Funktionalität der Software untergeordnet und das kurzfristige Reagieren auf Veränderungen ist wichtiger als das Befolgen eines Plans.

Ein digitales Produkt kann noch so schön sein, aber wenn es nicht einwandfrei funktioniert, strafen die Nutzer es ab und wenden sich anderen Produkten zu. Um erfolgreich zu sein, müssen Unternehmen nahe am Anwender testen. Nur eine sinnvolle Kombination aus explorativen Tests in realer Umgebung und einer flexiblen Automatisierungsstrategie deckt die vielfältigen Anforderungen digitaler Produkte ab. Mit strukturiertem Testdesign müssen die Angebote zudem so funktional wie möglich entwickelt werden und Antworten auf die hohen Erwartungen der User liefern. Unternehmen sind also gut beraten, wenn sie in agiles Testing und damit in die Qualität, Sicherheit und Nutzerfreundlichkeit ihrer digitalen Produkte investieren.

Unsere Redaktion empfiehlt:

Relevante Beiträge

Meinungen zu diesem Beitrag

X
- Gib Deinen Standort ein -
- or -