Dela via


Konfigurera ett belastningstest i YAML

Lär dig hur du konfigurerar belastningstestet i Azure Load Testing med hjälp av YAML. Du använder YAML-filen för testkonfiguration för att skapa och köra belastningstester från ditt CI/CD-arbetsflöde (continuous integration and continuous delivery).

Läs in YAML-syntax för test

En belastningstestkonfiguration använder följande nycklar:

Nyckel Typ Krävs Standardvärde Beskrivning
version snöre Y Läs in testspecifikationsversion. Det enda värde som stöds är v0.1.
testId snöre Y Unik identifierare för belastningstestet. Värdet måste vara mellan 2 och 50 tecken ([a-z0-9_-]). För ett befintligt test kan du hämta testId från testinformationssidan i Azure Portal.
testName snöre N Inaktuell. Unik identifierare för belastningstestet. Den här inställningen ersätts av testId. Du kan fortfarande köra befintliga tester med fältet testName .
displayName snöre N Testets visningsnamn. Det här värdet visas i listan över tester i Azure Portal. Om det inte anges testId används det som visningsnamn.
description snöre N Kort beskrivning av testet. Värdet har en maximal längd på 100 tecken.
testType snöre Y Testtyp. Möjliga värden:
  • URL: URL-baserat belastningstest
  • JMX: JMeter-baserat belastningstest
  • Locust: Locust-baserat belastningstest
testPlan snöre Y Referens till testplansfilen.
  • Om testType: JMX: relativ sökväg till JMeter-testskriptet.
  • Om testType: Locust: relativ sökväg till Locust-testskriptet.
  • Om testType: URL: relativ sökväg till JSON-begärandefilen.
engineInstances integer Y Antal parallella testmotorinstanser för att köra testplanen. Läs mer om hur du konfigurerar högskalig belastning.
configurationFiles strängmatris N Lista över externa filer som krävs av testskriptet. Till exempel JMX-fragmentfiler, CSV-datafiler, bilder eller andra datafiler.
Azure Load Testing laddar upp alla filer i samma mapp som testskriptet. I JMeter-skriptet eller Locust-skriptet refererar du bara till externa filer med filnamnet och tar bort all filsökvägsinformation.
failureCriteria objekt N Felvillkor för belastningstest. Mer information finns i failureCriteria .
autoStop sträng eller objekt N Stoppa automatiskt belastningstestet när felprocenten överskrider ett värde.
Möjliga värden:
- disable: Stoppa inte ett belastningstest automatiskt.
- object: se autostop-konfiguration för mer information.
properties objekt N
  • Om testType: JMX: JMeter-användaregenskapsfilreferenser.
  • Om testType: Locust: Referens till locust-konfigurationsfilen.
Mer information finns i egenskaper .
zipArtifacts strängmatris N Anger listan över zip-artefaktfiler. För andra filer än huvudtestskriptet och användaregenskaperna för JMeter-baserade tester och Locust-skript och konfigurationsfiler för Locust-baserade tester komprimerar du dem till en ZIP-fil om filstorleken överskrider 50 MB. Se till att ZIP-filen förblir under 50 MB. Endast 5 ZIP-artefakter tillåts med högst 1 000 filer i varje och en okomprimerad storlek på 1 GB. Gäller endast för testType: JMX och testType: Locust.
splitAllCSVs booleskt N Falsk Dela csv-indatafilerna jämnt över alla testmotorinstanser. Mer information finns i Läsa en CSV-fil i belastningstester.
secrets objekt N Lista över hemligheter som Apache JMeter- eller Locust-skriptet refererar till. Mer information finns i hemligheter .
env objekt N Lista över miljövariabler som Apache JMeter-skriptet eller Locust refererar till. Mer information finns i miljövariabler .
certificates objekt N Lista över klientcertifikat för autentisering med programslutpunkter i JMeter- eller Locust-skriptet. Mer information finns i certifikat .
appComponents objekt N Lista över server -side resurser som ska övervakas under belastningstestet. Mer information finns i appComponents .
subnetId snöre N Resurs-ID för det virtuella nätverksundernätet för testning av privat värdbaserade slutpunkter. Det här undernätet är värd för de inmatade virtuella testmotordatorerna. Mer information finns i läsa in test av privat värdbaserade slutpunkter.
publicIPDisabled booleskt N Inaktivera distributionen av en offentlig IP-adress, lastbalanserare och nätverkssäkerhetsgrupp när du testar en privat slutpunkt. Mer information finns i läsa in test av privat värdbaserade slutpunkter.
regionalLoadTestConfig objekt N Distribuera belastningen mellan regioner för att simulera användartrafik från flera regioner. Mer information finns i konfigurationen för regional belastningstest för mer information.
referenceIdentities objekt N Lista över hanterade identiteter som används i testet för att komma åt hemligheterna från ditt Azure Key Vault, mått för felkriterier på serversidan och autentisering av dina slutpunkter. Mer information finns i referenceIdentiteter .

