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 Obligatoriskt Standardvärde beskrivning
version sträng Y Läs in testspecifikationsversion. Det enda värde som stöds är v0.1.
testId sträng 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 sidan med testinformation i Azure-portalen.
testName sträng 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 sträng N Testets visningsnamn. Det här värdet visas i listan över tester i Azure-portalen. Om det inte anges testId används det som visningsnamn.
description sträng N Kort beskrivning av testet. Värdet har en maximal längd på 100 tecken.
testType sträng Y Testtyp. Möjliga värden:
  • URL: URL-baserat belastningstest
  • JMX: JMeter-baserat belastningstest
testPlan sträng Y Referens till testplansfilen.
  • Om testType: JMX: relativ sökväg till JMeter-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 CSV-datafiler, bilder eller andra datafiler.
Azure Load Testing laddar upp alla filer i samma mapp som testskriptet. I JMeter-skriptet refererar du bara till externa filer med filnamnet och tar bort all filsökvägsinformation.
failureCriteria objekt N Lista över villkor för fel vid 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 JMeter-filreferenser för användaregenskap. Mer information finns i egenskaper .
zipArtifacts strängmatris N Anger listan över zip-artefaktfiler. För andra filer än JMeter-skript och användaregenskaper 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 när testType: JMX.
splitAllCSVs boolean 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-skriptet refererar till. Mer information finns i hemligheter .
env objekt N Lista över miljövariabler som Apache JMeter-skriptet refererar till. Mer information finns i miljövariabler .
certificates objekt N Lista över klientcertifikat för autentisering med programslutpunkter i JMeter-skriptet. Mer information finns i certifikat .
keyVaultReferenceIdentity sträng N Resurs-ID för den användartilldelade hanterade identiteten för åtkomst till hemligheterna från ditt Azure Key Vault. Om du använder en systemhanterad identitet behövs inte den här informationen. Se till att ge den här användartilldelade identiteten åtkomst till ditt Azure-nyckelvalv. Läs mer om hanterade identiteter i Azure Load Testing.
subnetId sträng 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 boolean 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.

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'
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 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 JMeter-begäranden: Request: Aggregate_function (client_metric) condition threshold.

Klientmått som stöds

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

Metric Mängdfunktion Threshold Villkor 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.

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:
  - avg(response_time_ms) > 300
  - percentage(error) > 50
  - GetCustomerDetails: avg(latency) >200

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 Default value 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 Default value beskrivning
userPropertyFile sträng Fil som ska användas som en Apache JMeter-användaregenskaper-fil. Filen laddas upp till Azure Load Testing-resursen tillsammans med JMeter-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'

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 Default value beskrivning
name sträng Namnet på hemligheten. Det här namnet ska matcha det hemliga namn som du använder i testplanens begäranden.
value sträng 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 Default value beskrivning
name sträng Namnet på miljövariabeln. Det här namnet ska matcha variabelnamnet som du använder i testplanens begäranden.
value sträng 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 Default value beskrivning
name sträng Namnet på certifikatet.
value sträng 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

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 JMeter-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 :

Property Type Description
requestName sträng Unikt namn på begäran. Du kan referera till begärandenamnet när du konfigurerar villkor för testfel.
responseVariables matris 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 sträng Mekanism för att extrahera ett värde från svarsutdata. Värden som stöds är XPathExtractor, JSONExtractoroch RegularExpression.
responseVariables.expression sträng Uttryck för att hämta svarsutdata. Uttrycket beror på värdet för extraktorns typ.
responseVariables.variableName sträng Unikt svarsvariabelnamn. Du kan referera till den här variabeln i en efterföljande begäran med hjälp av syntaxen {$variable-name} .
queryParameters matris Lista över frågesträngsparametrar som ska skickas till slutpunkten.
queryParameters.key sträng Frågesträngsparameternamn.
queryParameters.value sträng Frågesträngsparametervärde.
requestType sträng Typ av begäran. Värden som stöds är: URL eller CURL.
endpoint sträng URL för programslutpunkten som ska testas.
headers matris Lista över HTTP-huvuden som ska skickas till programslutpunkten. Ange ett nyckel/värde-par för varje rubrik.
body sträng Brödtext för HTTP-begäran. Du kan använda requestBodyFormat för att ange formatet för brödtextinnehållet.
requestBodyFormat sträng Format för brödtextinnehållet. Värden som stöds är: Text, JSON, JavaScript, HTMLoch XML.
method sträng HTTP-metod för att anropa slutpunkten. Värden som stöds är: GET, POST, PUT, DELETE, PATCH, HEADoch OPTIONS.
curlCommand sträng 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:

Property Type Inläsningstyp beskrivning
loadType sträng Inläsningsmönstertyp. Värden som stöds är: linear, stepoch spike.
scenario sträng Referens till begärandegruppen som anges i egenskapen scenarios .
virtualUsersPerEngine integer Alla Antal virtuella användare per testmotorinstans.
durationInSeconds integer Alla 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 Pigg Faktorn för att multiplicera antalet målanvändare med under toppvaraktigheten.
spikeHoldTimeInSeconds integer Pigg 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 Default value beskrivning
region sträng 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