Konfigurace zátěžového testu v YAML
Zjistěte, jak pomocí YAML nakonfigurovat zátěžový test ve službě Azure Load Testing. Soubor YAML konfigurace testů použijete k vytvoření a spuštění zátěžových testů z pracovního postupu kontinuální integrace a průběžného doručování (CI/CD).
Syntaxe YAML zátěžového testu
Konfigurace zátěžového testu používá následující klíče:
Klíč | Typ | Požaduje se | Výchozí hodnota | Popis |
---|---|---|---|---|
version |
string | Y | Verze specifikace zátěžového testu Jediná podporovaná hodnota je v0.1 . |
|
testId |
string | Y | Jedinečný identifikátor zátěžového testu. Hodnota musí být mezi 2 a 50 znaky ([a-z0-9_-]). U existujícího testu můžete získat testId stránku s podrobnostmi o testu na webu Azure Portal. |
|
testName |
string | N | Zastaralé Jedinečný identifikátor zátěžového testu. Toto nastavení je nahrazeno .testId Stále můžete s polem testName spouštět existující testy. |
|
displayName |
string | N | Zobrazovaný název testu. Tato hodnota se zobrazuje v seznamu testů na webu Azure Portal. Pokud není zadaný, testId použije se jako zobrazovaný název. |
|
description |
string | N | Krátký popis testu. Hodnota má maximální délku 100 znaků. | |
testType |
string | Y | Typ testu Možné hodnoty:
|
|
testPlan |
string | Y | Odkaz na soubor testovacího plánu
|
|
engineInstances |
integer | Y | Počet instancí paralelního testovacího modulu pro spuštění testovacího plánu Přečtěte si další informace o konfiguraci vysokého zatížení. | |
configurationFiles |
pole řetězce | N | Seznam externích souborů vyžadovaných testovacím skriptem Například datové soubory CSV, obrázky nebo jakýkoli jiný datový soubor. Azure Load Testing nahraje všechny soubory ve stejné složce jako testovací skript. Ve skriptu JMeter nebo skriptu Pythont odkazujte pouze na externí soubory pomocí názvu souboru a odeberte všechny informace o cestě k souboru. |
|
failureCriteria |
objekt | N | Seznam kritérií selhání zátěžového testu Další podrobnosti najdete v tématu failureCriteria . | |
autoStop |
řetězec nebo objekt | N | Pokud procento chyby překročí hodnotu, automaticky zastavte zátěžový test. Možné hodnoty: - disable : Nezastavujte zátěžový test automaticky.- object: Další podrobnosti najdete v tématu konfigurace automatického dokončování . |
|
properties |
objekt | N |
|
|
zipArtifacts |
pole řetězce | N | Určuje seznam souborů artefaktů zip. U souborů jiných než skriptů JMeter a vlastností uživatele pro testy založené na JMeteru a konfigurační soubory skriptů a konfiguračních souborů pro testy založené na Pythonu, pokud velikost souboru přesahuje 50 MB, zkomprimujte je do souboru ZIP. Ujistěte se, že soubor ZIP zůstává větší než 50 MB. S maximálně 1 000 soubory v každé a nekomprimované velikosti 1 GB jsou povoleny pouze 5 artefaktů ZIP. Platí pouze pro testType: JMX a testType: Locust . |
|
splitAllCSVs |
boolean | N | False | Rozdělte vstupní soubory CSV rovnoměrně napříč všemi instancemi testovacího modulu. Další informace najdete v tématu Čtení souboru CSV v zátěžových testech. |
secrets |
objekt | N | Seznam tajných kódů, na které odkazuje skript Apache JMeter nebo Pythont Další podrobnosti najdete v tajných kódech. | |
env |
objekt | N | Seznam proměnných prostředí, na které odkazuje skript Apache JMeter nebo Pythont Další podrobnosti najdete v proměnných prostředí. | |
certificates |
objekt | N | Seznamklientských Další podrobnosti najdete v certifikátech. | |
keyVaultReferenceIdentity |
string | N | ID prostředku spravované identity přiřazené uživatelem pro přístup k tajným kódům ze služby Azure Key Vault Pokud používáte identitu spravovanou systémem, tyto informace nejsou potřeba. Nezapomeňte této identitě přiřazené uživatelem udělit přístup k trezoru klíčů Azure. Přečtěte si další informace o spravovaných identitách v azure Load Testing. | |
subnetId |
string | N | ID prostředku podsítě virtuální sítě pro testování privátních hostovaných koncových bodů Tato podsíť hostuje vložené virtuální počítače testovacího stroje. Další informace najdete v tématu o tom, jak načíst test privátních hostovaných koncových bodů. | |
publicIPDisabled |
boolean | N | Během testování privátního koncového bodu zakažte nasazení veřejné IP adresy, nástroje pro vyrovnávání zatížení a skupiny zabezpečení sítě. Další informace najdete v tématu o tom, jak načíst test privátních hostovaných koncových bodů. | |
regionalLoadTestConfig |
objekt | N | Distribuujte zatížení napříč oblastmi a simulujte provoz uživatelů z více oblastí. Další informace najdete v konfiguraci regionálního zátěžového testu. |
Ukázka konfigurace zátěžového testu
Následující fragment kódu YAML obsahuje ukázkovou konfiguraci zátěžového testu.
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
Konfigurace failureCriteria
Kritéria selhání testu umožňují definovat podmínky, které určují, jestli bylo spuštění zátěžového testu úspěšné nebo ne. Pokud jsou splněna některá kritéria selhání, test získá neúspěšný výsledek testu. Přečtěte si další informace o použití kritérií selhání zátěžového testu.
Můžete definovat kritéria selhání, která platí pro celý zátěžový test nebo která se vztahují na konkrétní požadavek. Kritéria selhání mají následující strukturu:
- Kritéria testu na úrovni zátěžového testu:
Aggregate_function (client_metric) condition threshold
. - Testová kritéria použitá pro konkrétní požadavky JMeter:
Request: Aggregate_function (client_metric) condition threshold
.
Podporované metriky klienta
Azure Load Testing podporuje následující metriky klienta:
Metrika | Agregační funkce | Prahová hodnota | Podmínka | Popis |
---|---|---|---|---|
response_time_ms |
avg (průměr)min (minimum)max (maximum)pxx (percentil), xx může být 50, 75, 90, 95, 96, 97, 98, 99, 999 a 9999 |
Celočíselná hodnota představující počet milisekund (ms). | > (větší než)< (menší než) |
Doba odezvy nebo uplynulý čas v milisekundách Další informace o uplynulé době najdete v dokumentaci k Apache JMeter. |
latency |
avg (průměr)min (minimum)max (maximum)pxx (percentil), xx může být 50, 90, 95, 99 |
Celočíselná hodnota představující počet milisekund (ms). | > (větší než)< (menší než) |
Latence v milisekundách Další informace o latenci najdete v dokumentaci k Apache JMeter. |
error |
percentage |
Číselná hodnota v rozsahu 0–100 představující procento. | > (větší než) |
Procento neúspěšných požadavků |
requests_per_sec |
avg (průměr) |
Číselná hodnota s až dvěma desetinnými místy | > (větší než) < (menší než) |
Počet žádostí za sekundu |
requests |
count |
Celočíselná hodnota | > (větší než) < (menší než) |
Celkový počet požadavků |
Ukázka konfigurace neúspěšných kritérií
Následující fragment kódu ukazuje konfiguraci zátěžového testu, která má tři kritéria selhání zátěžového testu.
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
Konfigurace autoStop
Funkce automatického zastavování zátěžového testu umožňuje automaticky zastavit zátěžový test, pokud procento chyby překročí určitou prahovou hodnotu během daného časového intervalu. Přečtěte si další informace o funkci automatického dokončování zátěžových testů.
Klíč | Type | Default value | Popis |
---|---|---|---|
errorPercentage |
integer | 90 | Prahová hodnota pro procento chyby během timeWindow období . Pokud procento chyby překročí toto procento během libovolného časového intervalu, testovací běh se automaticky zastaví. |
timeWindow |
integer | 60 | Časový interval v sekundách pro výpočet intervalu errorPercentage . |
Ukázka konfigurace automatického zamyšlování
Následující fragment kódu ukazuje konfiguraci zátěžového testu, která má tři kritéria selhání zátěžového testu.
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
Konfigurace properties
Pro zátěžový test můžete zadat soubor vlastností uživatele JMeter. Soubor vlastností uživatele se nahraje spolu s testovacím plánem a dalšími soubory. Přečtěte si další informace o používání vlastností uživatele JMeter v Azure Load Testing.
Klíč | Type | Default value | Popis |
---|---|---|---|
userPropertyFile |
string | Soubor, který se má použít jako soubor vlastností uživatele Apache JMeter nebo konfigurační soubor Apache JMeter. Pro Soubory s příponou .conf, .ini a .toml jsou podporovány jako konfigurační soubor. Soubor se nahraje do prostředku azure Load Testing spolu s testovacím skriptem a dalšími konfiguračními soubory. Pokud je soubor v podsložce na místním počítači, použijte cestu vzhledem k umístění testovacího skriptu. |
Ukázka konfigurace souboru vlastností uživatele
Následující fragment kódu ukazuje konfiguraci zátěžového testu, která určuje soubor vlastností uživatele.
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'
Následující fragment kódu ukazuje konfiguraci zátěžového testu, která specifikuje konfigurační soubor Sady.
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'
Konfigurace secrets
Hodnoty tajných kódů můžete ukládat ve službě Azure Key Vault a odkazovat na ně v testovacím plánu. Přečtěte si další informace o používání tajných kódů s využitím zátěžového testování Azure.
Klíč | Type | Default value | Popis |
---|---|---|---|
name |
string | Název tajného klíče. Tento název by se měl shodovat s názvem tajného kódu, který používáte v požadavcích testovacího plánu. | |
value |
string | Identifikátor URI (identifikátor tajného klíče) pro tajný klíč služby Azure Key Vault. |
Ukázka konfigurace tajných kódů
Následující fragment kódu ukazuje konfiguraci zátěžového testu, která odkazuje na tajný klíč my-secret
ve službě 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
Konfigurace env
Můžete zadat proměnné prostředí a odkazovat na ně v testovacím plánu. Přečtěte si další informace o používání proměnných prostředí s využitím zátěžového testování Azure.
Klíč | Type | Default value | Popis |
---|---|---|---|
name |
string | Název proměnné prostředí. Tento název by se měl shodovat s názvem proměnné, který používáte v požadavcích testovacího plánu. | |
value |
string | Hodnota proměnné prostředí. |
Ukázka konfigurace proměnné prostředí
Následující fragment kódu ukazuje konfiguraci zátěžového testu, která určuje proměnnou my-variable
prostředí a hodnotu 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
Konfigurace certificates
Klientské certifikáty můžete předat zátěžový test. Certifikát je uložený ve službě Azure Key Vault. Přečtěte si další informace o používání klientských certifikátů se službou Azure Load Testing.
Klíč | Type | Default value | Popis |
---|---|---|---|
name |
string | Název certifikátu. | |
value |
string | Identifikátor URI (identifikátor tajného klíče) pro certifikát ve službě Azure Key Vault |
Ukázka konfigurace certifikátu
Následující fragment kódu ukazuje konfiguraci zátěžového testu, která odkazuje na klientský certifikát ve službě 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
Žádost o soubor JSON
Pokud používáte test založený na adrese URL, můžete místo testovacího skriptu JMeter zadat požadavky HTTP v souboru JSON. Nezapomeňte nastavit testType
hodnotu URL
v souboru YAML konfigurace testu a odkazovat na soubor JSON požadavků.
Požadavky HTTP
Soubor JSON požadavků používá pro definování požadavků ve requests
vlastnosti následující vlastnosti:
Vlastnost | Type | Description |
---|---|---|
requestName |
string | Jedinečný název požadavku. Při konfiguraci kritérií selhání testu můžete odkazovat na název požadavku. |
responseVariables |
pole | Seznam proměnných odpovědí Pomocí proměnných odpovědi extrahujte hodnotu z požadavku a odkazujte na ni v následném požadavku. Přečtěte si další informace o proměnných odpovědí. |
responseVariables.extractorType |
string | Mechanismus extrakce hodnoty z výstupu odpovědi Podporované hodnoty jsou XPathExtractor , JSONExtractor a RegularExpression . |
responseVariables.expression |
string | Výraz pro načtení výstupu odpovědi Výraz závisí na hodnotě typu extraktoru. |
responseVariables.variableName |
string | Jedinečný název proměnné odpovědi Na tuto proměnnou můžete odkazovat v následném požadavku pomocí {$variable-name} syntaxe. |
queryParameters |
pole | Seznam parametrů řetězce dotazu, které se mají předat koncovému bodu |
queryParameters.key |
string | Název parametru řetězce dotazu |
queryParameters.value |
string | Hodnota parametru řetězce dotazu |
requestType |
string | Typ požadavku Podporované hodnoty jsou: URL nebo CURL . |
endpoint |
string | Adresa URL koncového bodu aplikace k otestování |
headers |
pole | Seznam hlaviček HTTP, které se mají předat koncovému bodu aplikace Zadejte pár klíč-hodnota pro každou hlavičku. |
body |
string | Základní text požadavku HTTP Můžete použít requestBodyFormat k určení formátu základního obsahu. |
requestBodyFormat |
string | Formát základního obsahu Podporované hodnoty jsou: Text , , JavaScript JSON , HTML a XML . |
method |
string | Metoda HTTP pro vyvolání koncového bodu Podporované hodnoty jsou: GET , , PUT POST , DELETE , PATCH , HEAD , a OPTIONS . |
curlCommand |
string | cURL command to run. Vyžaduje, aby to requestType bylo CURL . |
Následující fragment kódu JSON obsahuje příklad požadavků na soubor JSON:
{
"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
}
]
}
Konfigurace načtení
Soubor JSON požadavků používá k definování konfigurace načtení ve testSetup
vlastnosti následující vlastnosti:
Vlastnost | Typ | Typ načtení | Popis |
---|---|---|---|
loadType |
string | Typ vzoru zatížení. Podporované hodnoty jsou: linear , step a spike . |
|
scenario |
string | Odkaz na skupinu žádostí zadanou scenarios ve vlastnosti. |
|
virtualUsersPerEngine |
integer | Všechny | Počet virtuálních uživatelů na instanci testovacího modulu |
durationInSeconds |
integer | Všechny | Celková doba trvání zátěžového testu v sekundách |
rampUpTimeInSeconds |
integer | Lineární, krok | Doba trvání v sekundách pro zvýšení cílového počtu virtuálních uživatelů |
rampUpSteps |
integer | Krok | Počet kroků pro dosažení cílového počtu virtuálních uživatelů. |
spikeMultiplier |
integer | Klas | Faktor, který vynásobí počet cílových uživatelů během doby špičky. |
spikeHoldTimeInSeconds |
integer | Klas | Celková doba trvání v sekundách, aby se zachovalo zatížení špičky. |
Konfigurace místního zátěžového testu
Zatížení můžete distribuovat napříč oblastmi a lépe simulovat vzory provozu v reálném životě. Můžete zadat oblasti, ze kterých chcete vygenerovat zatížení, a množství zatížení, které chcete simulovat z každé oblasti. Můžete to provést zadáním názvu oblasti a počtu instancí modulu, které chcete v dané oblasti. Přečtěte si další informace o generování zatížení z více oblastí.
Klíč | Type | Default value | Popis |
---|---|---|---|
region |
string | Název oblasti Azure. | |
engineInstances |
integer | Počet instancí modulu pro danou oblast Azure |
Ukázka konfigurace místního zátěžového testu
Následující fragment kódu ukazuje konfiguraci zátěžového testu, která určuje dvě oblasti eastus
Azure a eastasia
počet instancí modulu pro každou oblast.
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
Související obsah
- Naučte se vytvářet automatizované regresní testování v pracovním postupu CI/CD.
- Naučte se parametrizovat zátěžové testy pomocí tajných kódů a proměnných prostředí.
- Naučte se načítat zabezpečené koncové body zátěžového testu.