Seien Sie am 30. April dabei: Vorstellung von Parasoft C/C++test CT für kontinuierliche Tests und Compliance-Exzellenz | Registrierung

Last- und Leistungstests in einer DevOps Delivery-Pipeline

29. November 2023
8 min lesen

Leistungstests werden zunehmend Teil der Continuous-Delivery-Pipeline in DevOps-Einstellungen. Hier sprechen wir über Leistungstests und die besten Möglichkeiten, Last- und Leistungstests in die Bereitstellung von Anwendungen einzubeziehen.

Moderne Softwareanwendungen müssen schnell auf sich ändernde Geschäftsanforderungen reagieren sowie Fehler, Leistungsprobleme und Sicherheitsprobleme schnell beheben, um wettbewerbsfähig zu bleiben. In einer herkömmlichen Entwicklungsumgebung steht jedoch die Zeit, die zum gründlichen Testen einer Softwareanwendung vor ihrer Veröffentlichung benötigt wird, im Widerspruch zu der Geschwindigkeit, mit der sich die Anwendung weiterentwickeln muss.

DevOps-Methoden haben sich als wirksam erwiesen, um diese widersprüchlichen Anforderungen einer schnellen Veröffentlichung und Bereitstellung hoher Softwarequalität in Einklang zu bringen. Aus diesem Grund erfreuen sie sich in zukunftsorientierten Softwareentwicklungsorganisationen großer Beliebtheit.

DevOps verwendet in großem Umfang das Konzept des kontinuierlichen Prozesses, das für alle Phasen des Anwendungslebenszyklus gilt, einschließlich der Änderung von Code, Anwendungstests sowie der Bereitstellungs- und Produktionsüberwachung. Während kontinuierliche Unit- und Integrationstests eine breite Akzeptanz gefunden haben, kontinuierliche Leistungsprüfung hinkt deutlich hinterher, vor allem aufgrund der Schwierigkeiten der Unternehmen, traditionell manuelle Leistungstests in eine hochautomatisierte DevOps-Pipeline zu integrieren. In diesem Artikel beschreiben wir, wie sich Leistungstests ändern müssen, um ein integraler Bestandteil der DevOps-Umgebung zu werden.

Warum sind Leistungstests für Serveranwendungen so wichtig?

Anwendungen können auf verschiedene Weise fehlschlagen. Um Fehler zu erkennen, setzen Softwareentwicklung und Qualitätssicherung mehrere Arten von Tests ein. Zu den häufigsten gehören die folgenden.

  • Unit-Tests
  • Integrationstests
  • Sicherheitstests
  • Leistungstests
  • Verteilungstests

Jeder dieser Testtypen befasst sich mit einer bestimmten Kategorie von Fehlern, die bei einer Anwendung in der Produktion auftreten können. Leistungstests, die Gegenstand dieses Artikels sind, zielen auf eine Reihe von Fehlertypen ab, die auftreten, wenn die Anwendung einer Last gleichzeitiger Anforderungen ausgesetzt ist. Nachfolgend sind die sechs häufigsten dieser Fehlertypen aufgeführt.

  1. Langsame Reaktionszeiten. Reaktionszeiten fallen aufgrund von Anwendungs- oder Infrastrukturengpässen unter das akzeptable Niveau.
  2. Teilweise Nichtverfügbarkeit. Ein Zustand, in dem einige Clientanfragen keine Antworten erhalten. Dies kann aufgrund unzureichender Ressourcenzuweisungen, Ressourcenlecks, Parallelitätsproblemen (Race Conditions, Deadlocks) usw. passieren.
  3. Völlige Nichtverfügbarkeit. Anwendungsabstürze können auftreten, wenn sich Auswirkungen, die zu einer teilweisen Nichtverfügbarkeit führen, so weit verstärken, dass sie sich auf die gesamte Anwendung auswirken.
  4. Fehlerantworten. Anwendungsantworten weisen darauf hin, dass die Verarbeitung von Clientanforderungen fehlgeschlagen ist, indem beispielsweise HTTP 500-Antworten zurückgegeben werden. Dies kann auf die gleichen Ursachen zurückzuführen sein, die zu einer teilweisen Nichtverfügbarkeit der Anwendung führen, jedoch aufgrund der Anwendungslogik zu unterschiedlichem Verhalten führen.
  5. Falscher Inhalt in den Antworten. Die Anwendung gibt wohlgeformte Antworten mit falschem Inhalt zurück. Zeitweise falsche Inhalte in Antworten können beispielsweise durch Rennbedingungen verursacht werden.
  6. Mögliche Auswirkungen auf die Sicherheit aufgrund von Leistungsproblemen. Ein Beispiel hierfür ist die nicht ordnungsgemäße Handhabung von DOS-Angriffen (Denial of Service) oder die Offenlegung anwendungsinterner Details, die als Fehlerbeschreibungen in die Serverantworten eindringen können, wenn die Anwendung aufgrund einer Überlastung in einen schlechten Zustand gerät.

