Konfigurieren eines Auslastungstests in YAML

Erfahren Sie, wie Sie Ihren Auslastungstest in Azure Load Testing mithilfe von YAML konfigurieren. Sie verwenden die YAML-Datei für die Testkonfiguration, um Auslastungstests aus Ihrem CI/CD-Workflow (Continuous Integration und Continuous Delivery) zu erstellen und auszuführen.

YAML-Syntax des Auslastungstests

Eine Auslastungstestkonfiguration verwendet die folgenden Schlüssel:

Schlüssel type Erforderlich Standardwert Beschreibung
version string J Spezifikationsversion des Auslastungstests. Der einzige unterstützte Wert lautet v0.1.
testId Zeichenfolge J Eindeutiger Bezeichner des Auslastungstests. Der Wert muss zwischen 2 und 50 Zeichen lang sein ([a-z0-9_-]). Für einen vorhandenen Test können Sie testId von der Testdetailseite im Azure-Portal abrufen.
testName Zeichenfolge N Veraltet. Eindeutiger Bezeichner des Auslastungstests. Diese Einstellung wird durch testId. Sie können weiterhin vorhandene Tests mit dem Feld testName ausführen.
displayName Zeichenfolge N Anzeigename des Tests. Dieser Wert wird in der Liste der Tests im Azure-Portal angezeigt. Wenn er nicht angegeben, wird testId als Anzeigename verwendet.
description Zeichenfolge N Kurze Beschreibung des Tests. Der Wert hat eine maximale Länge von 100 Zeichen.
testType Zeichenfolge J Testtyp. Mögliche Werte:
  • URL: URL-basierter Auslastungstest
  • JMX: JMeter-basierte Auslastungstest
  • Locust: Locust-basierte Auslastungstest
testPlan Zeichenfolge J Verweis auf die Testplandatei.
  • Bei testType: JMX: relativer Pfad zum JMeter-Testskript.
  • Wenn testType: Locust: relativer Pfad zum Locust-Testskript.
  • WenntestType: URL: relativer Pfad zur JSON-Anforderungsdatei.
engineInstances integer J Anzahl der parallelen Testmodulinstanzen für die Ausführung des Testplans. Erfahren Sie mehr über das Konfigurieren von Hochskalenlasten.
configurationFiles Array von Zeichenfolgen N Liste der externen Dateien, die für das Testskript erforderlich sind. Beispielsweise CSV-Datendateien, Bilder oder andere Datendateien.
Azure Load Testing lädt alle Dateien in denselben Ordner wie das Testskript hoch. Verweisen Sie im JMeter-Skript oder im Locust-Skript nur auf externe Dateien unter Verwendung des Dateinamens, und entfernen Sie alle Dateipfadinformationen.
failureCriteria Objekt N Liste der Fehlerkriterien für den Auslastungstest. Weitere Informationen finden Sie unter failureCriteria .
autoStop Zeichenfolge oder Objekt N Beenden Sie den Auslastungstest automatisch, wenn der Fehlerprozentsatz einen Wert überschreitet.
Mögliche Werte:
- disable: Beenden Sie einen Auslastungstest nicht automatisch.
- object: see autotop configuration for more details.
properties Objekt N
  • If testType: JMX: JMeter user property file references.
  • Wenn testType: Locust: Locust-Konfigurationsdateiverweise.