Exempel på belastningstestkonfiguration

Följande YAML-kodfragment innehåller ett exempel på belastningstestkonfiguration.

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'
  - 'testfragment.jmx'
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

Med villkor för testfel kan du definiera villkor för att avgöra om en belastningstestkörning lyckades eller inte. Om ett eller flera villkor för fel uppfylls får testet ett misslyckat testresultat. Läs mer om hur du använder felvillkor för belastningstest. Du kan definiera felkriterier för klientmått, till exempel svarstid, svarstid osv. och mått på serversidan för dina appkomponenter på serversidan.

Klientmått

Du kan definiera villkor för fel som gäller för hela belastningstestet eller som gäller för en specifik begäran. Kriterium för fel har följande struktur:

  • Testvillkor på belastningstestnivå: Aggregate_function (client_metric) condition threshold.
  • Testvillkor som tillämpas på specifika begäranden: Request: Aggregate_function (client_metric) condition threshold.

Azure Load Testing stöder följande klientmått:

Måttsystem Aggregatfunktion Tröskel Tillstånd Beskrivning
response_time_ms avg (genomsnitt)
min (minimum)
max (max)
pxx (percentil), xx kan vara 50, 75, 90, 95, 96, 97, 98, 99, 999 och 9999
Heltalsvärde, som representerar antalet millisekunder (ms). > (större än)
< (mindre än)
Svarstid eller förfluten tid, i millisekunder. Läs mer om förfluten tid i Apache JMeter-dokumentationen.
latency avg (genomsnitt)
min (minimum)
max (max)
pxx (percentil), xx kan vara 50, 90, 95, 99
Heltalsvärde, som representerar antalet millisekunder (ms). > (större än)
< (mindre än)
Svarstid i millisekunder. Läs mer om svarstider i Apache JMeter-dokumentationen.
error percentage Numeriskt värde i intervallet 0–100, vilket motsvarar en procentandel. > (större än) Procentandel misslyckade begäranden.
requests_per_sec avg (genomsnitt) Numeriskt värde med upp till två decimaler. > (större än)
< (mindre än)
Antal begäranden per sekund.
requests count Heltalsvärde. > (större än)
< (mindre än)
Totalt antal begäranden.

Mått på serversidan

Du kan definiera felvillkor för mått på serversidan för dina appkomponenter på serversidan.

I följande tabell beskrivs de olika fälten i konfigurationen serverMetrics: :

Parameter Beskrivning
resourceId Obligatoriskt. Resurs-ID för appkomponenten som villkoret ska tillämpas på
metricNamespace Obligatoriskt. Namnområdet för mått på serversidan.
metricName Obligatoriskt. De mått på serversidan som kriterierna ska tillämpas på.
aggregation Obligatoriskt. Aggregeringen som ska tillämpas på måtten på serversidan.
condition Valfritt. Jämförelseoperatorn, till exempel greater than, eller less than.
value Obligatoriskt. Det numeriska värde som ska jämföras med måttet.

Konfigurationsexempel för felvillkor

Följande kodfragment visar en konfiguration av belastningstestet, som har tre villkor för belastningstestfel.