Jeder dieser Fehler kann zu finanziellen Verlusten führen und den Ruf des Unternehmens als zuverlässiger Dienstleister schädigen. Im Folgenden sehen wir uns Schritte zur Integration von Leistungstests in die DevOps-Pipeline an, um diese Probleme frühzeitig zu erkennen.

Integrieren Sie Leistungstests in die Continuous-Delivery-Pipeline

Sie können mit der Integration von Leistungstests in die Pipeline für die kontinuierliche Bereitstellung beginnen, indem Sie Jenkins oder einem Tool für die kontinuierliche Integration Ihrer Wahl ausgewählte Leistungstests hinzufügen und diese regelmäßig ausführen lassen.

Abhängig von Ihren Anforderungen können Sie während des Aufbaus oder Tests der Infrastruktur Leistungstests an einem oder mehreren der folgenden Punkte durchführen.

  • Nach jedem Build mit einem reduzierten Satz von Leistungs-Rauchtests.
  • Einmal am Tag mit einem umfassenderen Satz von Leistungstests.
  • Einmal am Wochenende oder basierend auf der Verfügbarkeit der Infrastruktur mit einer Reihe von Langzeittests für Dauertests oder Lasttests mit hohem Volumen für Stresstests.

Dies allein reicht jedoch nicht aus.

Die manuelle Analyse von Lasttestberichten kann zeitaufwändig sein und erfordert möglicherweise spezielle Fähigkeiten, über die nicht jeder Entwickler verfügt. Ohne die Möglichkeit, die Analyse von Lasttestberichten zu automatisieren, wird die Überprüfung der Ergebnisse von Leistungstests zu einem mühsamen Zeitfresser. Wichtige Leistungsinformationen können ebenfalls übersehen werden. In solchen Szenarien führen Sie möglicherweise kontinuierlich Leistungstests durch, deren Nutzen ist jedoch begrenzt.

Automatisieren Sie die Erfassung und Analyse von Leistungstestergebnissen

Zu Profitieren Sie von kontinuierlichen Leistungstests, müssen Sie einen wirksamen Mechanismus zur Analyse der Leistungstestergebnisse einrichten. Parasoft-Lasttest und sein LoadTest Continuum, ein Modul von Parasoft SOAtest, stellen Ihnen Tools zur Verfügung, die Ihnen dabei helfen, die Erfassung und Analyse von Leistungstestergebnissen zu automatisieren und Ihnen Einblicke in die Leistung Ihrer Anwendung zu geben.

So richten Sie Ihre Umgebung für die Ausführung kontinuierlicher Leistungstests ein

