Empfohlenes Webinar: MISRA C++ 2023: Alles, was Sie wissen müssen | Zum Video

So optimieren Sie Leistungstests mit einem Shift-Left-Ansatz

Parasoft-Würfel-Logo 300x300
14. Dezember 2023
5 min lesen

Leistungstests in den frühen Phasen des Entwicklungszyklus (Shift-Left-Ansatz) führen zu Produkten, die eine bessere Leistung und einen höheren ROI bieten. Erfahren Sie, wie Sie Leistungstests mit einem Shift-Left-Ansatz optimieren können.

Jeder Sprint ist entscheidend und die Entscheidungen, die für die Zukunft getroffen werden, werden blitzschnell getroffen. Um den schnellen Feedbackprozess zu erleichtern, müssen Testteams ihre Anwendungen in sehr kurzer Zeit gründlich und durchgängig validieren. Um diesen Aufwand zu maximieren, können Testteams ihren Testansatz modernisieren, um bereits in den frühestmöglichen Phasen des Softwaretests den bestmöglichen Return on Investment zu erzielen.

Was ist ein Leistungstest nach links?

Wenn Sie die Leistungstests nach links verschieben, können Entwickler und Tester Leistungstests in den frühen Phasen der Entwicklungszyklen durchführen. Traditionell sind Leistungstests eine Aufgabe, die am Ende der Entwicklungszyklen ausgeführt wird, da sie eine Reihe spezialisierter Tools und Fähigkeiten erfordern, dh teure Hardware in dedizierten Umgebungen durch geschulte Leistungstestingenieure. Eine Strategie für Leistungstests nach links kann stattdessen ermöglichen, dass Tester kleinere Ad-hoc-Leistungstests für einzelne Komponenten durchführen, während diese entwickelt werden.

Um dies zu erreichen, müssen Teams mit der Erstellung von Leistungstests zusammen mit Einheiten- und Funktionstests beginnen, wenn die Funktionalität implementiert ist, und diese Leistungstests so konfigurieren, dass sie automatisch ausgeführt werden und auf eine Weise Bericht erstatten, die Sie auf Leistungseinbußen hinweist. Um die Tests automatisch auszuführen, muss die Ausführung von Leistungstests als Teil des CI / CD-Prozesses eng integriert sein, bei dem nach jedem Einchecken des Codes Leistungstests in lokalen Umgebungen zusammen mit Funktions- und Komponententests ausgeführt werden.

Dieser Prozess ermöglicht es Unternehmen, die subtilen Auswirkungen neuer Komponenten zu verstehen, die zur Gesamtleistung ihrer Anwendung hinzugefügt werden, und ermöglicht letztendlich die Entdeckung leistungsbezogener Fehler viel früher im Bereitstellungslebenszyklus. Aus Sicht der Unternehmenskultur bedeutet eine Verlagerung der Leistungstests nach links auch, dass die Entwickler stärker einbezogen werden. In den meisten Fällen können Entwicklungsteams innerhalb eines Tages nach Feststellung einer Leistungsverschlechterung Optimierungsverbesserungen vornehmen, anstatt zu warten, bis die gesamte Anwendung erstellt ist.

Was muss die Organisation tun, um eine Leistung nach links zu ermöglichen?

  1. In erster Linie benötigen Sie ein gut etabliertes organisatorisches Buy-In. Die Berücksichtigung von Qualität als Prozess und nicht als Reaktion ist wichtig, um Leistungstests im gesamten Unternehmen zu verschieben. Die Hauptakteure in diesem Prozess sind die Produktmanager, da Leistungstests und die damit verbundene Entwicklungszeit mit Implementierungskosten verbunden sind, die den Entwicklungszyklus verlangsamen können. PM-Teams müssen verstehen, warum dieser Prozess stattfindet, und verstehen, dass der Wert in reduzierten Hotfixes und Leistungsoptimierungen liegt.
  2. Definieren Sie als Nächstes SLAs auf Komponentenebene zusätzlich zu Die Anwendungsebene ermöglicht Feedback in einem früheren Stadium und hilft Entwicklern, die Auswirkungen von Codeänderungen auf die einzelnen Komponenten, die sie entwickeln, zu verstehen. Diese detaillierten Leistungstests erleichtern es den Stakeholdern, herauszufinden, wo Hotspots auftreten.
  3. Es ist wichtig, möglichst viel Ihrer Testpraxis von UI-zentrierten Tests in automatisierte Tests wie API- und Datenbanktests zu migrieren. Diese Arten von Testverfahren sind nicht nur wartbarer und skalierbarer, sondern können auch sofort bei Leistungstests eingesetzt werden, können die Hauptursache für Leistungsprobleme ermitteln und sind äußerst widerstandsfähig gegen Änderungen.
  4. Schließlich müssen Unternehmen Leistungstests in den Build-Prozess integrieren, sodass grundlegende Rauchtest-Leistungstests beim Code-Check-in ausgeführt werden und jede Nacht ein vollständiger Satz Leistungstests ausgeführt wird. Dazu müssen Sie die Hardware berücksichtigen. Automatisierte Leistungstests erfordern tatsächlich mehr Rechenressourcen als Funktionstests, daher müssen Entwicklungsteams darauf vorbereitet sein. Überprüfung, ob die bestehende Leistungsinfrastruktur dazu passt Shift-Links-Ansatz oder Änderungen erfordern (z. B. Cloud-Agenten), wären ebenfalls eine der wichtigsten Überlegungen beim Übergang zur Automatisierung von Leistungstests.

