So optimieren Sie Leistungstests mit einem Shift-Left-Ansatz
Von Chris Colosimo
5. Oktober 2018
6 min lesen
Erfahren Sie, wie Sie Leistungstests in Ihrem Unternehmen nach links verschieben.
Jeder Sprint ist kritisch und die Entscheidungen, die in Zukunft getroffen werden, sind blitzschnell. Um den schnellen Feedback-Prozess zu vereinfachen, müssen Testteams ihre Anwendungen in sehr kurzer Zeit durchgängig gründlich validieren. Um diesen Aufwand zu maximieren, können Testteams ihren Testansatz modernisieren, um 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, damit die Leistung nach links verschoben wird?
- 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.
- 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.
- 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.
- Schließlich müssen Unternehmen Leistungstests in den Erstellungsprozess integrieren, damit beim Testen des Codes grundlegende Leistungstests für Rauchtests ausgeführt werden und jede Nacht ein vollständiger Satz von Leistungstests ausgeführt wird. Dazu müssen Sie die Hardware berücksichtigen. Automatisierte Leistungstests erfordern mehr Rechenressourcen als Funktionstests. Daher müssen Entwicklungsteams darauf vorbereitet sein. Die Überprüfung, ob die vorhandene Leistungsinfrastruktur dem Shift-Left-Ansatz entspricht oder geändert werden muss (dh Cloud-Agenten), wäre auch 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.
-
Funktionstestwerkzeug
Funktionstests sollten bereits Teil Ihrer kontinuierlichen Teststrategie sein. Das Tool, das Sie für die Automatisierung von Funktionstests auswählen, sollte sich sowohl auf die API-Ebene der Anwendung (um die Ausführung und Wartung von Testfällen zu vereinfachen) als auch auf die UI-Ebene (für End-to-End- und User Experience-Tests) konzentrieren. Funktionstest-Tools werden verwendet, um Basisausführungspfade (Wiederverwendung) zu erstellen, egal ob auf UI-Ebene oder auf API-Ebene. Diese Ausführungspfade stimmen mit User Stories überein, sodass eine Korrelation zwischen dem Ergebnis des Leistungstests und der betroffenen User Story besteht.
-
Leistungstest-Tool
Insbesondere benötigen Sie ein Leistungstest-Tool, mit dem die Artefakte für Funktionstests verwendet und unter Last ausgeführt werden können. Diese Tools sollten eine Vielzahl von Laststeuerungsparametern aufweisen, z. B. die Anzahl der virtuellen Benutzer oder Transaktionen im Zeitverlauf. Diese Tools sollten dann in einem zentralen Dashboard Bericht erstatten, um die Ergebnisse zu aggregieren.
-
Service-Virtualisierungstool
Service-Virtualisierungstools beheben die fehlenden Komponenten monolithischer Anwendungen in den frühen Phasen des Leistungstests nach links. Eine der Hauptherausforderungen, denen Sie bei Leistungstests in einem frühen Stadium gegenüberstehen, ist das Fehlen einer unterstützenden 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 die Anwendung wie in der Produktion erstellen und sich während Ihres Tests 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.
Indem Sie Ihre Leistungsteststrategie an Ihrer kontinuierlichen Teststrategie ausrichten und in Tools wie Jenkins, Bamboo, Microsoft VSTS usw. integrieren, können Sie einen vollautomatisierten Prozess erstellen. Ihr CI-Tool sollte es Ihnen ermöglichen, die Leistungstests als Funktion des Code-Check-Ins auszuführen, damit 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.
-
Zentrales Dashboard zum Aggregieren von Ergebnissen
Apropos Berichts- und Analyse-Dashboard… Ein zentrales Dashboard ist wichtig, da Benutzer die inkrementellen Auswirkungen von Komponentenleistungstests verstehen können, indem sie Trendinformationen nach Projekt, Komponente, API usw. anzeigen.
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.
Beim Shift-Left-Ansatz werden Entwickler als Dashboard-Benutzer hinzugefügt (zusätzlich zu Managern und Testern). Daher muss das Dashboard über die Details auf niedriger Ebene verfügen, nach denen die Entwickler suchen, um die Ursachen für SLA-Fehler oder historische Trends effektiv zu untersuchen und zu ermitteln.
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 Mit einem iterativen Ansatz können Probleme frühzeitig erkannt werden. Dies stellt nicht nur sicher, dass getroffene Technologieentscheidungen leicht auf Leistungseinbußen hin beurteilt werden können, sondern bietet letztendlich insgesamt ein leistungsfähigeres Produkt, indem jeder einzelne Bereich optimiert und der Laser auf Leistung ausgerichtet wird.