version: v0.1
testId: SampleTest
displayName: Sample Test
description: Load test website home page
testPlan: SampleTest.jmx
testType: JMX
engineInstances: 1
failureCriteria:
  clientMetrics:
    - avg(responseTimeMs) > 300
    - percentage(error) > 50
    - getCustomerDetails: avg(latency) > 200
  serverMetrics:
    - resourceId: /subscriptions/abcdef01-2345-6789-0abc-def012345678/resourceGroups/sample-rg/providers/Microsoft.Compute/virtualMachines/sample-vm
      metricNamespace: Microsoft.Compute/virtualMachines
      metricName: Percentage CPU
      aggregation: Average
      condition: GreaterThan
      value: 80
    - resourceId: /subscriptions/abcdef01-2345-6789-0abc-def012345678/resourceGroups/sample-rg/providers/Microsoft.Compute/virtualMachines/sample-vm
      metricNamespace: Microsoft.Compute/virtualMachines
      metricName: Available Memory
      aggregation: Average
      condition: LessThan
      value: 20

appComponents konfiguration

Du kan övervaka resurser på serversidan under belastningstestet. Läs mer om övervakning av resurser på serversidan. När du kör ett belastningstest för ett Azure-värdbaserat program samlar Azure Load Testing in resursmått för dina programkomponenter och visar dem på instrumentpanelen för load testing.

I följande tabell beskrivs de olika fälten i konfigurationen appComponents: :

Parameter Beskrivning
resourceId Obligatoriskt. Resurs-ID:t för appkomponenten som villkoret ska tillämpas på.
resourceName Valfritt. Namnet på den resurs som ska övervakas.
kind Valfritt. Vilken typ av resurs som ska övervakas.
metrics Obligatoriskt. Listan över mått som ska övervakas för appkomponenten. Detta innehåller måttets namn, namnområde och sammansättning.

Konfigurationsexempel för appkomponenter

Följande kodfragment visar en konfiguration för belastningstest som har två appkomponenter.

version: v0.1
testId: SampleTest
displayName: Sample Test
description: Load test website home page
testPlan: SampleTest.jmx
testType: JMX
engineInstances: 1
appComponents:
  - resourceId: "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/samplerg/providers/microsoft.insights/components/appComponentResource"
    resourceName: appComponentResource #Optional
    kind: web # Optional
    metrics:
      - name: "requests/duration"
        namespace: microsoft.insights/components 
        aggregation: "Average"
      - name: "requests/count"
        aggregation: "Total"
        namespace: microsoft.insights/components   
  - resourceId: "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/samplerg/providers/microsoft.insights/components/appComponentResource"
    resourceName: appComponentResource #Optional
    kind: web # Optional
    metrics:
      - name: "requests/duration"
        aggregation: "Average"
        namespace: microsoft.insights/components
      - name: "requests/count"
        aggregation: "Total"
        namespace: microsoft.insights/components

autoStop konfiguration

Med funktionen autostop för belastningstest kan du automatiskt stoppa ett belastningstest när felprocenten överskrider ett visst tröskelvärde under en viss tidsperiod. Läs mer om funktionerna för automatisk belastningstestning.

Nyckel Typ Standardvärde Beskrivning
errorPercentage integer 90 Tröskelvärde för felprocenten timeWindowunder . Om felprocenten överskrider den här procentandelen under en viss tidsperiod stoppas testkörningen automatiskt.
timeWindow integer 60 Tidsfönster i sekunder för att beräkna errorPercentage.

Autostop-konfigurationsexempel

Följande kodfragment visar en konfiguration av belastningstestet, som har tre villkor för belastningstestfel.

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

Du kan ange en JMeter-användaregenskaper för belastningstestet. Filen med användaregenskaper laddas upp tillsammans med testplanen och andra filer. Läs mer om hur du använder JMeter-användaregenskaper i Azure Load Testing.

Nyckel Typ Standardvärde Beskrivning
userPropertyFile snöre Fil som ska användas som en Apache JMeter-användaregenskaper eller en Locust-konfigurationsfil. För Locust stöds filer med filnamnstilläggen .conf, .ini och .toml som en konfigurationsfil. Filen laddas upp till Azure Load Testing-resursen tillsammans med testskriptet och andra konfigurationsfiler. Om filen finns i en undermapp på den lokala datorn använder du en sökväg i förhållande till platsen för testskriptet.