Entwickler- und Testrollen bei der Leistung nach links

Entwickler besitzen die Leistung ihrer Anwendungen. Entwickler müssen mithilfe von Microservices, REST / SOAP-APIs und modularen Entwurfsarchitekturen Anwendungen erstellen, die für Leistungstests bereit sind, sodass einzelne Teile während der Entwicklung einem Lasttest unterzogen werden können.

Tester können ihre Testfälle an wichtigen Workflows in der Anwendung ausrichten, damit sie im Leistungstestprozess eingesetzt werden können. Wenn Sie sich auf die API-Ebenen der Anwendung konzentrieren, ist diese widerstandsfähiger gegenüber Änderungen und verwaltbar. Beide Teams verwenden Berichte, die außerhalb der SLAs für die Anwendung liegen, um Problembereiche basierend auf dem kürzlich durchgeführten Code-Check-in zu identifizieren und zu ermitteln, welche Komponenten optimiert werden müssen.

Wie integrieren Sie Tools, um die Leistung nach links zu verschieben?

Die Auswahl der richtigen Tools für einen Leistungstestprozess nach links ist wichtig, aber nicht so wichtig wie die gemeinsame Verwendung in automatisierten Workflows. Leistungstests im Frühstadium finden häufig in Taschen statt, in denen einzelne versierte Tester und Entwickler Techniken unter Verwendung einer Vielzahl von Open Source- und im Handel erhältlichen Tools entwickeln. Dies wird jedoch letztendlich übersehen, da sie nicht als Teil des gesamten automatisierten Prozesses integriert sind.

Stattdessen sollten Tester spezielle kommerzielle Tools verwenden, mit denen sie Leistungstests auf automatisierte Weise erstellen können. Entwickler können ähnliche Tools verwenden, um ihre Bemühungen zu optimieren oder Skripts auf niedriger Ebene zu erstellen, um die Automatisierung und das Laden voranzutreiben. Welche Tools benötigen Sie?

Die folgenden Tools vereinfachen die Wartung, können zentral verwaltet werden und bieten eine benutzerfreundliche Benutzeroberfläche zum Erfassen der Ergebnisse.

Funktionstesttool

Funktionstests sollten bereits Teil Ihrer kontinuierlichen Teststrategie sein. Das Tool, das Sie für die Funktionstestautomatisierung auswählen, sollte sich sowohl auf die API-Ebene der Anwendung konzentrieren, um die Ausführung und Wartung des Testfalls zu vereinfachen, als auch auf die UI-Ebene für End-to-End- und Benutzererfahrungstests. Funktionstesttools werden verwendet, um grundlegende (Wiederverwendungs-)Ausführungspfade zu erstellen, sei es auf UI-Ebene oder auf API-Ebene. Diese Ausführungspfade stimmen mit User Storys überein, sodass eine Korrelation zwischen dem Ergebnis des Leistungstests und der betroffenen User Story besteht.

Leistungstesttool

Konkret benötigen Sie eine Leistungstest-Tool Dies kann die Funktionstestartefakte verbrauchen und unter Last ausführen. Diese Tools sollten über eine Vielzahl von Lastkontrollparametern verfügen, wie z. B. die Anzahl der virtuellen Benutzer oder Transaktionen im Zeitverlauf. Diese Tools sollten dann in einem zentralen Dashboard Berichte zur Aggregation der Ergebnisse bereitstellen.