Weitere Informationen finden Sie in den Eigenschaften .
zipArtifacts Array von Zeichenfolgen N Gibt die Liste der ZIP-Artefaktdateien an. Für Dateien außer JMeter-Skripts und Benutzereigenschaften für JMeter-basierte Tests und Locust-Skript- und Konfigurationsdateien für Locust-basierte Tests, wenn die Dateigröße 50 MB überschreitet, komprimieren Sie sie in eine ZIP-Datei. Stellen Sie sicher, dass die ZIP-Datei nicht größer als 50 MB wird. Es sind nur 5 ZIP-Artefakte mit maximal 1000 Dateien in jeder und nicht komprimierter Größe von 1 GB zulässig. Gilt nur für testType: JMX und testType: Locust.
splitAllCSVs boolean N False Teilen Sie die CSV-Eingabedateien gleichmäßig auf alle Testmodulinstanzen auf. Weitere Informationen finden Sie unter Lesen einer CSV-Datei in Auslastungstests.
secrets Objekt N Liste der Geheimnisse, auf die das Apache JMeter- oder Locust-Skript verweist. Weitere Details finden Sie unter geheimen Schlüsseln.
env Objekt N Liste der Umgebungsvariablen, auf die das Apache JMeter-Skript oder Locust verweist. Weitere Informationen finden Sie unter Umgebungsvariablen .
certificates Objekt N Liste der Clientzertifikate für die Authentifizierung mit Anwendungsendpunkten im JMeter- oder Locust-Skript. Weitere Informationen finden Sie unter Zertifikaten .
keyVaultReferenceIdentity Zeichenfolge N Ressourcen-ID der vom Benutzer zugewiesenen verwalteten Identität für den Zugriff auf die Geheimnisse aus Ihrem Azure Key Vault. Wenn Sie eine systemseitig verwaltete Identität verwenden, ist diese Information nicht erforderlich. Stellen Sie sicher, dass Sie dieser vom Benutzer zugewiesenen Identität Zugriff auf Ihren Azure-Schlüsseltresor gewähren. Erfahren Sie mehr über verwaltete Identitäten in Azure Load Testing.
subnetId Zeichenfolge N Ressourcen-ID des Subnetzes des virtuellen Netzwerks zum Testen von privat gehosteten Endpunkten. Dieses Subnetz hostet die eingefügten Testmodul-VMs. Weitere Informationen finden Sie unter Durchführen von Auslastungstests für privat gehostete Endpunkte.
publicIPDisabled boolean N Deaktivieren Sie die Bereitstellung einer öffentlichen IP-Adresse, eines Lastenausgleichs und einer Netzwerksicherheitsgruppe, während Sie einen privaten Endpunkt testen. Weitere Informationen finden Sie unter Durchführen von Auslastungstests für privat gehostete Endpunkte.
regionalLoadTestConfig Objekt N Verteilen Sie Die Last über Regionen hinweg, um den Benutzerdatenverkehr aus mehreren Regionen zu simulieren. Weitere Informationen finden Sie in der konfiguration für regionale Auslastungstests .

Beispiel für die Auslastungstestkonfiguration

Der folgende YAML-Codeschnipsel enthält eine Beispielkonfiguration für Auslastungstests.

version: v0.1
testId: SampleTest
displayName: Sample Test
description: Load test website home page
testPlan: SampleTest.jmx
testType: JMX
engineInstances: 1
subnetId: /subscriptions/abcdef01-2345-6789-0abc-def012345678/resourceGroups/sample-rg/providers/Microsoft.Network/virtualNetworks/load-testing-vnet/subnets/load-testing
configurationFiles:
  - 'sampledata.csv'
zipArtifacts:
   - bigdata.zip
splitAllCSVs: True
failureCriteria:
  - avg(response_time_ms) > 300
  - percentage(error) > 50
  - GetCustomerDetails: avg(latency) >200
autoStop:
  errorPercentage: 80
  timeWindow: 60
secrets:
  - name: my-secret
    value: https://akv-contoso.vault.azure.net/secrets/MySecret/abc1234567890def12345
keyVaultReferenceIdentity: /subscriptions/abcdef01-2345-6789-0abc-def012345678/resourceGroups/sample-rg/providers/Microsoft.ManagedIdentity/userAssignedIdentities/sample-identity

failureCriteria-Konfiguration