Die folgenden Schritte helfen Ihnen dabei, Ihre Umgebung für die kontinuierliche Einrichtung einzurichten Leistungstestausführung mit Parasoft LoadTest und LoadTest Continuum:

  1. Überprüfen und konfigurieren Sie die QoS-Metriken des LoadTest-Projekts für die Automatisierung.
  2. Bereitstellen und Konfigurieren von LoadTest Continuum für die Erfassung von Lasttestberichten.
  3. Konfigurieren Sie LoadTest-Projekte zur Ausführung in Stapeln.
  4. Beginnen Sie mit der Ausführung von LoadTest-Projektstapeln als Teil der kontinuierlichen Integration und verwenden Sie LoadTest Continuum, um die Ergebnisse von Leistungstests regelmäßig zu überprüfen und zu analysieren.

Gehen wir diese Schritte im Folgenden einzeln genauer durch.

Schritt 1 - Überprüfen und Konfigurieren von QoS-Metriken für die Automatisierung

Qoft-Metriken (Parasoft LoadTest Quality of Service) sind eines der Hauptmerkmale für die Automatisierung der Analyse von Leistungstestergebnissen. QoS-Metriken reduzieren große Datenmengen in einem Auslastungstestbericht auf eine Reihe von Erfolgs- / Fehlerantworten zur Leistung Ihrer Anwendung. Parasoft LoadTest bietet eine Vielzahl von QoS-Metriken, die von gebrauchsfertigen Schwellenwertmetriken bis zu benutzerdefinierten Metriken reichen, mit denen Sie die LoadTest-API für die erweiterte Analyse von Lasttestdaten verwenden können.

Um Ihre Leistungstests für die Automatisierung vorzubereiten, müssen Sie die QoS-Metriken in Ihren LoadTest-Projekten überprüfen. Führen Sie ein LoadTest-Projekt aus und untersuchen Sie den Bericht: Alle Erfolgs- und Fehlerkriterien, anhand derer Sie einen Lasttestbericht manuell analysieren, sollten als QoS-Metriken dargestellt werden. Konvertieren Sie so viele Metriken wie möglich in "numerische" Metriken. Eine numerische QoS-Metrik gibt nicht nur ein Erfolgs- / Fehlerergebnis zurück, sondern quantifiziert auch einen wichtigen Leistungsindikator für diese Metrik. Beispielsweise würde eine Metrik, die einen CPU-Auslastungsschwellenwert validiert, auch den tatsächlichen CPU-Auslastungswert als numerische Metrik bereitstellen.

In LoadTest Continuum werden häufig numerische Metriken verwendet, um die Metrikleistung über die Zeit darzustellen:

Diagramm mit numerischen Metrikergebnissen, dargestellt in einem LoadTest Continuum-Bericht. Die X-Achse zeigt das Datum Juni bis April. Die Y-Achse zeigt den CPU-Prozentsatz in 10er-Intervallen, beginnend mit 0 unten und 100 oben.
Numerische Metrikergebnisse, die in einem LoadTest Continuum-Bericht aufgezeichnet sind.

Sobald Sie die QoS-Metriken für Ihr Gerät konfiguriert haben LoadTest-Projekte, ist es an der Zeit, das LoadTest Continuum für die Erfassung und Analyse von Leistungsdaten einzurichten.

Schritt 2 - Bereitstellen und Konfigurieren von LoadTest Continuum

Bereitstellen und Konfigurieren des Webanwendungsarchivs LoadTest Continuum ltc.war (verfügbar im Installationsverzeichnis SOAtest / LoadTest ab Version 9.10.2), wie im Abschnitt „LoadTest Continuum“ der LoadTest-Dokumentation beschrieben.

Schritt 3 – Konfigurieren Sie LoadTest-Projekte in Batches für die Ausführung

Kombinieren Sie Ihre LoadTest-Projekte zu CMD-Skripten für die Stapelausführung. Mit LoadTest .cmd-Skripten können Sie Gruppen von Projekten angeben, aus denen verschiedene Sätze von Leistungstests bestehen, z. B. die zuvor erwähnten „Rauch“ -Tests, täglichen Tests oder Wochenendtests.

