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:

Key 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:
  • URL: Zátěžový test založený na adrese URL
  • JMX: Zátěžový test založený na JMeteru
testPlan string Y Odkaz na soubor testovacího plánu
  • Pokud testType: JMX: relativní cesta ke skriptu testu JMeter.
  • Pokud testType: URL: relativní cesta k souboru JSON požadavků.
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 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 Odkazy na soubor vlastností uživatele JMeter Další podrobnosti najdete ve vlastnostech .
zipArtifacts pole řetězce N Určuje seznam souborů artefaktů zip. Pro soubory jiné než skripty JMeter a vlastnosti uživatele, 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 v případech, kdy testType: JMX.
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 Další podrobnosti najdete v tajných kódech.
env objekt N Seznam proměnných prostředí, na které odkazuje skript Apache JMeter Další podrobnosti najdete v proměnných prostředí.
certificates objekt N Seznam klientských certifikátů pro ověřování pomocí koncových bodů aplikace ve skriptu JMeter 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ů.

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, 90, 95, 99
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ů.

Key Type Default value Popis
errorPercentage integer 90 Prahová hodnota pro procento chyby během timeWindowobdobí . 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.

Key Type Default value Popis
userPropertyFile string Soubor, který se má použít jako soubor vlastností uživatele Apache JMeter. Soubor se nahraje do prostředku azure Load Testing společně s testovacím skriptem JMeter 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'

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.

Key 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.

Key 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.

Key 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, JSONExtractora 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, , JavaScriptJSON, HTMLa XML.
method string Metoda HTTP pro vyvolání koncového bodu Podporované hodnoty jsou: GET, , PUTPOST, 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, stepa 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 Spike Faktor, který vynásobí počet cílových uživatelů během doby špičky.
spikeHoldTimeInSeconds integer Spike Celková doba trvání v sekundách, aby se zachovalo zatížení špičky.