Testfehlerkriterien ermöglichen es Ihnen, Bedingungen zu definieren, um zu ermitteln, ob eine Auslastungstestausführung erfolgreich war oder nicht. Wenn mindestens ein Fehlerkriterium erfüllt ist, erhält der Test ein fehlgeschlagenes Testergebnis. Erfahren Sie mehr über die Verwendung von Auslastungstestfehlerkriterien.

Sie können Fehlerkriterien definieren, die für den gesamten Auslastungstest gelten oder für eine bestimmte Anforderung gelten. Fehlerkriterien weisen die folgende Struktur auf:

  • Testkriterien auf Ebene des Auslastungstests: Aggregate_function (client_metric) condition threshold.
  • Auf bestimmte JMeter-Anforderungen angewandte Testkriterien: Request: Aggregate_function (client_metric) condition threshold.

Unterstützte Clientmetriken

Azure Load Testing unterstützt die folgenden Clientmetriken:

Metrik Aggregate-Funktion Schwellenwert Condition Beschreibung
response_time_ms avg (Durchschnitt)
min (Minimum)
max (Maximum)
pxx (Perzentil), xx kann 50, 75, 90, 95, 96, 97, 98, 99, 999 und 9.999 sein
Integerwert, der die Anzahl der Millisekunden (ms) darstellt. > (größer als)
< (kleiner als)
Antwortzeit oder verstrichene Zeit in Millisekunden. Erfahren Sie mehr über verstrichene Zeit in der Apache JMeter-Dokumentation.
latency avg (Durchschnitt)
min (Minimum)
max (Maximum)
pxx (Quantil), xx kann 50, 90, 95, 99 sein
Integerwert, der die Anzahl der Millisekunden (ms) darstellt. > (größer als)
< (kleiner als)
Wartezeit in Millisekunden. Erfahren Sie mehr über Wartezeit in der Apache JMeter-Dokumentation.
error percentage Numerischer Wert im Bereich von 0 bis 100, der einen Prozentsatz darstellt. Größer als > Prozentanteil der fehlerhaften Anforderungen.
requests_per_sec avg (Durchschnitt) Numerischer Wert mit bis zu zwei Dezimalstellen. > (Größer als)
< (kleiner als)
Anzahl der Anforderungen pro Sekunde.
requests count Wert für ganze Zahl. > (Größer als)
< (kleiner als)
Gesamtanzahl der Anforderungen.

Beispiel für fehlerbezogene Kriterienkonfiguration

Der folgende Codeausschnitt zeigt eine Auslastungstestkonfiguration, die drei Auslastungstestfehlerkriterien enthält.

version: v0.1
testId: SampleTest
displayName: Sample Test
description: Load test website home page
testPlan: SampleTest.jmx
testType: JMX
engineInstances: 1
failureCriteria:
  - avg(response_time_ms) > 300
  - percentage(error) > 50
  - GetCustomerDetails: avg(latency) >200

autoStop-Konfiguration

Mit der Autotopfunktion "Auslastungstest" können Sie einen Auslastungstest automatisch beenden, wenn der Fehlerprozentsatz einen bestimmten Schwellenwert während eines bestimmten Zeitfensters überschreitet. Erfahren Sie mehr über die Autotop-Funktionalität des Auslastungstests.

Schlüssel Typ Standardwert Beschreibung
errorPercentage integer 90 Schwellenwert für den Fehlerprozentsatz während der timeWindow. Wenn der Fehlerprozentsatz diesen Prozentsatz während eines bestimmten Zeitfensters überschreitet, wird die Testausführung automatisch beendet.
timeWindow integer 60 Zeitfenster in Sekunden für die Berechnung der errorPercentage.

Beispiel für die Automatische Konfiguration

Der folgende Codeausschnitt zeigt eine Auslastungstestkonfiguration, die drei Auslastungstestfehlerkriterien enthält.

version: v0.1
testId: SampleTest
displayName: Sample Test
description: Load test website home page
testPlan: SampleTest.jmx
testType: JMX
engineInstances: 1
autoStop:
  errorPercentage: 80
  timeWindow: 60

