Was ist kontinuierliches Testen?

Kontinuierliches Testen ist der Prozess, bei dem Ihre Anwendung in jeder Phase des Softwareentwicklungsprozesses und jedes Mal getestet wird, wenn Änderungen am Anwendungscode oder an den Konfigurationen vorgenommen werden. Geschäftliche Agilität erfordert, dass Unternehmen die Veröffentlichungszyklen verkürzen und häufig neue Features und Verbesserungen bereitstellen. Kontinuierliches Testen integriert Tests in jeder Phase der Softwarebereitstellungspipeline, um Fehler frühzeitig zu erkennen und die Softwarequalität aufrechtzuerhalten. Softwaretests werden zusammen mit dem Anwendungscode als Code verwaltet und häufig als Teil des kontinuierlichen Testparadigmas ausgeführt.

Was ist Continuous Testing in Production?

Mit Continuous Testing in Production (CTIP) können Sie Codeprüfungen in der Produktionsumgebung automatisieren. Einige Fehler wurden in früheren Phasen der Softwareentwicklung möglicherweise nicht erkannt, treten jedoch auf, wenn Benutzer in Echtzeit mit der Anwendung interagieren. Sie können Softwaretesttools und Skripts anwenden, um die Erkennung von Problemen zu automatisieren und schnelle Abhilfemaßnahmen zu ermöglichen. CTIP ist zwar hilfreich bei der Erkennung latenter Softwareprobleme in der Produktionsumgebung, ersetzt jedoch nicht andere Softwaretests, die während der Entwicklung durchgeführt werden. 

In welcher Beziehung stehen kontinuierliche Tests zu Continuous Integration und Continuous Delivery?

Continuous Integration und Continuous Delivery (CI/CD) ist eine DevOps-Praxis, die Qualität und Geschwindigkeit bei der Bereitstellung von Softwareversionen für Endbenutzer in Einklang bringt. Bei der Entwicklung oder Aktualisierung einer Anwendung können mehrere Entwickler Änderungen in ihren jeweiligen Codezweigen vornehmen. Jeder Zweig enthält eine modifizierte Version des Originalcodes. Die Entwickler müssen diese Zweige in einem gemeinsamen Repository zusammenführen, ohne dass es zu Codekonflikten kommt. 

Mit Continuous Integration (CI) können Sie das Zusammenführen von Code aus verschiedenen Branchen automatisieren. Continuous Delivery (CD) bereitet automatisch eine funktionsfähige Version der Anwendung vor, die Sie jederzeit für Endbenutzer bereitstellen können. CI und CD optimieren gemeinsam die Bemühungen zur Bereitstellung neuer Software und machen inkrementelle Codeänderungen schneller und effizienter.

Weitere Informationen zu Continuous Integration

Weitere Informationen zu DevOps

Kontinuierliches Testen in CI/CD

Kontinuierliches Testen in DevOps ist ein wesentliches Prinzip, das die gesamte CI/CD-Pipeline bestimmt. Softwareteams können nach links wechseln oder den Testprozess parallel zur Entwicklung verschieben. Anstatt das Testen auf eine spätere Phase zu verschieben, führen Sie bei jeder Gelegenheit im Softwareentwicklungszyklus (SDLC) automatisierte Tests durch. Sie verwenden automatisierte Testtools, um Code zu überprüfen, Testskripte auszuführen und wertvolle Erkenntnisse zur Verbesserung der Softwarequalität zu gewinnen.

Tools für kontinuierliches Testen führen während des CI-Prozesses automatisch Funktions-, Codequalitäts- und Komponententests durch, wenn Sie Änderungen an Ihrem Code vornehmen. Diese Tools automatisieren umfangreiche Tests – einschließlich Regressions-, Integrations- und Lasttests – in der CD-Pipeline, um die Geschäftsrisiken weiter zu minimieren.

Das folgende Diagramm zeigt ein Beispiel für eine CI/CD-Pipeline in Mainframe-DevOps.

Weitere Information zum Lebenszyklus der Softwareentwicklung

Was sind die Vorteile kontinuierlicher Tests?

Sie können die folgenden Vorteile nutzen, wenn Sie Tools für kontinuierliches Testen in den modernen Anwendungsentwicklungszyklus integrieren. 

Beschleunigung der Softwareentwicklung