Exempel på konfiguration av användaregenskapsfil

Följande kodfragment visar en konfiguration av belastningstestet som anger en fil för användaregenskaper.

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'

Följande kodfragment visar en konfiguration för belastningstest som anger en Locust-konfigurationsfil.

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

Du kan lagra hemliga värden i Azure Key Vault och referera till dem i testplanen. Läs mer om hur du använder hemligheter med Azure Load Testing.

Nyckel Typ Standardvärde Beskrivning
name snöre Namnet på hemligheten. Det här namnet ska matcha det hemliga namn som du använder i testplanens begäranden.
value snöre URI (hemlig identifierare) för Azure Key Vault-hemligheten.

Exempel på konfiguration av hemligheter

Följande kodfragment visar en belastningstestkonfiguration som refererar till en hemlighet my-secret i Azure Key Vault.

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

Du kan ange miljövariabler och referera till dem i testplanen. Läs mer om hur du använder miljövariabler med Azure Load Testing.

Nyckel Typ Standardvärde Beskrivning
name snöre Namnet på miljövariabeln. Det här namnet ska matcha variabelnamnet som du använder i testplanens begäranden.
value snöre Värdet för miljövariabeln.

Exempel på miljövariabelkonfiguration

Följande kodfragment visar en belastningstestkonfiguration som anger en miljövariabel my-variable och ett värde my-value.

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

Du kan skicka klientcertifikat till belastningstestet. Certifikatet lagras i Azure Key Vault. Läs mer om hur du använder klientcertifikat med Azure Load Testing.

Nyckel Typ Standardvärde Beskrivning
name snöre Namnet på certifikatet.
value snöre URI (hemlig identifierare) för certifikatet i Azure Key Vault.

Exempel på certifikatkonfiguration

Följande kodfragment visar en konfiguration för belastningstest som refererar till ett klientcertifikat i Azure Key Vault.

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

referenceIdentities konfiguration

Du kan använda hanterade identiteter för olika scenarier i belastningstestet. Hanterade identiteter kan användas i testet för att komma åt hemligheter eller certifikat från Azure Key Vault, hämta mått för felkriterier på serversidan och autentisering av dina slutpunkter.

I följande tabell beskrivs de olika fälten i konfigurationen referenceIdentities: :

Parameter Beskrivning
kind Obligatoriskt. Detta definierar det scenario för vilket den hanterade identiteten används. Detta kan vara något av följande KeyVault, Metricseller Engine. Det kan finnas flera objekt för typen Engine.
type Obligatoriskt. Typ av identitet. Detta kan vara UserAssigned eller SystemAssigned.
value Obligatoriskt. Resurs-ID för den hanterade identiteten. Detta behöver inte anges om typen är SystemAssigned.

Konfigurationsexempel för referensidentiteter

Följande kodfragment visar en belastningstestkonfiguration för flera identiteter.

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
failureCriteria:
  serverMetrics:
    - resourceId: /subscriptions/abcdef01-2345-6789-0abc-def012345678/resourceGroups/sample-rg/providers/Microsoft.Compute/virtualMachines/sample-vm
      metricNamespace: Microsoft.Compute/virtualMachines
      metricName: Percentage CPU
      aggregation: Average
      condition: GreaterThan
      value: 80
referenceIdentities:
  - kind: KeyVault
    type: UserAssigned
    value: /subscriptions/abcdef01-2345-6789-0abc-def012345678/resourceGroups/sample-rg/providers/Microsoft.ManagedIdentity/userAssignedIdentities/sample-identity
  - kind: Metrics
    type: SystemAssigned
  - kind: Engine
    type: UserAssigned
    value: /subscriptions/abcdef01-2345-6789-0abc-def012345678/resourceGroups/sample-rg/providers/Microsoft.ManagedIdentity/userAssignedIdentities/sample-identity
  - kind: Engine
    type: UserAssigned
    value: /subscriptions/abcdef01-2345-6789-0abc-def012345678/resourceGroups/sample-rg/providers/Microsoft.ManagedIdentity/userAssignedIdentities/sample-identity1