properties-Konfiguration

Sie können eine JMeter-Benutzereigenschaftendatei für den Ladetest angeben. Die Benutzereigenschaftendatei wird zusammen mit dem Testplan und anderen Dateien hochgeladen. Erfahren Sie mehr über die Verwendung von JMeter-Benutzereigenschaften in Azure Load Testing.

Schlüssel Typ Standardwert Beschreibung
userPropertyFile string Datei, die als Apache JMeter-Benutzereigenschaftendatei oder als Locust-Konfigurationsdatei verwendet werden soll. Für Locust werden Dateien mit Erweiterungen .conf, .ini und .toml als Konfigurationsdatei unterstützt. Die Datei wird zusammen mit dem Testskript und anderen Konfigurationsdateien in die Azure Load Testing-Ressource hochgeladen. Wenn sich die Datei in einem Unterordner auf Ihrem lokalen Computer befindet, verwenden Sie einen Dateipfad, der relativ zum Speicherort des Testskripts ist.

Beispiel für die Konfiguration der Benutzereigenschaftsdatei

Der folgende Codeausschnitt zeigt eine Auslastungstestkonfiguration, die eine Benutzereigenschaftendatei angibt.

version: v0.1
testId: SampleTest
displayName: Sample Test
description: Load test website home page
testPlan: SampleTest.jmx
testType: JMX
engineInstances: 1
properties:
  userPropertyFile: 'user.properties'

Der folgende Codeausschnitt zeigt eine Auslastungstestkonfiguration, die eine Locust-Konfigurationsdatei angibt.

version: v0.1
testId: SampleTest
displayName: Sample Test
description: Load test website home page
testPlan: SampleTest.py
testType: Locust
engineInstances: 1
properties:
  userPropertyFile: 'locust.conf'

secrets-Konfiguration

Sie können geheime Werte in Azure Key Vault speichern und in Ihrem Testplan darauf verweisen. Erfahren Sie mehr über die Verwendung von geheimen Schlüsseln mit Azure Load Testing.

Schlüssel Typ Standardwert Beschreibung
name string Name des Geheimnisses. Dieser Name sollte mit dem geheimen Namen übereinstimmen, den Sie in den Testplananforderungen verwenden.
value Zeichenfolge URI (Geheimnisbezeichner) für das Azure Key Vault-Geheimnis.

Konfigurationsbeispiel für geheime Schlüssel

Der folgende Codeausschnitt zeigt eine Auslastungstestkonfiguration, die auf einen geheimen Schlüssel my-secret in Azure Key Vault verweist.

version: v0.1
testId: SampleTest
displayName: Sample Test
description: Load test website home page
testPlan: SampleTest.jmx
testType: JMX
engineInstances: 1
secrets:
  - name: my-secret
    value: https://akv-contoso.vault.azure.net/secrets/MySecret/abc1234567890def12345

env-Konfiguration

Sie können Umgebungsvariablen angeben und in Ihrem Testplan darauf verweisen. Erfahren Sie mehr über die Verwendung von Umgebungsvariablen mit Azure Load Testing.

Schlüssel Typ Standardwert Beschreibung
name string Der Name der Umgebungsvariablen. Dieser Name sollte mit dem Variablennamen übereinstimmen, den Sie in den Testplananforderungen verwenden.
value Zeichenfolge Der Wert der Umgebungsvariablen.

Beispiel für die Umgebungsvariablenkonfiguration

Der folgende Codeausschnitt zeigt eine Auslastungstestkonfiguration, die eine Umgebungsvariable my-variable und einen Wert my-valueangibt.

version: v0.1
testId: SampleTest
displayName: Sample Test
description: Load test website home page
testPlan: SampleTest.jmx
testType: JMX
engineInstances: 1
env:
  - name: my-variable
    value: my-value

certificates-Konfiguration

