Sehen Sie, welche API-Testlösung im GigaOm Radar Report am besten abgeschnitten hat. Holen Sie sich Ihren kostenlosen Analystenbericht >>

Sehen Sie, welche API-Testlösung im GigaOm Radar Report am besten abgeschnitten hat. Holen Sie sich Ihren kostenlosen Analystenbericht >>
Zum Abschnitt springen
Bei der kontinuierlichen Integration werden die Arbeitskopien aller Entwickler zu einer gemeinsamen Hauptlinie zusammengeführt. Dieser Prozess macht die Softwareentwicklung für Entwickler zugänglicher, schneller und weniger riskant. Lesen Sie diesen Artikel, um zu verstehen, wie Sie SOAtest für die Ausführung funktionaler Regressionstests als Teil von CI konfigurieren.
Zum Abschnitt springen
Zum Abschnitt springen
Eine Regression wird als „ein Trend oder eine Verschiebung hin zu einem niedrigeren oder nicht perfekten Zustand“ definiert, was wir alle bei der Entwicklung von Software zu vermeiden versuchen. Regressionstests entdecken Fehler, die sich in unsere Software einschleichen, wenn wir neue Funktionen hinzufügen, Fehler beheben oder die Anwendung anderweitig ändern.
Regressionstests sind eine gängige Methode, die in den meisten Softwareentwicklungsprozessen eingesetzt wird, um die Funktionalität einer Software nach der Durchführung von Änderungen noch einmal zu überprüfen. Bei diesen Tests wird ermittelt, ob die neuen Änderungen Auswirkungen auf die aktuelle Funktionalität der Software haben. Für neue Funktionalitäten sind natürlich neue Tests nötig. Regressionstests stellen sicher, dass das, was bereits getestet wurde, weiterhin funktionsfähig bleibt.
Regressionstests spielen eine wichtige Rolle bei der kontinuierlichen Integration (CI) in der Softwareentwicklung, indem sie sicherstellen, dass der neu integrierte Code keine bestehenden Funktionen beeinträchtigt oder Regressionen einführt. Diese Tests liefern das für CI unerlässliche schnelle Feedback, indem sie Fehler in neu integriertem Code erkennen, sodass diese schnell identifiziert und behoben werden können, bevor sie die Stabilität der Software beeinträchtigen.
Regressionstests beinhaltet Funktionstests. In der Praxis entwickeln sich die meisten Funktionstests mit der Zeit zu Regressionstests. Der große Unterschied liegt im Zeitpunkt und Ziel dieser Tests.
Funktionsprüfung Wird typischerweise während der Entwicklung durchgeführt, wenn neue Funktionen entwickelt, implementiert und getestet werden. Dabei werden spezifische Funktionen, Features oder Anwendungsfälle der Software überprüft, um deren erwartungsgemäßes Verhalten zu überprüfen. Dabei können verschiedene Testverfahren wie Unit-Tests, API-Tests, UI-Tests und andere zum Einsatz kommen.
Regressionstests hingegen werden während der Entwicklung als Teil der CI-Pipeline und/oder nach wichtigen Entwicklungsmeilensteinen, beispielsweise am Ende eines Sprints oder eines Release-Zyklus, durchgeführt. Regressionstests werden so weit wie möglich automatisiert, damit sie wiederholbar und effizient sind, und sie umfassen sowohl funktionale als auch nichtfunktionale Tests. Mehr dazu weiter unten.
Regressionstests profitieren erheblich von der Automatisierung, und daher unterstützen Tools, die zur Unterstützung der Praxis entwickelt wurden, auch die Automatisierung aller Arten von Tests. Diese Tools helfen bei der Automatisierung der Ausführung von Testfällen, die die Softwarefunktionalität überprüfen, Ergebnisse sammeln und analysieren und über etwaige Regressionsprobleme berichten. Hier sind einige häufig verwendete Klassen von Software-Automatisierungstools für funktionale Regressionstests.
Diese Arten von Tools sind eine Teilmenge der vielen verschiedenen Tools, die möglicherweise für die vollständige Validierung einer Anwendung erforderlich sind. Es ist wichtig, dass diese Tools nahtlos zusammenarbeiten, um die CI/CD-Pipeline zu erleichtern.
CI ist eine gut verstandene, gut angewandte Praxis und ein notwendiger erster Schritt, um die Geschwindigkeit der Anwendungsbereitstellung deutlich zu verbessern. Es ermöglicht Entwicklern, ihre Änderungen direkt in einen Hauptzweig des Quellcodes zu übertragen. Ein einzelner Entwickler kann möglicherweise an einem einzigen Tag viele Änderungen an der Hauptniederlassung vornehmen. Um sicherzustellen, dass der Master-Zweig makellos, erstellbar und produktionstauglich ist, ist es wichtig, für jede Änderung über geeignete Testfälle zu verfügen, da er als goldene Kopie des Quellcodes für die Anwendung dient.
Sehen wir uns an, wie man Parasoft SOAtest für die Durchführung von Funktionstests und Regressionstests als Teil eines kontinuierlichen Integrationsprozesses konfiguriert. Wir werden die Schritte zum Konfigurieren von Parasoft SOAtest mit Jenkins, einer beliebten Automatisierungsplattform unter Verwendung der Open-Source-Demoanwendung Parabank, durchgehen und sie mit Docker bereitstellen, um die Dinge einfacher zu halten.
Das folgende Diagramm zeigt den in diesem Artikel beschriebenen Workflow. Folgen Sie den Schritten von links nach rechts.
Zugegebenermaßen entspricht dies nicht ganz dem Geist einer echten kontinuierlichen Integration, da wir mit einem vorgefertigten Docker-Image beginnen. Aber das erspart uns die Mühe, Parabank mit Maven zu erstellen und Tomcat/Java zu installieren und zu konfigurieren.
Das folgende Diagramm zeigt ein realistischeres, praxisnahes Diagramm von CI. Sobald ein Entwickler den Quellcode in GitHub eincheckt, möchten wir die erforderlichen Regressionstests und alle neuen Funktionstestfälle durchführen, um zu überprüfen, ob die Anwendung auch nach den Änderungen des Entwicklers noch in einem guten Zustand ist.
Eine Änderung des Quellcodes in GitHub löst automatisch einen Build in Jenkins aus, und Jenkins startet eine Maven-Build-Phase, die alle statischen Codeanalysen und JUnit-Tests ausführt und unsere Anwendung erstellt. Wenn alle Komponententests erfolgreich sind, wird die gepackte Anwendung parabank.war im Rahmen der Bereitstellungsphase auf einem Anwendungsserver – in diesem Fall Tomcat – bereitgestellt. SOAtest startet dann die Testphase und führt Regressionstests und Funktionstests durch.
Erst nachdem die Unit-Tests und Black-Box-Testfälle während der SOAtest-Ausführung bestanden wurden, gelten die ursprünglichen Änderungen des Entwicklers als gut.
Sehen wir uns die Voraussetzungen und Schritte zum Konfigurieren des Prozesses im ersten Diagramm an.
Wenn wir möchten, dass unser Jenkins-Build aufgrund von SOAtest-Testfehlern fehlschlägt, fügen wir das Flag -fail hinzu, wenn wir soatestcli aufrufen. So was:
soatestcli.exe -fail -data %TEMP_WORKSPACE_PATH% -resource /Parabank -config “builtin://Demo Configuration” -localsettings %LOCALSETTINGS_PATH%
Wenn Sie den Test in der SOAtest-Desktop-Benutzeroberfläche öffnen, werden Sie feststellen, dass es sich bei diesem Testfehler in erster Linie um ein Problem mit den Testdaten und der Testumgebungskonfiguration handelt. Der Loan Processor Service lehnte einen Kredit ab, den er hätte genehmigen sollen.
Die Implementierung einer kontinuierlichen Integration in Ihren Softwareentwicklungsprozess erhöht die Geschwindigkeit der Anwendungsbereitstellung erheblich. Automatisierte Lösungen wie SOAtest bieten eine skalierbare und effiziente Regressionsteststrategie mit der Möglichkeit, Testfälle auszuführen, die die Softwarefunktionalität überprüfen, Ergebnisse sammeln und analysieren und etwaige Regressionsprobleme melden. Die Kombination hilft Teams, eine höhere Release-Geschwindigkeit zu erreichen, die Testproduktivität zu verbessern und eine hohe Testabdeckung sicherzustellen.
Modernisieren Sie Ihre Anwendungen: Wechseln Sie von manuellen Tests zu CI/CD