Mit dem kontinuierlichen Testprozess können Sie Ihre Entwicklungszeit und Ihren Entwicklungsaufwand mit automatisierten Testtools beschleunigen. Herkömmlicherweise folgt die Softwareentwicklung dem Wasserfallmodell, bei dem Entwickler eine bestimmte Phase abschließen, bevor sie zur nächsten übergehen. Mit modernen Softwareentwicklungspraktiken wie Agile und DevOps können Sie Ihren Ansatz flexibler gestalten. In Verbindung mit kontinuierlichen Tests können Sie beim Programmieren testen und Korrekturen anwenden, anstatt auf Feedback von QA-Technikern warten zu müssen. Das bedeutet, dass Sie die Markteinführungszeit verkürzen und besser auf Funktionsanfragen reagieren können.

Kosten verringern

Softwarefehler und Leistungsprobleme beeinträchtigen die Servicebereitstellung, wodurch Unternehmen Geschäftschancen verlieren und erhebliche Kosten entstehen können. Trotz Ihrer Bemühungen decken Sie möglicherweise nicht alle Softwareprobleme vor der Bereitstellung auf. Sie können Tools für kontinuierliche Tests verwenden, um Probleme im gesamten SDLC zu bewerten, zu überwachen und zu melden. Sie können die Kosten und Ressourcen für die Problembehebung reduzieren, indem Sie Softwareprobleme in einem früheren Stadium der Entwicklungspipeline erkennen. Das frühere Beheben von Fehlern ist günstiger als in einer Produktionsumgebung. 

Verbessern Sie die Codequalität

Bei der Entwicklung von Software bemühen Sie sich, die Best Practices für die Codierung einzuhalten. Gut strukturierter Quellcode ist leicht verständlich, enthält weniger Fehler und verbraucht weniger Rechenressourcen. Durch kontinuierliches Testen können Sie die Codekonsistenz in Ihren verschiedenen Projekten aufrechterhalten. Sie können Code auch sicherer wiederverwenden, wenn er gründlich auf Fehler, Funktions- und Leistungsprobleme getestet wurde. 

Die Zusammenarbeit im Team verbessern

Kontinuierliches Testen spielt eine wichtige Rolle bei der Sichtbarkeit von Softwaretests, die während der gesamten Entwicklungsphase durchgeführt werden. Anstatt in Silos zu arbeiten, verfolgen die Entwicklungs-, QA- und Betriebsteams einen proaktiveren Ansatz, um Softwarefehler in Testumgebungen zu entdecken. Wenn Sie in CI/CD integriert sind, können Sie verschiedene Softwaremodule testen und die Ergebnisse gleichzeitig kommunizieren. Beispielsweise können mehrere Entwickler gleichzeitig neue Funktionen testen, während die Betriebsteams prüfen, ob die bestehende Cloud-Infrastruktur die sich ändernden Anforderungen unterstützen kann. 

Verbesserung des Kundenerlebnisses

Mithilfe robuster Teststrategien können Sie mögliche Probleme vorhersehen und Ihre Reaktionen planen, wenn Sie neue Softwareänderungen veröffentlichen. Anstatt die Kundenerwartungen durch eine fehlerhafte Version zu dämpfen, können Sie Frameworks für kontinuierliche Tests verwenden, um mögliche Szenarien zu simulieren und potenzielle Probleme zu antizipieren. Sie können beim Test festgestellte Probleme beheben, bevor Sie die Software in der Produktionsumgebung veröffentlichen. Das bedeutet, dass Sie konsistent ansprechende Softwareerlebnisse bieten können. 

Was sind kontinuierliche Testmethoden?

Kontinuierliche Tests umfasst zahlreiche Tests, mit denen Sie sichere, benutzerfreundliche und funktionale Anwendungen erstellen können. Im Folgenden sind einige gängige Testmethoden aufgeführt.

Funktionstests

Mithilfe von Funktionstests können Sie den Software-Workflow an den Geschäftsanforderungen ausrichten, nach denen sie konzipiert wurden. Beispielsweise benachrichtigt eine E-Commerce-Software den Versandanbieter bei jeder Bestellung, die sie erhält. Bei Funktionstests können Sie sicherstellen, dass die Software den richtigen API-Aufruf an das System des Versandanbieters sendet. 

Regressionstests

Regressionstests stellen sicher, dass Ihre Codeänderungen die Stabilität, Leistung, Sicherheit und Funktionalität der Anwendung nicht beeinträchtigen. Der Test gewährleistet ein konsistentes Softwareverhalten bei der Einführung schneller Codeänderungen in modernen Softwareumgebungen. 

Leistungstests

Mit Leistungstests können Sie nichtfunktionale Aspekte einer Anwendung bewerten. Während eines Leistungstests beurteilen Sie, ob die Anwendung trotz steigendem Web-Traffic, Speicherverbrauch, gleichzeitiger Benutzer und anderer Umgebungsparameter optimal funktioniert. Sie können die umsetzbaren Erkenntnisse des Tests nutzen, um Engpässe zu identifizieren und Code-Workflows zu optimieren. 