Sie können Clientzertifikate an Ihren Auslastungstest übergeben. Das Zertifikat wird in Azure Key Vault gespeichert. Erfahren Sie mehr über die Verwendung von Clientzertifikaten mit Azure Load Testing.

Schlüssel Typ Standardwert Beschreibung
name string Name des Zertifikats.
value Zeichenfolge URI (Geheimnisbezeichner) für das Zertifikat in Azure Key Vault.

Beispiel für die Zertifikatkonfiguration

Der folgende Codeausschnitt zeigt eine Auslastungstestkonfiguration, die auf ein Clientzertifikat in Azure Key Vault verweist.

version: v0.1
testId: SampleTest
displayName: Sample Test
description: Load test website home page
testPlan: SampleTest.jmx
testType: JMX
engineInstances: 1
certificates:
  - name: my-certificate
    value: https://akv-contoso.vault.azure.net/certificates/MyCertificate/abc1234567890def12345

JSON-Datei anfordert

Wenn Sie einen URL-basierten Test verwenden, können Sie die HTTP-Anforderungen in einer JSON-Datei angeben, anstatt ein JMeter-Testskript zu verwenden. Stellen Sie sicher, dass Sie die Zeichenfolge testType URL in der YAML-Testkonfigurationsdatei festlegen und auf die JSON-Anforderungsdatei verweisen.

HTTP-Anforderungen

Die JSON-Anforderungsdatei verwendet die folgenden Eigenschaften zum Definieren von Anforderungen in der requests Eigenschaft:

Eigenschaft Typ Beschreibung
requestName string Eindeutiger Anforderungsname. Sie können beim Konfigurieren von Testfehlerkriterien auf den Anforderungsnamen verweisen.
responseVariables array Liste der Antwortvariablen. Verwenden Sie Antwortvariablen, um einen Wert aus der Anforderung zu extrahieren und in einer nachfolgenden Anforderung darauf zu verweisen. Erfahren Sie mehr über Antwortvariablen.
responseVariables.extractorType Zeichenfolge Mechanismus zum Extrahieren eines Werts aus der Antwortausgabe. Unterstützte Werte sind XPathExtractor, JSONExtractor und RegularExpression.
responseVariables.expression Zeichenfolge Ausdruck zum Abrufen der Antwortausgabe. Der Ausdruck hängt vom Extraktortypwert ab.
responseVariables.variableName Zeichenfolge Eindeutiger Name der Antwortvariable. Sie können diese Variable in einer nachfolgenden Anforderung mithilfe der {$variable-name} Syntax referenzieren.
queryParameters array Liste der Abfragezeichenfolgenparameter, die an den Endpunkt übergeben werden sollen.
queryParameters.key Zeichenfolge Name des Abfragezeichenfolgenparameters.
queryParameters.value Zeichenfolge Parameterwert der Abfragezeichenfolge.
requestType Zeichenfolge Anforderungstyp Unterstützte Werte sind: URL oder CURL.
endpoint Zeichenfolge DIE URL des zu testenden Anwendungsendpunkts.
headers array Liste der HTTP-Header, die an den Anwendungsendpunkt übergeben werden sollen. Geben Sie ein Schlüssel-Wert-Paar für jede Kopfzeile an.
body Zeichenfolge Textkörper für die HTTP-Anforderung. Sie können das requestBodyFormat Format des Textkörperinhalts angeben.
requestBodyFormat Zeichenfolge Format des Textkörperinhalts. Unterstützte Werte: Text, JSON, JavaScript, HTML und XML.
method Zeichenfolge HTTP-Methode zum Aufrufen des Endpunkts. Unterstützte Werte sind: GET, , POST, PUT, DELETE, PATCH, und OPTIONSHEAD.
curlCommand Zeichenfolge cURL-Befehl, der ausgeführt werden soll. Erfordert, dass dies requestType ist CURL.

