WAS IST EIN REGRESSIONSTEST (TR) ODER EIN NICHTREGRESSIONSTEST (TNR)?
Wenn Sie die Qualität Ihrer Web- oder Mobilanwendung überprüfen möchten, stehen Ihnen eine Vielzahl von Tests zur Verfügung. Und einer der wesentlichsten ist kein anderer als der Regressionstest. Aber was genau ist das? Erklärungen.
Was ist ein Rückschritt?
Im Grunde genommen bezeichnet das Wort "Regression" " eine Entwicklung, die zu einem früheren Stadium zurückführt". In der Informatik findet ein Rückschritt statt, sobald eine Änderung des Codes Auswirkungen auf den bestehenden Code hat. Dies kann durch die Behebung eines Fehlers, ein Software-Update oder das Hinzufügen einer neuen Funktion geschehen.
Wenn z. B. eine neue Funktion implementiert wird und diese das Verhalten von zuvor vorhandenen Funktionen stört, dann liegt eine Regression vor, da ein Fehler eingeführt wurde. Um dies zu verhindern, führen die technischen Teams daher spezielle Tests durch, die man Regressionstests oder Nicht-Regressionstests nennt.
Was ist ein Regressionstest (oder Nicht-Regressionstest)?
Nach der Definition des ISTQB besteht ein Regressionstest darin, ein zuvor getestetes Programm nach einer Änderung zu testen, um sicherzustellen, dass keine Fehler in unveränderten Teilen der Software als Folge der vorgenommenen Änderungen eingeführt oder entdeckt wurden.
Zusammenfassend lässt sich sagen, dass ein Regressionstest dazu dient, zu überprüfen, ob Änderungen an der Software, der Website oder der mobilen Anwendung, wie z. B. das Hinzufügen einer neuen Funktion oder ein Update, die zuvor vorhandenen Funktionen nicht beeinträchtigt haben. Nehmen wir als Beispiel ein Fahrrad: Wenn das Rad gewechselt wird, würde ein Regressionstest darin bestehen, zu überprüfen, ob trotz des Radwechsels die Bremsen noch funktionieren (es muss aber nicht überprüft werden, ob die Fahrradpumpe richtig einhakt).
Was ist der Unterschied zwischen einem Regressionstest und einem Nicht-Regressionstest? Eigentlich gibt es keinen, es ist genau das Gleiche. Wir verwenden beide Begriffe. Das ISTQB z. B. bevorzugt den Begriff Regressionstest. Aber viele Leute in der Szene verwenden auch den Begriff Nichtregressionstest, zumindest in Frankreich. Alles ist eine Frage der Wahl, und es stimmt, wenn man nicht aus der Branche kommt, kann dies zu Verwirrung führen. Was soll ich sagen, die Franzosen sind komplexe Wesen, die gerne mit Worten spielen!
Regressionstests und Funktionstests
Mit funktionalen Tests wird überprüft, ob eine Software (Website, mobile Anwendung, API...) gemäß den vom Kunden im Vorfeld festgelegten Spezifikationen funktioniert. Bei einer E-Commerce-Website bedeutet dies beispielsweise, dass überprüft wird, ob das Einloggen in das Konto oder auch das Hinzufügen zum Warenkorb oder die Auswahl einer Lieferart keine Fehler verursacht und dass keine festgestellten Abweichungen von den zuvor gelieferten Daten vorliegen.
Regressionstests werden durchgeführt, wenn eine neue Version des Codes veröffentlicht wird, um sicherzustellen, dass diese Version keine Fehler in der restlichen Software verursacht hat. Sie können sowohl auf die Funktionalität als auch auf nicht-funktionale Aspekte wie die Leistung abzielen. Wenn z. B. eine Aktualisierung dazu führt, dass die Website oder die Anwendung länger als üblich reagiert, kann man von Regression sprechen.
Welche verschiedenen Arten gibt es? Arten von Regressionstests?
Regressions- oder Nichtregressionstests können auf verschiedene Arten durchgeführt werden, je nachdem, welcher Bedarf angestrebt wird oder welche Ressourcen das Unternehmen hat.
Bei korrektiven Regressionstests werden z. B. vorhandene Tests wiederverwendet, sofern keine wesentlichen Änderungen am Produkt vorgenommen wurden.
Bei vollständigen Regressionstests werden alle Elemente des Produkts erneut getestet. Dadurch werden alle Änderungen, die von Anfang an vorgenommen wurden, überprüft.
Bei selektiven Regressionstests hingegen werden bestimmte Tests aus einer Menge ausgewählt, um nur die Teile des Codes zu inspizieren, die betroffen sind.
Bei progressiven Regressionstests werden neue Tests erstellt, wenn die etablierten Tests nicht mehr nützlich sind, z. B. wenn sich die Produktmerkmale ändern.
Partielle Regressionstests werden durchgeführt, wenn sich verschiedene Module in der Entwicklung befinden und kurz davor stehen, mit der Hauptversion des Codes zusammengeführt zu werden.
Unit-Regressionstests hingegen dienen dazu, den Code einzeln zu testen, ohne die anderen Elemente zu berücksichtigen.
Wann sollte man Regressionstests durchführen?
Regressionstests können auf allen Ebenen des Testplans durchgeführt werden, und es wird sogar empfohlen, sie so regelmäßig wie möglich durchzuführen, sobald Änderungen oder Aktualisierungen vorgenommen werden, und zwar so früh wie möglich in der Produktentwicklung.
Aber im Allgemeinen werden Nicht-Regressionstests durchgeführt, sobald es :
>> eine Korrektur, die am Code vorgenommen wird, um Anomalien zu beheben>> eine neue Funktion, die hinzugefügt wird
>> eine Änderung einer bestehenden Funktionalität
>> eine Aktualisierung, die in der Umgebung vorgenommen wurde (z. B. Daten)
>> eine Optimierung des Quellcodes
Warum Regressionstests durchführen?
Der erste Grund für Regressionstests, der auch der Hauptgrund für alle anderen Arten von Tests sein sollte, ist, dass man damit die Qualität der Software (Website, mobile Anwendung) sicherstellen kann. Und, wenn man ein qualitativ hochwertiges Produkt anbietet, verbessert man auch die Nutzererfahrung und damit das Image des Unternehmens.
Zweitens kann die Durchführung von Regressionstests die Risiken verringern, die mit der Aktualisierung von Anwendungen, Webseiten usw. verbunden sind. Das ist wichtig, denn abgesehen davon, dass es zu Bugs kommen kann, die die Nutzung bestimmter Funktionen verhindern (was sich auf den Umsatz des Unternehmens und sein Image auswirken kann), kann es auch zu Sicherheitslücken führen. Und hier steht die Glaubwürdigkeit des Unternehmens und das Vertrauen der Nutzer in das Unternehmen auf dem Spiel.
Neben einer Qualitäts-, Risiko- und Imagegeschichte besteht der Vorteil der regelmäßigen Durchführung von Regressionstests darin , Zeit und Geld zu sparen, da es immer komplexer und teurer ist, einen Fehler in der Produktion beheben zu müssen. Ganz zu schweigen davon, dass es sich hierbei um die relevantesten Tests handelt, die automatisiert werden können, und dass die Automatisierung ebenfalls Zeit und Geld spart, aber dazu später mehr.
Bei der Entwicklung von mobilen Anwendungen oder SaaS-Software, die ständig aktualisiert werden, um den Anforderungen der Kunden gerecht zu werden, sind Regressionstests schließlich umso notwendiger.
Wo liegen die Grenzen von Regressionstests?
Regressionstests sind sehr zeitaufwändige und sich wiederholende Tests. Und auch wenn sie größtenteils automatisiert werden sollten, müssen einige Testfälle manuell durchgeführt werden. Mehr noch: Einige komplexe Funktionen erfordern komplexe Testszenarien, was ebenfalls die Ausführungs- und damit Lieferzeit verzögern kann. Kurzum, aufgrund von Zeit- und Budgetbeschränkungen können nicht alle Regressionstests durchgeführt werden, und es sollte daher sorgfältig ausgewählt werden, welche Tests vorrangig durchgeführt werden sollen.
Wie steht es mit derAutomatisierung von Tests?
Wie bereits erwähnt, haben Nicht-Regressionstests einen echten Nutzen, wenn sie automatisiert werden, und es sind auch die Tests, deren Automatisierung häufig als erstes empfohlen wird. Warum ist das so? Weil sie sich wiederholen und zeitaufwendig sind. Sie werden bei jedem Einsatz einer neuen Funktion oder eines Software-Updates durchgeführt, und sie alle manuell durchzuführen, kostet Zeit, sehr viel Zeit, ganz zu schweigen davon, dass man viele einfache Dinge tun muss und die Abfolge ermüdend und schwierig werden kann. Hier macht die Automatisierung von Regressionstests Sinn.
Schließlich ermöglicht die Testautomatisierung, mögliche Rückschritte so früh wie möglich zu erkennen, und vor allem hilft dies, die Lieferrhythmen einzuhalten und so die Kapitalrendite zu verbessern. Es ist jedoch nicht notwendig, alles zu automatisieren, und es wird allgemein empfohlen, sich vorrangig auf Testfälle zu konzentrieren, die häufig Fehler aufweisen, Testfälle, die wesentliche, kritische Produktfunktionen überprüfen, und Testfälle, die Funktionen überprüfen, die in letzter Zeit häufig geändert wurden.