Konfigurieren Sie die .cmd-Skripte so, dass Berichtsdaten an LoadTest Continuum gesendet werden, wie im Abschnitt „Senden von Berichten an LoadTest Continuum“ in der LoadTest-Dokumentation beschrieben. Richten Sie Ihr Tool für die kontinuierliche Integration so ein, dass LoadTest .cmd-Skripte als Teil eines Erstellungsprozesses oder in regelmäßigen Abständen ausgeführt werden. In Jenkins können Sie beispielsweise ein LoadTest .cmd-Skript mit dem folgenden Schritt zum Erstellen eines Windows-Batch-Befehls ausführen:

% SOATEST_HOME% \ lt.exe ”-J-Xmx4096M -cmd -run“% WORKSPACE% \ ltcontinuum.cmd

Schritt 4 – Richten Sie ein Dashboard in Parasoft DTP ein

Parasoft DTP enthält Berichts- und Analyse-Dashboards, mit denen Sie dies tun können Überwachen Sie den Zustand und den Fortschritt Ihres Softwareprojekts mit einer Vielzahl von Widgets und Berichten.

Ein Parasoft LoadTest-Kontinuum DTP-Widget ermöglicht es Ihnen, die aktuellste Zusammenfassung der LoadTest-Ergebnisse zu Ihrem DTP-Projekt-Dashboard hinzuzufügen und bietet eine schnelle Möglichkeit, den Status der Leistungstestergebnisse in Ihrer täglichen Routine zur Überprüfung des Projektstatus zu bewerten.

Das Widget zeigt die Anzahl der insgesamt durchgeführten und fehlgeschlagenen Tests und Metriken für die letzten LoadTest-Läufe an. Um die Ergebnisse detaillierter anzuzeigen, klicken Sie im Widget auf den Projektlink. Die Seite LoadTest Continuum wird in einer neuen Registerkarte geöffnet.

Screenshot des LTC-Dashboards mit den Ergebnissen der Build-Auslastung und des täglichen Auslastungstests.
LoadTest Continuum-Widgets in einem DTP-Dashboard.

Gehen Sie einfach folgendermaßen vor, um ein benutzerdefiniertes LoadTest Continuum-HTML-Widget in DTP einzurichten:

  1. Erstellen Sie im Parasoft DTP Report Center ein neues Dashboard oder öffnen Sie ein vorhandenes.
  2. Klicken Sie auf Widget hinzufügen. Wählen Sie im Dialogfeld "Widget hinzufügen" die Option "Benutzerdefiniert" -> "Benutzerdefiniertes HTML-Widget".
  3. Kopieren Sie den Inhalt der folgenden Datei aus der LoadTest Continuum-Installation in den HTML-Textbereich des Dialogfelds:% TOMCAT_HOME% \ webapps \ ltc \ dtp \ ltc_dtp_widget.html
  4. Ändern Sie den HTML-Code mit Ihren benutzerdefinierten Einstellungen:
    1. Suchen Sie die Funktion getServerURL (). Ändern Sie den Rückgabewert mit dem Host und dem Port Ihrer LoadTest Continuum-Installation.
    2. Suchen Sie die Funktion getProjectName (). Ändern Sie den Rückgabewert mit dem Namen des Projekts, das Sie im Widget verfolgen möchten.
  5. Klicken Sie auf Erstellen.

Schritt 5 – Überprüfen und analysieren Sie die Ergebnisse der Leistungstests

Parasoft LoadTest Continuum dient sowohl als Erfassungspunkt für Ihre LoadTest-Berichte als auch als Analysetool, das Lasttestdaten aus mehreren Läufen organisiert. LoadTest Continuum organisiert die Daten in einer Informationspyramide, mit der Sie Ihre Leistungstestergebnisse auf verschiedenen Detailebenen überprüfen können, von allgemeinen täglichen Zusammenfassungen oben über QoS-Metrikergebnisse im Kern bis hin zu detaillierten Lasttestberichten oben Unterseite:

Screenshot des Berichts-Dashboards mit Analysen für API-Leistungstests.
Die tägliche Zusammenfassung und Testmetrikansicht von LoadTest Continuum.

Betrachten Sie den folgenden Workflow als Beispiel für eine regelmäßige (tägliche) Testüberprüfung:

  1. Führen Sie bei fehlgeschlagenen Tests die folgenden Schritte aus:
    1. Öffnen Sie die Ansicht "Testverlauf" und überprüfen Sie, ob der Test regelmäßig oder sporadisch fehlgeschlagen ist. Der erste Fall würde wahrscheinlich auf eine Regression hinweisen; der zweite Fall eine Instabilität.
    2. Überprüfen Sie die fehlgeschlagenen Metriken des Tests:
      1. Öffnen Sie für eine numerische Metrik die Diagrammansicht des Metrikverlaufs. Verwenden Sie das Metrikverlaufsdiagramm für Einblicke. Wenn beispielsweise ein Test, zu dem die Metrik gehört, instabil ist, weisen kleine Schwankungen des Metrikgraphen normalerweise darauf hin, dass der Metrikschwellenwert angepasst werden muss. Große Schwankungen weisen auf Probleme mit Code oder Infrastruktur hin.
      2. Öffnen Sie den Link Alle Diagramme dieses Tests. Überprüfen Sie die Diagramme anderer numerischer Metriken für denselben Test auf Schwankungen, die den Metrikschwellenwert nicht überschritten haben.
  2. Wenn Sie die LoadTest Continuum DTP-Widgets nicht eingerichtet haben, überprüfen Sie zunächst die Erfolgs- / Fehlerzusammenfassungen der Tests und Metriken auf der Hauptprojektseite des LTC.
  3. Folgen Sie bei Projekten mit Fehlern dem Link zur LTC-Projektseite, um die Details zu überprüfen.
  4. Beginnen Sie mit der Überprüfung des Status Ihrer letzten Auslastungstestläufe in den LoadTest Continuum DTP-Widgets.
  5. Machen Sie dasselbe für den Link Alle Diagramme dieser Metrik, um zu überprüfen, ob ähnliche Metriken anderer Tests betroffen waren. Wenn ja, weist dies auf ein Systemproblem mit Ihrer Anwendung oder Infrastruktur hin, das nicht auf einen einzelnen Test beschränkt ist (siehe Abb. 4).
  6. Für eine eingehendere Analyse öffnen Sie die HTML- oder binären Lasttestberichte des fehlgeschlagenen Tests.
Screenshot von LoadTest Continuum mit Diagrammen zum Testen der Rest-API-Leistung ausgewählter Dashboards und Abfrageoptimierung.
Load Test Continuum Alle Diagramme derselben Metrikansicht zeigen die Leistungsverbesserung der CPU% -Metrik über mehrere Tests hinweg.

Die Integration eines Leistungstestprozesses in die Pipeline für die kontinuierliche Bereitstellung ist für die Sicherstellung der Softwarequalität von entscheidender Bedeutung. Um diesen Prozess optimal nutzen zu können, müssen Sie einen effektiven Mechanismus für die Automatisierung der Analyse von Leistungstestergebnissen einrichten.

Seien Sie kontinuierlich mit Parasoft

Erreichen Sie alle Ihre hochgesteckten Automatisierungsziele für die Testergebnisanalyse mit Parasoft LoadTest und LoadTest Continuum innerhalb von Parasoft SOAtest. Diese Tools bieten eine ausgefeilte Automatisierung bei Funktionstests, sodass Sie qualitativ hochwertigere Software liefern können.

Best Practices-Leitfaden für Leistungstests