Gehen Sie einen schnelleren, intelligenteren Weg zur KI-gestützten C/C++-Testautomatisierung. Erfahren Sie mehr >>
Bewältigen Sie die Herausforderungen des Leistungstests
Leistungstests sagen Ihnen, wie sich Ihre Anwendung verhält, wenn sie der realen Welt ausgesetzt ist und einem Strom von Anfragen von Benutzern ausgesetzt ist. Holen Sie sich Leistungstestmethoden und -strategien, um Ihre Anwendung effizient und zuverlässig auf die Produktionslasten vorzubereiten und ihren Erfolg sicherzustellen.
Leistungstests sagen Ihnen, wie sich Ihre Anwendung verhält, wenn sie der realen Welt ausgesetzt ist und einem Strom von Anfragen von Benutzern ausgesetzt ist. Holen Sie sich Leistungstestmethoden und -strategien, um Ihre Anwendung effizient und zuverlässig auf die Produktionslasten vorzubereiten und ihren Erfolg sicherzustellen.
Softwareentwicklungsorganisationen stehen unter Druck bieten eine hervorragende Benutzererfahrung bei gleichzeitigem Ausgleich von Entwicklungs- und Wartungskosten. Für eine Server-Softwareanwendung wie eine Webanwendung oder eine API sind konsistent schnelle und zuverlässige Antworten ebenso wichtig wie die funktionale Korrektheit, um die Benutzerzufriedenheit und den Anwendungserfolg sicherzustellen.
Leistungstest ist der Bereich der Software-Qualitätssicherung, der sich auf die Reaktionsfähigkeit und Zuverlässigkeit einer Anwendung konzentriert, wenn sie einem Strom von Anfragen von mehreren Benutzern ausgesetzt ist. Es bewertet, wie sich eine Anwendung verhält unter erwarteten Serviceanforderungslasten und analysiert die Ergebnisse, sodass Engpässe und andere Ineffizienzen, die einen reibungslosen Betrieb unter Last verhindern, identifiziert und behoben werden können.
Allerdings reichen selbst die besten Tools nicht aus, wenn sie nicht im Kontext der richtigen Performance-Testing-Strategie und -Praxis eingesetzt werden. Nur die Kombination aus beidem sichert den Erfolg.
Leistungstests beruhen traditionell auf einer nahezu funktionsfähigen Anwendung, die in einer Produktions- oder Vorproduktionsumgebung ausgeführt wird. Implizit ist dies spät im Entwicklungslebenszyklus, um wichtige Probleme herauszufinden. Probleme, die so spät entdeckt werden, wirken sich stark auf Kosten und Zeitplan aus.
Darüber hinaus begrenzt der Zeit- und Arbeitsaufwand, der erforderlich ist, um den vollständigen Zyklus der manuellen Leistungstests abzuschließen, die Häufigkeit, mit der dies durchgeführt werden kann, wodurch entweder die Häufigkeit der Freigabezyklen begrenzt wird oder Unternehmen mit teilweisen oder keinen Leistungstests Freigaben erhalten.
Die Suche nach Lösungen, die die durch die oben beschriebenen Probleme verursachten Unsicherheiten und Risiken verringern würden, veranlasste Unternehmen, Leistungstests auf Agile- und Shift-Left-Strategien anzuwenden, die bereits verwendet werden und sich in anderen Bereichen des Softwaretestens als effektiv erwiesen haben.
Shift-Left-Performance-Tests besagt, dass die Probleme des traditionellen Ansatzes darauf zurückzuführen sind, dass zu spät und zu selten getestet wird. Daher müssen Sie früh und oft testen.
Das klingt in der Theorie gut, aber wie setzt man es in der Praxis um?
Damit die Shift-Left-Testversprechungen eintreten, müssen Sie die folgenden Probleme lösen:
Die Anforderung, früh zu beginnen, bedeutet, dass Leistungstests zusammen mit Einheiten- und Funktionstests erstellt werden sollten, was lange dauern kann, bis die endgültige Anwendung Gestalt annimmt. Mit diesen beiden Hauptmethoden können Sie mit dem Leistungstest einer Serveranwendung beginnen, bevor sie voll funktionsfähig ist.
Die Dienstvirtualisierung ermöglicht das frühzeitige Testen von Anwendungen, indem das Verhalten ihrer externen Abhängigkeiten – wie APIs, Datenbanken, Messagingsysteme und mehr – emuliert wird, die in den Anfangsphasen der Entwicklung aus einem der folgenden Gründe möglicherweise nicht verfügbar sind:
Ein Dienstvirtualisierungstool sollte es Ihnen ermöglichen, die Reaktionen externer Abhängigkeiten und deren Leistungsparameter nachzuahmen, z. B. Reaktionsverzögerungen, die sich auf realistische Weise auf die Leistung der AUT auswirken.
Leistungstests auf Einheitenebene ermöglichen es Ihnen, Drittanbieter- und interne Komponenten zu evaluieren, die Sie in Ihre Anwendung integrieren möchten. Sie können beispielsweise die Leistung alternativer JSON-Parserbibliotheken für die Anforderungsgrößen und Laststufen bewerten, die Sie von Ihrer Zielanwendung erwarten. Auf diese Weise können Sie die beste Alternative auswählen und realistische Leistungserwartungen für Ihre Anwendung basierend auf der Leistung der verwendeten Komponenten festlegen.
Die Anforderung, häufig zu testen, kann darauf hindeuten, dass Leistungstests so oft wie Einheiten- oder Funktionstests in einem Build-Prozess für kontinuierliche Integration (CI) ausgeführt werden sollten, der durch Einchecken von Quellcode ausgelöst wird.
Während Leistungstests ein integraler Bestandteil der kontinuierlichen Anwendungsbereitstellung sein müssen, ist die Anwendung derselben Testhäufigkeitslogik, die für Komponenten- oder Funktionstests funktioniert, möglicherweise nicht praktikabel, da die Ausführung der vollständigen Suite von Leistungstests normalerweise erheblich mehr Zeit und Rechenressourcen erfordert.
Um dieses Problem zu lösen, sollte die Application Performance Test Suite aus verschiedenen Leistungstesttypen bestehen, deren Ausführungshäufigkeit umgekehrt proportional zu der Zeit und den Ressourcen ist, die für die Ausführung dieser Tests erforderlich sind. Mit einem solchen Ansatz können im Rahmen des CI-Build-Prozesses relativ kurze Smoke- oder Baseline-Performance-Tests durchgeführt werden, während umfassendere Tests regelmäßig, aber seltener durchgeführt werden.
| Testfrequenz | Testtyp |
|---|---|
| Jeder CI-Build | Rauch-/Baseline-Test, Unit-Performance-Tests |
| Täglich/nachts | Durchschnittlicher Belastungstest |
| Einmal pro Woche | Belastungstest, Belastungstest |
Die automatisierte Ausführung von Performance-Tests allein ist ohne die automatisierte Auswertung der Testergebnisse wenig sinnvoll. Ein Performance-Test kann eine große Datenmenge generieren. Mit fortschreitender Anwendungsentwicklung nehmen sowohl die Anzahl der Performance-Tests als auch deren Komplexität und Dauer zu. Die kontinuierliche Ausführung dieser Tests erzeugt einen Datenstrom, der auf ein einfaches „bestanden/nicht bestanden“-Ergebnis reduziert werden muss. Dieses Ergebnis wird typischerweise durch Service-Level-Agreement-Prüfungen (SLA-Prüfungen) erzielt, die automatisch auf die Performance-Tests angewendet werden. Testdaten wurden nach Abschluss des Tests gesammelt.
Das Erstellen eines umfassenden Satzes stabiler SLA-Prüfungen für jeden Leistungstest ist der Schlüssel für eine erfolgreiche Automatisierung von Leistungstests.
| Key Performance Indicator (KPI) | SLA-Akzeptanzkriterien |
|---|---|
| Durchschnittliche Reaktionszeit | Sollte weniger als 1 Sekunde betragen |
| Fehlerrate | Sollte weniger als 0.01 % betragen |
Um den vollen Nutzen aus der kontinuierlichen Testausführung zu ziehen, sollten die Ergebnisse der Leistungstests automatisch in einem Berichts- und Analyse-Dashboard veröffentlicht werden, damit Sie Trenddaten schnell verstehen können. Der Shift-Left-Ansatz fügt zusätzlich zu Managern und Testern Entwickler als Dashboard-Benutzer hinzu. Das Dashboard muss also die Low-Level-Details enthalten, nach denen die Entwickler suchen, um die Ursachen für SLA-Fehler oder historische Trends effektiv zu untersuchen und festzustellen.
Die Testautomatisierung muss nicht in der Phase der Leistungstestausführung und Pass/Fail-Analyse enden. Die nächste Ebene ist automatisierte Ursachenanalyse von Leistungstests.
Die Vorteile von Shift-Left-Automatisierungstests gehen zu Lasten des Aufbaus der Testautomatisierungsinfrastruktur, der Erstellung oder Änderung von Tests und möglicherweise des Erwerbs und Erlernens neuer Tools und kultureller Veränderungen.
Auf diesem Weg müssen Sie sicherstellen, dass die von Ihnen verwendeten Leistungstest-Tools den neuen Prinzipien entsprechen, die Sie in die Praxis umsetzen. Nachfolgend finden Sie eine Liste der Leistungstest-Tool-Funktionen, mit denen Sie beim Einrichten und Verwalten automatisierter Tests Zeit sparen.
In der Praxis bedeutet dies, dass das Tool zwar eine grafische Benutzeroberfläche für gängige Leistungstests bietet, aber auch die Möglichkeit, seine Funktionalität durch Skripte in allen wichtigen Funktionsbereichen zu erweitern. Eine grafische Benutzeroberfläche für häufige Aufgaben sorgt für Produktivität und eine kurze Einarbeitungszeit, während die Erweiterbarkeit durch Skripte oder Programmierung sicherstellt, dass Ihre Anforderungen unabhängig von ihren spezifischen Anforderungen erfüllt werden können. automatisierte Tests Die Anforderungen sind so hoch, dass das Werkzeug die Mittel bereitstellen sollte, um diese zu erfüllen.
Teststabilität und Wartbarkeit tragen viel zur Senkung der Betriebskosten für Leistungstests bei. Obwohl dieses Thema einen separaten Artikel verdient, werden wir einen Bereich erwähnen, der oft übersehen wird, wenn man Performance-Tests von Webanwendungen aus einer traditionellen Perspektive betrachtet. Moderne Webanwendungen verwenden in großem Umfang API-Aufrufe, der Trend geht dahin, ausschließlich API-Aufrufe zu verwenden, um dynamische Inhalte von Servern abzurufen.
Diese wachsende Abhängigkeit von Webanwendungen von API-Aufrufen führt zu einem qualitativen Wandel moderne Leistungstests. Wenn der statische Inhalt einer Webanwendung von hochverfügbaren Content Delivery Networks (CDNs) bereitgestellt wird, entfällt der Großteil der Ladezeit der Webseite auf die API-Aufrufe. Die Leistung solcher Webanwendungen wird zu einer Funktion der Leistung der APIs, von denen sie abhängt, was den Ersatz der Benutzeroberfläche durch API-Leistungstests rechtfertigt.
Ein solcher Austausch bringt mehrere Vorteile mit sich.
Das Ersetzen von UI- durch API-Leistungstests für qualifizierende Webanwendungen kann erheblich zur Stabilität Ihrer Leistungstests beitragen und die Betriebskosten senken.
Moderne Leistungstests führen neue Prinzipien ein, die von der Testautomatisierung angetrieben werden. Die Ineffizienzen des traditionellen Testverfahrens werden verworfen, aber die Grundlagen bleiben bestehen. Und es ist wichtig, neue Praktiken zu überdenken und effizient anzuwenden.
DEMO MIT Q&A
Jetzt registrieren: 4. März
Webinar
Webinar