Begär JSON-fil

Om du använder ett URL-baserat test kan du ange HTTP-begäranden i en JSON-fil i stället för att använda ett testskript. Se till att ange testType till URL i YAML-testkonfigurationsfilen och referera till JSON-filen för begäranden.

HTTP-begäranden

JSON-filen för begäranden använder följande egenskaper för att definiera begäranden i egenskapen requests :

Fastighet Typ Beskrivning
requestName snöre Unikt namn på begäran. Du kan referera till begärandenamnet när du konfigurerar villkor för testfel.
responseVariables array Lista över svarsvariabler. Använd svarsvariabler för att extrahera ett värde från begäran och referera till det i en efterföljande begäran. Läs mer om svarsvariabler.
responseVariables.extractorType snöre Mekanism för att extrahera ett värde från svarsutdata. Värden som stöds är XPathExtractor, JSONExtractoroch RegularExpression.
responseVariables.expression snöre Uttryck för att hämta svarsutdata. Uttrycket beror på värdet för extraktorns typ.
responseVariables.variableName snöre Unikt svarsvariabelnamn. Du kan referera till den här variabeln i en efterföljande begäran med hjälp av syntaxen {$variable-name} .
queryParameters array Lista över frågesträngsparametrar som ska skickas till slutpunkten.
queryParameters.key snöre Frågesträngsparameternamn.
queryParameters.value snöre Frågesträngsparametervärde.
requestType snöre Typ av begäran. Värden som stöds är: URL eller CURL.
endpoint snöre URL för programslutpunkten som ska testas.
headers array Lista över HTTP-huvuden som ska skickas till programslutpunkten. Ange ett nyckel/värde-par för varje rubrik.
body snöre Brödtext för HTTP-begäran. Du kan använda requestBodyFormat för att ange formatet för brödtextinnehållet.
requestBodyFormat snöre Format för brödtextinnehållet. Värden som stöds är: Text, JSON, JavaScript, HTMLoch XML.
method snöre HTTP-metod för att anropa slutpunkten. Värden som stöds är: GET, POST, PUT, DELETE, PATCH, HEADoch OPTIONS.
curlCommand snöre cURL-kommando som ska köras. Kräver att requestType är CURL.

Följande JSON-kodfragment innehåller en JSON-fil med exempelbegäranden:

{
    "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
        }
    ]
}

Läs in konfiguration

JSON-filen för begäranden använder följande egenskaper för att definiera inläsningskonfigurationen testSetup i egenskapen:

Fastighet Typ Typ av last Beskrivning
loadType snöre Inläsningsmönstertyp. Värden som stöds är: linear, stepoch spike.
scenario snöre Referens till begärandegruppen som anges i egenskapen scenarios .
virtualUsersPerEngine integer Allt Antal virtuella användare per testmotorinstans.
durationInSeconds integer Allt Total varaktighet för belastningstestet i sekunder.
rampUpTimeInSeconds integer Linjärt, steg Varaktighet i sekunder för att öka till målantalet virtuella användare.
rampUpSteps integer Steg Antalet steg för att nå målantalet virtuella användare.
spikeMultiplier integer Spets Faktorn för att multiplicera antalet målanvändare med under toppvaraktigheten.
spikeHoldTimeInSeconds integer Spets Total varaktighet i sekunder för att upprätthålla toppbelastningen.

Konfiguration av regional belastningstest

Du kan distribuera belastningen mellan regioner för att bättre simulera trafikmönster i verkliga livet. Du kan ange de regioner som du vill generera belastningen från och den mängd belastning som du vill simulera från varje region. Du kan göra det genom att ange regionnamnet och antalet motorinstanser som du vill använda i den regionen. Läs mer om att generera belastning från flera regioner.

Nyckel Typ Standardvärde Beskrivning
region snöre Namnet på Azure-regionen.
engineInstances integer Antal motorinstanser för den Azure-regionen.

Konfigurationsexempel för regional belastningstest

Följande kodfragment visar en konfiguration för belastningstest som anger två Azure-regioner eastus och eastasia antalet motorinstanser för varje region.

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