Was sind die Regressionstests

Was sind die Regressionstests

Regressionstests zielt darauf ab, die Software-Update für die zuvor festgestellte Mängel zu überprüfen. Es wird verwendet, um sicherzustellen, dass eine Software nach der irgendwelchen Änderungen im Kode ordnungsgemäß funktionieren wird. Da ist es immer Gefahr von Rezidiv der Defekten. Nach verschiedenen Schätzungen kann dieses Risiko von 50 bis 80% erreichen. Regressionstests können funktionale und nicht funktionale sein.

Während des Entwicklungsprozesses, wird eine Software inkrementell geändert. Es bedeutet, dass vorhandener Kode modifiziert ist, festgestellte Mängel korrigiert sind, neue Funktionalität hinzugefügt wurde, Komponenten angepasst wurden, um die neuen Aufgaben zu erfüllen. Sogar kleine Änderungen im Kode können ernsthaft die Leistungsfähigkeit der Software beeinträchtigen, weil die Defekten sich bei dem Software-Entwicklungsprozess oft wiederkehren. Normalerweise startet die Software nach der Änderung im Kode falsch funktionieren. Üblicherweise hat der Defekt nicht offensichtliche Auswirkungen im gesamten System. Jeder Versuch ihn mit minimalem Aufwand zu beheben führt zur Korrektur der offensichtlichen Ausgabe und stellt nicht sicher, dass dies nicht neue Defekte verursachen wird. Die Gründe, warum es passiert, können schlechte Versionskontrollmethoden oder menschlichen Faktor sein, wenn der Kode integriert ist oder auf ein anderes Betriebssystem, eine Datenbank, sowie Web-Server migriert.

Also, die Hauptziel der Regressionstests ist die Software-Einhaltung mit der Anforderungen nach der Veränderungen zu überprüfen.

Typen der Regressionstests

Es gibt drei grundlegende Typen von Regressionstests (nach Sem Kaner): Bug-Regression, Regression von alten Bugs und Nebenwirkung.

  • Bug-Regression ist ein Versuch zu beweisen, dass der gefunden Bug nicht fixiert wurde.
  • Regression von alten Bugs ist ein Versuch zu beweisen, dass die letzte Änderung des Kodes oder der Daten zur Wiederholung der vorher korrigierten Bugs führt.
  • Regression der Nebenwirkung ist ein Versuch zu beweisen, dass die letzte Änderung des Kodes oder der Daten unveränderte Teile von Software betrifft.

Nach ihrer Bedeutung können die Regressionstests in folgende Kategorien geteilt werden:

  • Build-Verifizierungstests überprüfen die Grundfunktionalität jeder Software-Version.
  • Bug-Verifizierungstests bestätigen die Wiederauftreten von zuvor festgestellten Mängeln in der aktualisierten Software.
  • Regression Test Pass sind zuvor durchgeführten Tests, die keine Defekte in früheren Software-Versionen erkennen könnten.

Im Falle der zeitlichen Beschränkungen können einige dieser Tests weggelassen werden, falls keine Änderungen an die entsprechenden Abschnitte des Codes gemacht wurden.

Fixed Bugs Tests. Der Fehler wird fixiert genannt, wenn nach seiner Erkennung und Korrektur, findet der gleiche Test keine Fehler. Es kann jedoch wieder auftreten, deshalb empfiehlt es sich, diesen Test Zeit zu Zeit wieder zu bestehen.

Auswahl und Ausführung der Regressionstests

Der Prozess der Regressionstests hängt maßgeblich von der Softwareart. Tester verwenden die Testfälle, die wurden in den frühen Entwicklungsstadien geschrieben. Es stellt sicher, dass die Änderungen für Version-Veröffentlichung wurden die bereits vorhandene Funktionalität nicht beschädigen.
Tests für Regressionstesting sollten entsprechend ihrer Vollständigkeit, Genauigkeit, Effizienz und Flexibilität ausgewählt sein. Die Vollständigkeit bedeutet, dass die ausgewählte Tests die verbundene mit der Änderungen im Code Defekte entdecken können. Die Genauigkeit ist eine Möglichkeit Tests zu überspringen, die ihr Verhalten in der modifizierten Software nicht ändern. Effizienz bedeutet schnellere Testdurchführung im Vergleich zu Vollregressionstests. Flexibilität bedeutet, dass die Tests in den meisten praktischen Situationen angewendet können.

Neue Regressionstests werden hinzugefügt, wenn das Software-Funktionalität aktualisiert wird, ein Defekt behoben ist, oder um die Testabdeckung zu erweitern. Alte Tests werden entfernt in einigen Fällen. Wenn sie weitere Tests wiederholen, keine Testabdeckung verbessern, Defekte nie erkennen oder finden die gleichen Fehler wie andere Tests.

Während des Regressionstesting ist es notwendig zu prüfen, ob der Fehler behoben wurde, die Software nachzuprüfen, den Rest der Funktionalität zu testen.
Regressionstesting wird für jede neue Version der Software durchgeführt. Es beginnt mit Bauen-Verifizierungstests. Falls einer Entwickler das Installationspaket liefert, beginnen die Bauen-Verifizierungstests mit der Installationstests und eine kleine Gruppe von Funktionstests. Wenn mindestens einer der Tests fehlschlägt wird, stoppt Tester die Regressionstests, führt die Software zur Überarbeitungund und zum aktuellen Arbeitsversion.

Nach der Bauen-Verifizierungstests sollten die Bug-Verifizierungstests durchgeführt werden. Tests, die zu den Änderungen bezogen sind, werden in der neuen Version ausgeführt. Hier wählt ein Tester nur Tests, die auf Änderungen in der neuen Softwareversion bezogen sind. Dann werden die Regressionstestdurchlauf und die Fixed-Bugs-Tests durchgeführt.

Um die Ressourcenverwendung zu optimieren, ist es sinnvoll die Regressionstests zu automatisieren, die angeblich mehr als 3-5-mal gelaufen werden. Bei manchen Projekten werden spezifische Werkzeuge verwendet, um Regressionstests automatisch mit einer vordefinierten Frequenz durchzuführen. Es wird in der Regel nach jeder erfolgreichen Zusammenstellung (für kleine Projekte) oder täglich / wöchentlich durchgeführt.
Tests für die endgültigen Regressionstests werden auf folgende Weise gewählt:

  • Tests, die zwei oder mehrere Male gescheitert werden
  • Tests, die einmal versagt und dann bestanden werden
  • Tests, die bestanden, aber nur einmal durchgeführt werden
  • Dann wird der Rest von Tests in Abhängigkeit von der Aufgabe durchgeführt wird.

Schlussfolgerungen

Die Regressionstests zielen darauf ab, die Softwaredefekte rechtzeitig zu identifizieren und zu korrigieren, die Einhaltung der modifizierten Software mit den Anforderungen zu verifizieren, die Software-Qualität im Entwicklungsprozess zu verwalten. Sie auch reduzieren die Software-Markteinführung, senken die Support-Kosten nach der Freisetzung, aufgrund der hohen Qualität der Software und helfen die Entwickler die Quelle des Problems schnell zu identifizieren und zu beheben.