Service-Virtualisierungstool

Tools zur Servicevirtualisierung Behandeln Sie die fehlenden Komponenten monolithischer Anwendungen in den frühen Phasen von Shift-Left-Leistungstests. Eine der größten Herausforderungen bei Leistungstests im Frühstadium ist der Mangel an unterstützender Infrastruktur durch parallele Entwicklungsbemühungen oder Komponenten von Drittanbietern. Indem Sie die Basislinie dieser abhängigen Systeme festlegen und sie in virtuellen Diensten modellieren, können Sie ähnliche Basisbedingungen für Anwendungen wie in der Produktion schaffen und sich während Ihres Tests gezielt auf die Leistung einzelner Komponenten konzentrieren.

Kontinuierliches Integrationstool

Leistungstests nach links verschieben funktionieren am besten, wenn es sich um einen automatisierten Prozess handelt. Wenn Automatisierung bereitgestellt wird, bedeutet „Leistungstest“ einfach die Überprüfung / Wartung der automatisierten Leistungstests, wodurch die Zeit für die Ausführung von Tests auf lange Sicht verkürzt wird, da der Prozess automatisiert und nicht manuell ist.

Durch die Abstimmung Ihrer Leistungsteststrategie mit Ihrer kontinuierlichen Teststrategie und die Integration mit Tools wie Jenkins, Bamboo, Microsoft VSTS usw. können Sie einen vollständig automatisierten Prozess erstellen. Ihre CI-Tools sollten es Ihnen ermöglichen, die Leistungstests als Funktion des Code-Check-ins auszuführen, sodass konsistente Leistungstests jede Nacht ausgeführt werden können.

Darüber hinaus sollte Ihr CI-Tool in Ihr Berichts- und Analyse-Dashboard integriert sein und die Ergebnisse automatisch veröffentlichen, damit Sie die Trenddaten schnell verstehen können.

Zentralisiertes Dashboard zur Aggregation von Ergebnissen

Apropos Ihr Berichts- und Analyse-DashboardEin zentralisiertes Dashboard ist wichtig, da es Benutzern ermöglicht, die inkrementellen Auswirkungen von Komponentenleistungstests zu verstehen, indem Trendinformationen nach Projekt, Komponente, API usw. angezeigt werden.

Ihr zentrales Dashboard sollte die Möglichkeit bieten, Leistungstests zu automatisieren, SLAs zu definieren, die die Leistungstests in Bestanden / Nicht Bestanden-Indikatoren umwandeln, und historische Trends anzuzeigen. Darüber hinaus sollte das Berichts-Dashboard Details enthalten, die Leistungstests mit ihren ursprünglichen Anforderungen verknüpfen, damit das Unternehmen auftretende Probleme sowie die übergeordnete Pass / Fail-Ansicht und gleichzeitig jedes kleine Detail richtig priorisieren kann kann die Ursachen von Fehlern ermitteln, nachdem sie erkannt wurden.

Der Shift-Left-Ansatz fügt neben Managern und Testern auch Entwickler als Dashboard-Benutzer hinzu. Daher muss das Dashboard die Details auf niedriger Ebene enthalten, nach denen die Entwickler suchen, um die Ursachen für SLA-Fehler oder historische Trends effektiv untersuchen und ermitteln zu können.

Zusammenfassung

Verbraucher sind mit ständigen Hot Patches und Updates zur Leistungsoptimierung ausgebrannt. Sie hungern nach neuen Features und Funktionen. Da Leistungstests traditionell am Ende des Zyklus durchgeführt werden, wirkt sich dies unweigerlich auf die Lieferfristen aus und wird daher durch eine negative Linse betrachtet. Indem Sie den Leistungstestprozess zusammenfassen und agilen Teams die Möglichkeit geben, dies zu tun Test nach links verschieben Durch einen iterativen Ansatz können Probleme frühzeitig erkannt werden. Dies stellt nicht nur sicher, dass getroffene Technologieentscheidungen leicht auf Leistungseinbußen überprüft werden können, sondern sorgt letztendlich auch für ein insgesamt leistungsfähigeres Produkt, indem jeder Bereich optimiert und der Schwerpunkt auf der Leistung liegt.

Best Practices-Leitfaden für Leistungstests