Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.
Erstellen Sie ein Testszenario
Die Erstellung eines Testszenarios umfasst vier Hauptschritte: Konfiguration der allgemeinen Einstellungen, Definition des Szenarios, Gestaltung von Verkehrsmustern und Überprüfung Ihrer Konfiguration.
Schritt 1: Allgemeine Einstellungen
Konfigurieren Sie die grundlegenden Parameter für Ihren Auslastungstest, einschließlich Testname, Beschreibung und allgemeinen Konfigurationsoptionen.
Identifizierung des Tests
-
Testname (erforderlich) — Ein beschreibender Name für Ihr Testszenario
-
Testbeschreibung (erforderlich) — Zusätzliche Informationen zum Testzweck und zur Konfiguration
-
Tags (optional) — Fügen Sie bis zu 5 Tags hinzu, um Ihre Testszenarien zu kategorisieren und zu organisieren
Optionen für die Planung
Konfigurieren Sie, wann der Test ausgeführt werden soll:
-
Jetzt ausführen — Führen Sie den Test sofort nach der Erstellung aus.
-
Einmal ausführen — Planen Sie den Test so, dass er an einem bestimmten Datum und zu einer bestimmten Uhrzeit ausgeführt wird.
-
Nach einem Zeitplan ausführen — Verwenden Sie die cron-basierte Planung, um Tests in regelmäßigen Abständen automatisch auszuführen. Sie können aus gängigen Mustern (stündlich, täglich, wöchentlich) auswählen oder einen benutzerdefinierten Cron-Ausdruck definieren. Einzelheiten zum akzeptierten Cron-Format, zu den unterstützten Mustern und Einschränkungen finden Sie in der Referenz zu Cron-Ausdrücken im Entwicklerhandbuch.
Arbeitsablauf planen
Wenn Sie einen Test planen, findet der folgende Arbeitsablauf statt:
-
Die Zeitplanparameter werden über Amazon API Gateway an die API der Lösung gesendet.
-
Die API übergibt die Parameter an eine Lambda-Funktion, die einen Amazon EventBridge Scheduler-Zeitplan erstellt, der so konfiguriert ist, dass er am angegebenen Datum ausgeführt wird.
-
Bei einmaligen Tests (Run Once) ruft der EventBridge Scheduler-Zeitplan die
api-servicesLambda-Funktion zum angegebenen Datum und zur angegebenen Uhrzeit auf, wodurch der Test ausgeführt wird. -
Bei wiederkehrenden Tests (Run on a Schedule) ruft der EventBridge Scheduler-Zeitplan die
api-servicesLambda-Funktion sofort und in der durch den Cron- oder Rate-Ausdruck definierten Schrittfolge bis zum Ablaufdatum auf.
Live-Daten
Wählen Sie das Kontrollkästchen Live-Daten einbeziehen aus, um während der Ausführung Ihres Tests Echtzeit-Metriken anzuzeigen. Wenn diese Option aktiviert ist, können Sie Folgendes überwachen:
-
Durchschnittliche Antwortzeit.
-
Anzahl virtueller Benutzer.
-
Die erfolgreiche Anfrage zählt.
-
Fehlgeschlagene Anfragen werden gezählt.
Die Live-Datenfunktion bietet Echtzeit-Diagramme mit Daten, die in Intervallen von einer Sekunde aggregiert werden. Weitere Informationen finden Sie unter Überwachung mit Live-Daten.
Schritt 2: Konfiguration des Szenarios
Definieren Sie das spezifische Testszenario und wählen Sie Ihr bevorzugtes Testframework aus.
Auswahl des Testtyps
Wählen Sie die Art des Belastungstests, den Sie durchführen möchten:
-
Einfacher HTTP-Endpunkt — Testen Sie einen einzelnen API-Endpunkt oder eine Webseite mit einfacher Konfiguration.
-
JMeter — Laden Sie JMeter-Testskripte hoch (.jmx-Dateien oder .zip-Archive).
-
k6 - Laden Sie k6-Testskripte hoch (.js-Dateien oder.zip-Archive).
-
Locust — Laden Sie Locust-Testskripte hoch (.py-Dateien oder .zip-Archive).
Anmerkung
Alle vier Testtypen basieren auf Komponenten von Drittanbietern. Die Lösung führt Tests über das Taurus-Testautomatisierungsframework durch, das je nach Testtyp JMeter, k6 oder Locust ausführt. Einfache HTTP-Endpunkttests werden in einen JMeter-Testplan konvertiert und vom mitgelieferten Apache JMeter ausgeführt. Bevor Sie einen Test erstellen, überprüfen Sie die Third-party Testframeworks auf Sicherheitsaspekte, Lizenzinformationen und Patching-Optionen.
Traffic Shape-Modus
Wählen Sie aus, welche Seite die vom Test generierte Last steuert. Der Modus, den Sie auswählen, ändert die Felder, die die Konsole in Schritt 3: Traffic Shape anzeigt.
-
Standard — Die Lösung steuert die Last. Sie legen die virtuellen Benutzer, die Anlaufzeit und die Wartedauer fest. Standard ist die Standardeinstellung und der einzige Modus, der einfache HTTP-Endpunkttests unterstützt.
-
Nativ — Ihr Skript steuert das Laden. Die Lösung führt Ihr Skript unter der eigenen Befehlszeile des Testframeworks aus und legt nur die Anzahl der Aufgaben pro Region und eine Sicherheitsdauer fest.
Native erfordert ein hochgeladenes Skript, sodass Sie es nicht auswählen können, wenn Sie den Testtyp Simple HTTP Endpoint wählen. Die vollständigen Definitionen und Anleitungen zur Auswahl des Modus finden Sie unter Traffic-Shape-Modi.
Konfiguration des HTTP-Endpunkts
Wenn „Simple HTTP Endpoint“ ausgewählt ist, generiert die Lösung einen JMeter-Testplan aus Ihrer Konfiguration und führt ihn mit der mitgelieferten Apache JMeter-Binärdatei aus. Konfigurieren Sie diese Einstellungen:
- HTTP-Endpunkt (erforderlich)
-
Geben Sie die vollständige URL des Endpunkts ein, den Sie testen möchten. Beispiel,
https://api.example.com/users. Stellen Sie sicher, dass der Endpunkt von der AWS-Infrastruktur aus zugänglich ist. - HTTP-Methode (erforderlich)
-
Wählen Sie die HTTP-Methode für Ihre Anfragen aus. Der Standardwert ist
GET. Zu den weiteren Optionen gehörenPOSTPUTDELETE,PATCH,HEAD, undOPTIONS. - Header anfordern (optional)
-
Fügen Sie Ihren Anfragen benutzerdefinierte HTTP-Header hinzu. Allgemeine Beispiele sind:
-
Content-Type: application/json -
Authorization: Bearer <token> -
User-Agent: LoadTest/1.0Wählen Sie Header hinzufügen, um mehrere Header einzuschließen.
-
- Nutzlast für den Körper (optional)
-
Fügen Sie den Inhalt des Anforderungstexts für POST- oder PUT-Anfragen hinzu. Unterstützt JSON-, XML- oder Klartextformate. Beispiel:
{"userId": 123, "action": "test"}.
Testen Sie Framework-Skripte
Wenn Sie JMeter, k6 oder Locust verwenden, laden Sie Ihre Testskriptdatei oder ein ZIP-Archiv hoch, das Ihr Testskript und unterstützende Dateien enthält.
Für JMeter können Sie benutzerdefinierte Plugins in einen /plugins Ordner in Ihrem ZIP-Archiv aufnehmen.
Für Locust muss ein Testskript in einem ZIP-Archiv benannt werden. locustfile.py Um Python-Pakete von Drittanbietern zur Laufzeit in den Container zu installieren, fügen Sie dem Archiv eine requirements.txt Datei hinzu und optional ein packages Unterverzeichnis mit Wheel-Dateien, um sie ohne Internetzugang zu installieren. Weitere Informationen finden Sie unter Locust-Tests.
Wichtig
Im Standardmodus steuert die Lösung die Last und überschreibt, was Ihr Skript deklariert. Ihr Testskript (JMeter, k6 oder Locust) kann Parallelität (virtuelle Benutzer), Transaktionsraten (TPS), Hochlaufzeiten und andere Ladeparameter definieren. Die Lösung wendet stattdessen die Werte an, die Sie im Traffic Shape-Bildschirm angeben. Diese Konfiguration steuert die Anzahl der Aufgaben, die Parallelität (virtuelle Benutzer pro Aufgabe), die Anlaufdauer und die Haltedauer für die Testausführung.
Im systemeigenen Modus steuert Ihr Skript die Last und die Lösung übergibt keine Ladeparameter an das Framework. Den Unterschied zwischen den beiden Modi finden Sie unter Traffic-Shape-Modi.
Dauer der Sicherheit (systemeigener Modus)
Wenn Sie den einheitlichen Modus auswählen, zeigt die Konsole neben dem Skript-Upload ein Feld für die Sicherheitsdauer an. Die Standardeinstellung ist 4 Stunden und die Höchstdauer ist 24 Stunden.
Im systemeigenen Modus beendet die Sicherheitsdauer einen Test, der länger als von Ihnen beabsichtigt ausgeführt wird, da Ihr Skript entscheidet, wann der Lauf abgeschlossen ist. Es ist eine Wache, kein Zeitplan. Wenn der Test nach Ablauf der Dauer noch läuft, stoppt die Lösung das Testframework. Es behält die Ergebnisse für den Abschnitt bei, der ausgeführt wurde, und zeichnet den Testlauf als abgeschlossen und nicht als fehlgeschlagen auf. Stellen Sie den Wert höher ein als die längste Ausführungsdauer, die das Skript voraussichtlich benötigen wird.
Schritt 3: Form des Verkehrs
Konfigurieren Sie, wie der Verkehr während Ihres Tests verteilt wird, einschließlich der Unterstützung mehrerer Regionen.
Shape-Modi für den Verkehr
Die Lösung bietet zwei Traffic-Shape-Modi: Standard und Nativ. Sie unterscheiden sich darin, welche Seite den Ladevorgang steuert: die Lösung oder das Skript, das Sie hochladen. Sie wählen den Modus in Schritt 2: Szenariokonfiguration aus, und er bestimmt, welche der folgenden Felder zutreffen.
Anmerkung
Der native Modus ist eine Vorschaufunktion in Version 4.3.0. Der Standardmodus ist die Standardeinstellung und entspricht dem Verhalten, das die Lösung immer verwendet hat.
Standard
Im Standardmodus hat die Lösung die Kontrolle über die Last. Sie legen die Anzahl der Fargate-Aufgaben pro Region, die Anzahl der gleichzeitigen virtuellen Benutzer pro Aufgabe, eine Anlaufzeit und eine Wartedauer fest. Die Lösung führt Ihren Test über das Taurus-Automatisierungsframework aus, das diese Werte in die eigenen Laststeuerungen des zugrunde liegenden Frameworks übersetzt. Taurus hat Vorrang vor dem Ladevorgang, den Ihr Skript deklariert. Daher wird ein k6-Optionsblock, eine Locust LoadTestShape - oder eine JMeter-Threadgruppe neu geschrieben oder ignoriert. Die virtuellen Benutzer einer Region sind die Anzahl der Aufgaben multipliziert mit der Parallelität für jede Aufgabe, und die Form ist dieselbe, unabhängig davon, welches Framework Sie gewählt haben. Auf diese Weise wurde jeder Test vor Version 4.3.0 ausgeführt, sodass sich früher erstellte Szenarien weiterhin genauso verhalten und keine Änderungen erforderlich sind.
Wählen Sie Standard, wenn die Lastform außerhalb des Skripts liegt und über die Konsole, die CLI oder einen Agenten festgelegt wurde. Standard ist der einzige Modus, in dem Sie eine genaue Anzahl virtueller Benutzer festlegen und das Ramp-up- und Hold-Shape ändern können, ohne das Skript zu berühren. Nur Standard unterstützt den Typ Simple HTTP Endpoint, bei dem die Lösung den Testplan für Sie generiert. Typische Anwendungen: eine Kapazitätsprüfung bei 500 bis 5.000 virtuellen Benutzern, eine nächtliche Regression, bei der 1.000 Benutzer zehn Minuten lang festgehalten werden, oder jeder Vergleich, für den eine identische Rampe erforderlich ist. Ihre Grenze liegt in der Ausdruckskraft. Alles, was Taurus nicht repräsentieren kann, ist hier nicht verfügbar, einschließlich mehrerer gewichteter Szenarien, Schwellenwerte pro Stufe und Ausführenden mit der Ankunftsrate.
Nativ
Im systemeigenen Modus hat Ihr Skript die Kontrolle über den Ladevorgang. Die Lösung führt die von Ihnen hochgeladene Datei unter der Framework-eigenen Befehlszeile aus: jmeter -n -tk6 run, oderlocust --headless. Es übergibt keine Ladeflags, sodass Ihr Skript die alleinige Autorität für den generierten Datenverkehr ist und die Lösung ihn niemals neu schreibt. Es gibt noch zwei Steuerelemente: die Anzahl der Fargate-Aufgaben, die pro Region gestartet werden sollen, und die erforderliche Sicherheitsdauer von bis zu 24 Stunden. Die Sicherheitsdauer ist ein Schutz vor einem Skript, das niemals beendet wird, kein Zeitplan. Wenn ein Test nach Ablauf der Dauer noch läuft, stoppt die Lösung das Framework, sammelt die Ergebnisse für den Abschnitt, der ausgeführt wurde, und zeichnet den Lauf als abgeschlossen und nicht als fehlgeschlagen auf. Jede Aufgabe wird als unabhängiger Framework-Prozess ohne Koordination zwischen den Aufgaben ausgeführt. Daher generiert eine Region für jede Aufgabe eine vollständige Kopie der deklarierten Last Ihres Skripts. Beispiel: Ein k6-Skript, das 200 virtuelle Benutzer enthält und auf fünf Aufgaben ausgeführt wird, setzt 1.000 virtuelle Benutzer auf das Ziel. Die Anzahl der Aufgaben ist daher die einzige Laststeuerung, die Native Ihnen bietet, und sie bewegt sich in einem Vielfachen dessen, was das Skript deklariert. Wenn Sie die Rampe, die Wartezeit oder die Anzahl der virtuellen Benutzer selbst ändern, müssen Sie das Skript bearbeiten.
Wählen Sie Nativ, wenn Sie ein Skript genau so ausführen möchten, wie es geschrieben wurde. Ein Skript, das bereits lokal oder in CI ausgeführt wird, läuft unverändert auf der Lösung, was der Hauptgrund dafür ist, nach Native zu greifen. Native bewahrt alles, was das Framework ausdrücken kann: k6-Szenarien, Stufen und Schwellenwerte; LoadTestShape Locust-Klassen und gewichtete Tasksets; JMeter-Timer und Threadgruppen. Wählen Sie es aus, wenn die Lastform Teil der Bedeutung des Tests ist und es wichtiger ist, sie originalgetreu zu reproduzieren, als sie von außen zu steuern. Typische Anwendungen: Wiederverwendung eines K6-Skripts aus einer Pipeline, ohne es neu zu schreiben, ein Spike-then-Recovery-Profil oder gewichtete Szenarien, die eine einzelne Parallelitätszahl nicht ausdrücken kann. Wenn das Framework so ausgeführt wird, wie es erstellt wurde, ergeben sich zwei Einschränkungen. Native erfordert ein hochgeladenes Skript, sodass Simple HTTP Endpoint nicht verfügbar ist. Locust-Skripte dürfen nicht gesetzt werdenprocesses, da die Lösung Anfragen nur zählt, wenn Locust als einzelner Prozess ausgeführt wird.
Wählen Sie einen Modus
| Wenn du brauchst | Klicken Sie auf |
|---|---|
|
Eine exakte Anzahl virtueller Benutzer, die von außerhalb des Skripts festgelegt wurde |
Standard |
|
Um die Hochlauf- oder Haltezeit zu ändern, ohne das Skript zu bearbeiten |
Standard |
|
Eine einzelne URL ohne jegliches Skript |
Standard |
|
Dieselbe Lastform, unabhängig vom Framework |
Standard |
|
Um ein CI oder ein lokales Skript unverändert wiederzuverwenden |
Nativ |
|
Die eigenen Stufen, Schwellenwerte oder Formen des Skripts werden berücksichtigt |
Nativ |
|
k6 Szenarien, Schwellenwerte oder Ausführungsmethoden für die Ankunftsrate |
Nativ |
|
Ein |
Nativ |
|
JMeter-Timer und Threadgruppen werden genau so ausgeführt, wie sie erstellt wurden |
Nativ |
|
Um die Last nur auf ein Vielfaches der eigenen Last des Skripts zu skalieren |
Nativ |
Multi-Region Konfiguration des Datenverkehrs
Wählen Sie eine oder mehrere AWS-Regionen aus, um Ihren Lasttest geografisch zu verteilen. Konfigurieren Sie für jede ausgewählte Region:
- Anzahl der Aufgaben
-
Die Anzahl der Container (Aufgaben), die im Fargate-Cluster für das Testszenario gestartet werden. Zusätzliche Aufgaben werden nicht erstellt, sobald das Konto das Limit „Fargate-Ressource wurde erreicht“ erreicht hat. Die Anzahl der Aufgaben gilt für beide Traffic-Shape-Modi. Im systemeigenen Modus ist dies die einzige Laststeuerung, die die Konsole bietet, da bei jeder Aufgabe eine vollständige Kopie Ihres Skripts ausgeführt wird.
- Concurrency (Nebenläufigkeit)
-
Die Anzahl der virtuellen Benutzer, die gleichzeitig pro Aufgabe generiert werden. Das empfohlene Limit basiert auf den Standardeinstellungen von 2 vCPUs pro Aufgabe. Die Parallelität ist durch CPU- und Speicherressourcen begrenzt. Dieses Feld gilt nur für den Standardmodus. Im systemeigenen Modus zeigt die Konsole für jede Region den schreibgeschützten Wert „Durch Skript definiert“ an, da Ihr Skript die Anzahl der virtuellen Benutzer selbst festlegt.
Ermitteln Sie die Anzahl der Benutzer
Die Anzahl der Benutzer, die ein Container für einen Test unterstützen kann, kann bestimmt werden, indem die Anzahl der Benutzer schrittweise erhöht und die Leistung in Amazon überwacht wird CloudWatch. Sobald Sie feststellen, dass sich die CPU- und Speicherleistung ihren Grenzen nähert, haben Sie die maximale Anzahl von Benutzern erreicht, die ein Container für diesen Test in seiner Standardkonfiguration (2 vCPU und 4 GB Arbeitsspeicher) unterstützen kann.
Bei dieser Kalibrierung wird der Wert für Parallelität festgelegt, sodass er für den Standardmodus gilt. Die von ihm festgelegten Container-Grenzwerte gelten auch für den systemeigenen Modus. Dort erhöhen oder senken Sie die Last, die Ihr Skript deklariert, anstatt das Feld Concurrency festzulegen.
Prozess der Kalibrierung
Anhand des folgenden Beispiels können Sie mit der Bestimmung der Grenzwerte für gleichzeitige Benutzer für Ihren Test beginnen:
-
Erstellen Sie einen Test mit nicht mehr als 200 Benutzern.
-
Überwachen Sie während der Testausführung die CPU und den Arbeitsspeicher mithilfe der CloudWatch Konsole
: -
Wählen Sie im Navigationsbereich unter Container Insights die Option Performance Monitoring aus.
-
Wählen Sie auf der Seite zur Leistungsüberwachung im linken Dropdownmenü ECS-Cluster aus.
-
Wählen Sie im rechten Dropdownmenü Ihren Amazon Elastic Container Service (Amazon ECS) -Cluster aus.
-
-
Achten Sie bei der Überwachung auf die CPU und den Arbeitsspeicher. Wenn die CPU-Leistung 75% oder der Arbeitsspeicher 85% nicht überschreitet (ignorieren Sie einmalige Spitzenwerte), können Sie einen weiteren Test mit einer höheren Anzahl von Benutzern durchführen.
Wiederholen Sie die Schritte 1—3, wenn der Test die Ressourcengrenzen nicht überschritten hat. Optional können Sie die Containerressourcen erhöhen, um eine höhere Anzahl gleichzeitiger Benutzer zu ermöglichen. Dies führt jedoch zu höheren Kosten. Einzelheiten finden Sie im Entwicklerhandbuch.
Anmerkung
Um genaue Ergebnisse zu erhalten, führen Sie bei der Bestimmung der Grenzwerte für gleichzeitige Benutzer jeweils nur einen Test aus. Alle Tests verwenden denselben Cluster, und CloudWatch Container Insights aggregiert die Leistungsdaten auf der Grundlage des Clusters. Dies führt dazu, dass beide Tests gleichzeitig an CloudWatch Container Insights gemeldet werden, was zu ungenauen Metriken zur Ressourcenauslastung für einen einzelnen Test führt.
Weitere Informationen zur Kalibrierung von Benutzern pro Engine finden Sie in der Dokumentation unter Kalibrierung eines Taurus-Tests
Anmerkung
Die Lösung zeigt die verfügbaren Kapazitätsinformationen für jede Region an und hilft Ihnen so bei der Planung Ihrer Testkonfiguration innerhalb der verfügbaren Grenzen.
Tabelle der verfügbaren Aufgaben
In der Tabelle der verfügbaren Aufgaben wird die Ressourcenverfügbarkeit für jede ausgewählte Region angezeigt:
-
Region — Der Name der AWS-Region.
-
vCPUs pro Aufgabe — Die Anzahl der virtuellen CPUs, die jeder Aufgabe zugewiesen sind (Standard: 2).
-
DLT-Aufgabenlimit — Die maximale Anzahl von Aufgaben, die auf der Grundlage des Fargate-On-Demand-vCPU-Kontingents Ihres Kontos erstellt werden können. Neue Konten haben in der Regel ein niedrigeres Kontingent. Überprüfen Sie Ihr aktuelles Limit in der Service Quota-Konsole und fordern Sie bei Bedarf eine Erhöhung an.
-
Verfügbare DLT-Aufgaben — Die aktuelle Anzahl der in der Region verfügbaren Aufgaben, berechnet als Ihr DLT-Aufgabenlimit abzüglich der vCPUs, die bereits durch die Ausführung von Fargate-Aufgaben verwendet werden.
Informationen zum Erhöhen der Anzahl verfügbarer Aufgaben oder vCPUs pro Aufgabe finden Sie im Entwicklerhandbuch.
Dauer des Tests
Definieren Sie, wie lange Ihr Belastungstest ausgeführt wird. Die Konsole zeigt diesen Abschnitt nur im Standardmodus an. Im systemeigenen Modus bestimmt Ihr Skript, wie lange der Test läuft, begrenzt durch die Sicherheitsdauer, die Sie in Schritt 2: Szenariokonfiguration festgelegt haben.
- Hochfahren
-
Die Zeit, um die Zielparallelität zu erreichen. Die Last steigt in diesem Zeitraum schrittweise von 0 auf die konfigurierte Parallelitätsstufe an.
- Halten Sie für
-
Die Dauer, für die die Ziellast aufrechterhalten werden soll. Der Test wird für diesen Zeitraum bei voller Parallelität fortgesetzt.
Schritt 4: Überprüfen und Erstellen
Überprüfen Sie alle Ihre Konfigurationen, bevor Sie das Testszenario erstellen. Überprüfen:
-
Allgemeine Einstellungen (Name, Beschreibung, Zeitplan).
-
Szenariokonfiguration (Testtyp, Endpunkt oder Skript).
-
Form des Datenverkehrs (Modus, Aufgaben, Benutzer, Dauer, Regionen).
Wählen Sie nach der Überprüfung Erstellen, um Ihr Testszenario zu speichern.
Verwaltung von Testszenarien
Nachdem Sie ein Testszenario erstellt haben, können Sie:
-
Bearbeiten — Ändern Sie die Testkonfiguration. Häufige Anwendungsfälle umfassen:
-
Verfeinerung der Verkehrsform, um die gewünschte Transaktionsrate zu erreichen.
-
-
Kopieren — Duplizieren Sie ein vorhandenes Testszenario, um Varianten zu erstellen. Häufige Anwendungsfälle umfassen:
-
Endpunkte aktualisieren oder headers/body Parameter hinzufügen.
-
Hinzufügen oder Ändern von Testskripten.
-
-
Löschen — Entfernen Sie Testszenarien, die Sie nicht mehr benötigen.