Ähnlich wie beim Entwickeln besteht auch beim Testen von Software die Wahlmöglichkeit zwischen klassischen und agilen Methoden. Zwischen diesen beiden Ansätzen gibt es eine Menge Unterschiede, unter anderem im Hinblick auf Durchführung, Umfang der Testebenen sowie allgemeine Denkweise. Die bekanntesten herkömmlichen Vorgehenstypen sind das Wasserfall- und das V-Modell. Unter den agilen Alternativen haben sich vor allem Scrum, Kanban und Lean einen Namen gemacht.
Gofore veröffentlichte vor einiger Zeit ein Handbuch zum Thema Integrierte Qualität & Sicherheit, das sich schwerpunktmäßig agilen Testprozessen mittels des DevSecOps-Modells von Gofore widmete, welches höhere Agilität und Datensicherheit in Softwaretests gebracht hat. Mit diesem Blogartikel möchte ich den Zweck des DevSecOps-Modells näher erläutern, und zwar anhand fünf wesentlicher Unterschiede zwischen klassischen und agilen Testverfahren.
1. Planung
Beim traditionellen Modell beginnt die Erstellung des Testplans bereits lange vor der Entwicklung der Software. Sie ist häufig sehr zeitaufwendig und resultiert in einem umfangreichen, extrem detaillierten Plan. Dieser wird beim Durchführen der Tests meist in jeder Phase penibel befolgt.
Auch bei agilen Testverfahren werden Pläne erstellt, diese sind jedoch lockerer und flexibler. Sie enthalten meist weniger Details und legen den Schwerpunkt stattdessen auf zügige Durchführung. Im Verlauf des Testprozesses wird der Plan kontinuierlich dem jeweiligen Bedarf entsprechend aktualisiert.
2. Dokumentation
Ähnlich wie der Testplan ist auch die Dokumentation bei klassischen Verfahren detailreicher und enthält oft exakte Beschreibungen jedes Testfalls. Diese Beschreibungen basieren auf bereits im Vorfeld der Tests dokumentierten Definitionen.
Bei agilen Tests ist die Dokumentation weniger umfangreich und der Fokus verschiebt sich anstelle des schriftlichen Festhaltens mehr auf das praktische Testen der Software. Die Testbeispiele werden bevorzugt auf Basis der Nutzererfahrung modelliert. Sie definieren, wie die Software tatsächlich angewendet wird, was den praktischen Nutzen der Tests erhöht. Testfälle werden flexibel erstellt, sobald eine neue Softwarekomponente oder -version testbereit ist, und lassen sich jederzeit an veränderte Bedürfnisse anpassen.
3. Zeitplanung und Änderungsmanagement
Beim traditionellen Modell ist die Entwicklung der Software nahezu oder sogar komplett abgeschlossen, bevor mit dem Testen begonnen wird. Hierdurch verlängert sich der Gesamtprozess, da das Entwicklungsteam die Testergebnisse abwarten muss und erst im Anschluss daran Korrekturen oder Änderungen erwägen kann.
Agile Tests werden zeitgleich mit Sprints oder Iterationen durchgeführt, sodass ihre Ergebnisse unverzüglich in die Entwicklung einfließen und eventuelle Programmierfehler frühzeitig bemerkt und eliminiert werden.
4. Umfang der Testebenen
Ein typisches Merkmal herkömmlicher Verfahren sind auf mehreren Ebenen durchzuführende Tests umfangreicher Veröffentlichungen oder sogar kompletter Softwareprogramme, die viel Zeit und Mühe beanspruchen. Ihre Vorbereitung erfordert umfangreiche Planung, um die Tests überhaupt im benötigten Umfang durchführen zu können.
Bei agilen Testverfahren lassen sich die Testebenen flexibel wählen und in Sprints oder Iterationen integrieren. Durch kombinierte Einheits-, Integrations- und Abnahmetests im Verlauf eines einzigen Sprints erhöht sich die Entwicklungsgeschwindigkeit und erforderliche Anpassungen können unverzüglich vorgenommen werden.
5. Einbeziehung der Nutzergemeinde
Beim klassischen Modell können erst bei den Abnahmetests in der Endphase der Softwareentwicklung Kundenerfahrungen und Feedback eingeholt werden. Wird dabei festgestellt, dass das Programm nicht den Benutzerwünschen entspricht, sind Probleme und zusätzliche Kosten kaum noch zu vermeiden. Dies ist der Grund für die oben erwähnten detaillierten Definitionen während der Entwicklung.
Agile Methoden zielen auf aktivere Einbindung der Endbenutzer:innen ab. Unmittelbares Feedback während der Sprints ermöglicht schnelle Korrekturen. Die frühzeitige Einbeziehung der Menschen, für welche die Software letztendlich bestimmt ist, kann auch diesen selbst dabei helfen, ihre tatsächlichen Bedürfnisse zu erkennen.
Die Wahl der Testverfahren hängt oft von den Arbeitsweisen der Organisation und den angewendeten Softwareentwicklungsmethoden ab. Es ist auch möglich, klassische und agile Elemente zu Hybridverfahren zu kombinieren und individuell an die Bedürfnisse und Kapazitäten des Entwicklungsteams anzupassen