Definition

Regressionstest

Was ist ein Regressionstest?

Regressionstests sind Softwaretests, mit denen Entwickler beurteilen, ob Änderungen an einer Anwendung oder an anderen zugehörigen Softwarekomponenten Fehler eingeführt haben. Ein Qualitätssicherungsingenieur führt diese Tests durch, um festzustellen, ob Änderungen am Code die Funktionsweise der Anwendung oder die Ressourcenbelegung beeinträchtigen oder stören.

Eine Anwendungsänderung oder -erweiterung kann unbeabsichtigte Nebeneffekte verursachen, die als Regressionen bezeichnet werden und durch Abhängigkeiten sogar in Komponenten oder Systemen auftreten können, die vom geänderten Code getrennt sind. Ein Regressionstest entdeckt diese unerwünschten Effekte. Folgende Anwendungsänderung oder Code-Modifikationen können Regressionstests erforderlich machen:

Ein Qualitätssicherungsingenieur führt einen Regressionstest auf einer von vier Testebenen durch:

  • Unit-Test – ein Prozess aus der Softwareentwicklung, bei dem die kleinsten testbaren Teile einer Anwendung, die sogenannten Units, einzeln und unabhängig voneinander auf ihre Funktionsfähigkeit überprüft werden.
  • Integrationstests – ein Softwareentwicklungsprozess, bei dem Programmeinheiten kombiniert und als Gruppe auf verschiedene Weise getestet werden.
  • Systemtests – das Qualitätssicherungsteam bewertet, wie die verschiedenen Komponenten einer Anwendung im vollständigen, integrierten System oder in der Anwendung zusammenwirken.
  • Akzeptanztests – bestimmen, inwieweit eine Anwendung die Anforderungen der Endbenutzer erfüllt. Je nach Unternehmen können Entwickler Akzeptanztests in Form von Betatests, Anwendungstests, Feldtests oder Endbenutzertests durchführen.

Typischerweise findet ein Regressionstest spät im Testzyklus statt, kurz vor der Freigabe; dennoch sollten Entwickler die Bedeutung von Unit-Regressionstests nicht außer Acht lassen. Sie beziehen sich jeweils nur auf eine Codeeinheit und können dadurch häufiger durchgeführt und wiederholt werden.

Regressionstests müssen mit der Geschwindigkeit mithalten können, mit der ein Unternehmen Software liefert. Regressionstests können zeitaufwändig sein und Stunden oder Tage in Anspruch nehmen. Aus diesem Grund entscheiden sich manche Softwareteams dafür, Tests zu automatisieren, um die Testausführungszeit zu verkürzen und Mitarbeiter für andere Aufgaben freizustellen.

Technische Umsetzung

Verwaltungssoftware für Tests hilft Entwicklungsteams dabei, festzustellen, ob ein Regressionstest effektiv ist. Sie stellen dazu eine Sammlung von Testfällen in einer Testsuite zusammen und strukturieren sie.

Eine Vorgehensweise an Regressionstests ist die Technik des Retest All – nicht zu verwechseln mit Retesting. Sie beinhaltet, wie der Name schon sagt, die Ausführung aller Regressionstestfälle, die das Team geschrieben hat. Diese Methode ist zwar besonders gründlich, kann aber für kleinere Versionen zu viel des Guten sein. Es gibt Kontexte, in denen Retest All erforderlich ist, zum Beispiel, wenn Software für eine neue Plattform, Sprache oder Kultur angepasst wird, oder wenn ein Betriebssystem ein größeres Update erhält.

Entscheidet sich ein Softwareentwicklungsteam dafür, bei jedem Testzyklus eine maßgeschneiderte Testsuite zu erstellen, kann es die Testfälle entsprechend ihrer Position in einem Prioritätssystem auswählen. Ein Testteam kann beispielsweise das höchste Level einem Testfall mit einer hohen Fehlerrate zuweisen oder aber einem solchen, der sich auf End-to-End- oder dem Kunden zugewandte Aspekte der Software bezieht. Ein Testfall, der sich auf zusätzliche Funktionalität bezieht oder kritische Anwendungsfunktionen überprüft, könnte ebenfalls eine hohe Priorität erhalten.

Retesting und Regression Testing klingen ähnlich, sind aber zwei verschiedene Konzepte.
Abbildung 1: Retesting und Regression Testing klingen ähnlich, sind aber zwei verschiedene Konzepte.

Daneben gibt es außerdem die partielle Regressionsstrategie, bei der Teams nur ausgewählte Testfälle durchführen, aber Tests hinzufügen, die sich auf große und wichtige Funktionen beziehen. Diese Art von Ansatz wird von einigen als Regressionstestauswahl (Regression Test Selection, RTS) bezeichnet. Manche unterscheiden jedoch zwischen RTS, wobei ein Team nur Testfälle ausführt, die von den jüngsten Codeänderungen betroffen sind und der partiellen Regression, bei der die Testsuite auch die Tests enthält, die sich auf kritische Funktionen beziehen.

Um festzustellen, wie weitreichend die Auswirkungen einer Änderung oder eines Builds auf die Software sind, kann das Team eine Impact-Analyse durchführen. Sie fügt der Sammlung von Testfällen neue Informationen für den nachfolgenden Testzyklus hinzu.

Ein Smoke-Test, der typischerweise einem Regressionstest vorausgeht, stellt nur fest, ob die Grundfunktionalität einer Anwendung funktioniert. Regressionstests untersuchen die Software umfassender.

Wann immer ein Test einen bisher unentdeckten Fehler verursacht, sollte ein Tester einen Testfall schreiben, der den Fehler in ähnlicher Weise reproduziert.

Werkzeuge für Regressionstests

Ein IT-Team kann ein Tool oder eine Plattform verwenden, um Regressionstests durchzuführen und zu optimieren. Ein Testmanagement-Tool hilft den Testern bei der Anwendung der Skriptautomatisierung sowie beim Auslösen von Smoke- und Regressionstests. In den meisten Fällen überlässt ein Regressionstest-Tool den Qualitätssicherungsingenieuren ein gewisses Maß an manueller Testarbeit.

Der Markt für Regressionstest-Tools umfasst Optionen mit Unterstützung für verschiedene Programmiersprachen und CI-Server (Continuous Integration, Kontinuierliche Integration) – und damit auch für den CI/CD-Prozess (Continuous Delivery, Kontinuierliche Auslieferung). Der Markt reicht außerdem von kostengünstigen oder kostenlosen Open-Source-Optionen bis hin zu funktionsreichen proprietären Tools.

Diese Definition wurde zuletzt im August 2024 aktualisiert

Erfahren Sie mehr über Softwareentwicklung