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:
|
|
testPlan |
sträng | Y | Referens till testplansfilen. |
|
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 timeWindow under . 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.
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 , JSONExtractor och 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 , HTML och XML . |
method |
sträng | HTTP-metod för att anropa slutpunkten. Värden som stöds är: GET , POST , PUT , DELETE , PATCH , HEAD och 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 , step och 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
Relaterat innehåll
- Lär dig hur du skapar automatiserad regressionstestning i ditt CI/CD-arbetsflöde.
- Lär dig hur du parameteriserar belastningstester med hemligheter och miljövariabler.
- Lär dig hur du läser in testskyddade slutpunkter.