Der folgende JSON-Codeausschnitt enthält eine JSON-Beispieldatei für Anforderungen:

{
    "version": "1.0",
    "scenarios": {
        "requestGroup1": {
            "requests": [
                {
                    "requestName": "add",
                    "responseVariables": [],
                    "queryParameters": [
                        {
                            "key": "param1",
                            "value": "value1"
                        }
                    ],
                    "requestType": "URL",
                    "endpoint": "https://www.contoso.com/orders",
                    "headers": {
                        "api-token": "my-token"
                    },
                    "body": "{\r\n  \"customer\": \"Contoso\",\r\n  \"items\": {\r\n\t  \"product_id\": 321,\r\n\t  \"count\": 50,\r\n\t  \"amount\": 245.95\r\n  }\r\n}",
                    "method": "POST",
                    "requestBodyFormat": "JSON"
                },
                {
                    "requestName": "get",
                    "responseVariables": [],
                    "requestType": "CURL",
                    "curlCommand": "curl --request GET 'https://www.contoso.com/orders'"
                },
            ],
            "csvDataSetConfigList": []
        }
    },
    "testSetup": [
        {
            "virtualUsersPerEngine": 1,
            "durationInSeconds": 600,
            "loadType": "Linear",
            "scenario": "requestGroup1",
            "rampUpTimeInSeconds": 30
        }
    ]
}

Laden der Konfiguration

Die JSON-Anforderungsdatei verwendet die folgenden Eigenschaften zum Definieren der Ladekonfiguration in der testSetup Eigenschaft:

Eigenschaft type Ladetyp Beschreibung
loadType string Typ des Lademusters. Unterstützte Werte sind: linear, step, und spike.
scenario Zeichenfolge Verweis auf die Anforderungsgruppe, die in der scenarios Eigenschaft angegeben ist.
virtualUsersPerEngine integer Alle Anzahl der virtuellen Benutzer pro Testmodulinstanz.
durationInSeconds integer Alle Gesamtdauer des Auslastungstests in Sekunden.
rampUpTimeInSeconds integer Linear, Schritt Dauer in Sekunden, um die Zielanzahl virtueller Benutzer hochzufahren.
rampUpSteps integer Schritt Die Anzahl der Schritte, um die Zielanzahl der virtuellen Benutzer zu erreichen.
spikeMultiplier integer Spitze Der Faktor, um die Anzahl der Zielbenutzer während der Spitzendauer zu multiplizieren.
spikeHoldTimeInSeconds integer Spitze Gesamtdauer in Sekunden, um die Spitzenlast beizubehalten.

Konfiguration für regionale Auslastungstests

Sie können Last über Regionen verteilen, um reale Verkehrsmuster besser zu simulieren. Sie können die Regionen angeben, aus denen Sie die Last generieren möchten, und die Menge der Last, die Sie aus den einzelnen Regionen simulieren möchten. Dazu können Sie den Regionsnamen und die Anzahl der gewünschten Modulinstanzen in dieser Region angeben. Erfahren Sie mehr über das Generieren von Lasten aus mehreren Regionen.

Schlüssel Typ Standardwert Beschreibung
region string Name der Azure-Region.
engineInstances integer Anzahl der Modulinstanzen für diese Azure-Region.

Beispiel für regionale Auslastungstestkonfiguration

Der folgende Codeausschnitt zeigt eine Auslastungstestkonfiguration, die zwei Azure-Regionen eastus und eastasia die Anzahl der Modulinstanzen für jede Region angibt.

displayName: Sample Test
testPlan: sampleScript.jmx
description: 'Load test website home page'
engineInstances: 4
testId: SampleTest
testType: Locust
splitAllCSVs: False
regionalLoadTestConfig:
- region: eastus
  engineInstances: 2
- region: eastasia
  engineInstances: 2
failureCriteria:
- p90(response_time_ms) > 10000
autoStop:
  errorPercentage: 90
  timeWindow: 60