Integrationstests

Mit Integrationstests können Sie sicherstellen, dass sich Softwarekomponenten und Abhängigkeiten von Drittanbietern in der Anwendung wie erwartet verhalten. Beispielsweise sollte ein API-Aufruf eine entsprechende Antwort zurückgeben, wie in der Dokumentation angegeben. Sie können Integrationstests durchführen, um sicherzustellen, dass alle Abhängigkeiten reibungslos funktionieren, wenn sie zusammengeführt werden. 

Benutzerakzeptanztest

Benutzerakzeptanztests werden in der Regel mit benutzerdefinierter Software durchgeführt, die für bestimmte Benutzer entwickelt wurde. Nehmen wir das Beispiel der Entwicklung einer Customer Relationship Management (CRM)-Softwareanwendung für einen Kunden im Einzelhandel. Sie führen Benutzerakzeptanztests durch, um zu überprüfen, ob alle Anforderungen und Funktionen so konzipiert sind, wie in der Softwareanforderungsspezifikation beschrieben. Basierend auf dem Feedback der Benutzer können Sie die Software überarbeiten oder ausliefern, um die Lieferung abzuschließen. 

Smoke Testing

Smoke Testing ist eine Automatisierung von Softwaretests, die QA-Techniker durchführen, wenn sie einen neuen Build von Entwicklern erhalten. QA-Teams verwenden Smoke Testing (auch bekannt als Build-Verifikationstests), um sicherzustellen, dass wichtige Funktionen der Software keine größeren Mängel aufweisen. In diesem Fall informiert das QA-Team die Entwickler über die entdeckten Probleme und wartet auf eine Überarbeitung, bevor sie mit weiteren Tests fortfahren. 

Was sind die Herausforderungen kontinuierlicher Tests?

Trotz der Vorteile kontinuierlicher Tests könnten Sie aus den folgenden Gründen vor Herausforderungen stehen, wenn Sie sie in großem Maßstab implementieren:

  • Sie sind an herkömmliche Test- und Testdatenmanagementpraktiken gewöhnt, bei denen Tests in den frühen Entwicklungsphasen nicht priorisiert werden. 
  • Sie benötigen einen besseren Zugriff auf automatisierte Testtools, die Sie problemlos in bestehende Entwicklungsabläufe integrieren können. 
  • Sie beschränken Ihre kontinuierlichen Tests auf die Automatisierung von Softwaretests, was die positive Wirkung verringert. Stattdessen müssen Sie kontinuierliche Tests als Teil einer umfassenderen Strategie wie DevOps und Agile anwenden, um funktionale Software bereitzustellen, die das Benutzererlebnis verbessert. 

Die Einführung kontinuierlicher Tests erfordert eine Denkweise und einen kulturellen Wandel, der von der obersten Führung ausgeht.

Wie kann AWS Ihnen bei Ihren Anforderungen an kontinuierliche Tests helfen?

Mit Amazon Web Services (AWS) können Sie Ihre Entwicklungsbemühungen mit automatisierten Testtools in der CI/CD-Pipeline skalieren. Sie können die von AWS bereitgestellten Tools für kontinuierliche Tests verwenden, um funktionale, konsistente und benutzerfreundliche moderne Anwendungen zu erstellen. Beispielsweise können Sie:

  • Verwenden Sie AWS CodeBuild, um Tests zu automatisieren, wenn Sie Quellcodes in einsatzbereite Softwarepakete kompilieren. CodeBuild lässt sich in Ihre bestehende CI/CD-Pipeline integrieren, sodass Sie Fehler erkennen können, wenn sie leichter zu erkennen sind. 
  • Verwenden Sie AWS CodePipeline, um Fehler zu erkennen, wenn Sie iterative Softwareänderungen in der Test- oder Produktionsumgebung veröffentlichen. Mit CodePipeline können Sie Bereitstellungsworkflows in einer Pipeline modellieren, die in AWS CodeCommit,  AWS CodeDeploy und AWS CloudFormation integriert ist.

Beginnen Sie mit kontinuierlichen Tests in AWS, indem Sie noch heute ein Konto erstellen.

Nächste Schritte in AWS

Für ein kostenloses Konto registrieren

Sie erhalten sofort Zugriff auf das kostenlose Kontingent von AWS.

Registrieren 
Mit der Entwicklung in der Konsole starten

Starten Sie mit der Entwicklung in der AWS-Managementkonsole.

Anmelden