Udostępnij za pośrednictwem


Konfigurowanie testu obciążeniowego w języku YAML

Dowiedz się, jak skonfigurować test obciążeniowy w usłudze Azure Load Testing przy użyciu języka YAML. Plik YAML konfiguracji testu służy do tworzenia i uruchamiania testów obciążeniowych z przepływu pracy ciągłej integracji i ciągłego dostarczania (CI/CD).

Składnia YAML testu obciążeniowego

Konfiguracja testu obciążeniowego używa następujących kluczy:

Klucz Typ Wymagania Wartość domyślna opis
version string Y Wersja specyfikacji testu obciążeniowego. Jedyną obsługiwaną wartością jest v0.1.
testId string Y Unikatowy identyfikator testu obciążeniowego. Wartość musi zawierać się od 2 do 50 znaków ([a-z0-9_-]). W przypadku istniejącego testu możesz pobrać element testId ze strony szczegółów testu w witrynie Azure Portal.
testName string N Przestarzałe. Unikatowy identyfikator testu obciążeniowego. To ustawienie jest zastępowane przez testId. Nadal można uruchamiać istniejące testy przy użyciu testName pola .
displayName string N Nazwa wyświetlana testu. Ta wartość jest wyświetlana na liście testów w witrynie Azure Portal. Jeśli nie zostanie podana, testId zostanie użyta jako nazwa wyświetlana.
description string N Krótki opis testu. Wartość ma maksymalną długość 100 znaków.
testType string Y Typ testu. Możliwe wartości:
  • URL: Test obciążeniowy oparty na adresie URL
  • JMX: Test obciążeniowy oparty na JMeter
  • Locust: Test obciążeniowy oparty na locust
testPlan string Y Odwołanie do pliku planu testu.
  • Jeśli testType: JMX: ścieżka względna do skryptu testowego JMeter.
  • Jeśli testType: Locust: ścieżka względna do skryptu testowego locust.
  • Jeśli testType: URL: ścieżka względna do pliku JSON żądań.
engineInstances integer Y Liczba wystąpień aparatu testów równoległych na potrzeby uruchamiania planu testów. Dowiedz się więcej o konfigurowaniu obciążenia na dużą skalę.
configurationFiles tablica ciągów N Lista plików zewnętrznych wymaganych przez skrypt testowy. Na przykład pliki danych CSV, obrazy lub dowolny inny plik danych.
Testowanie obciążenia platformy Azure przekazuje wszystkie pliki w tym samym folderze co skrypt testowy. W skryscie JMeter lub skrycie Locust odwołują się tylko do plików zewnętrznych przy użyciu nazwy pliku i usuń wszystkie informacje o ścieżce pliku.
failureCriteria obiekt N Lista kryteriów niepowodzenia testu obciążeniowego. Zobacz failureCriteria , aby uzyskać więcej szczegółów.
autoStop ciąg lub obiekt N Automatycznie zatrzymaj test obciążeniowy, gdy wartość procentowa błędu przekracza wartość.
Możliwe wartości:
- disable: nie zatrzymaj testu obciążeniowego automatycznie.
- object: zobacz autostop configuration (Konfiguracja automatycznego zatrzymania ), aby uzyskać więcej szczegółów.
properties obiekt N
  • Jeśli testType: JMX: Plik właściwości użytkownika JMeter odwołuje się do pliku właściwości.
  • Jeśli testType: Locust: plik konfiguracji locust odwołuje się.
Zobacz właściwości , aby uzyskać więcej szczegółów.
zipArtifacts tablica ciągów N Określa listę plików artefaktów zip. W przypadku plików innych niż skrypty JMeter i właściwości użytkownika dla testów opartych na JMeter oraz skryptu locust i plików konfiguracji dla testów opartych na locust, jeśli rozmiar pliku przekracza 50 MB, skompresuj je do pliku ZIP. Upewnij się, że plik ZIP pozostaje poniżej 50 MB rozmiaru. Tylko 5 artefaktów ZIP jest dozwolonych z maksymalnie 1000 plików w każdym i nieskompresowanym rozmiarze 1 GB. Dotyczy tylko i testType: JMX testType: Locust.
splitAllCSVs boolean N Fałsz Podziel wejściowe pliki CSV równomiernie we wszystkich wystąpieniach aparatu testowego. Aby uzyskać więcej informacji, zobacz Odczyt pliku CSV w testach obciążeniowych.
secrets obiekt N Lista wpisów tajnych, do których odwołuje się skrypt Apache JMeter lub Locust. Aby uzyskać więcej informacji, zobacz wpisy tajne .
env obiekt N Lista zmiennych środowiskowych, do których odwołuje się skrypt Apache JMeter lub locust. Aby uzyskać więcej informacji, zobacz zmienne środowiskowe .
certificates obiekt N Lista certyfikatów klienta do uwierzytelniania za pomocą punktów końcowych aplikacji w skry skrycie JMeter lub Locust. Aby uzyskać więcej informacji, zobacz certyfikaty .
keyVaultReferenceIdentity string N Identyfikator zasobu tożsamości zarządzanej przypisanej przez użytkownika na potrzeby uzyskiwania dostępu do wpisów tajnych z usługi Azure Key Vault. Jeśli używasz tożsamości zarządzanej przez system, te informacje nie są potrzebne. Upewnij się, że udzielono tej tożsamości przypisanej przez użytkownika dostępu do magazynu kluczy platformy Azure. Dowiedz się więcej o tożsamościach zarządzanych w usłudze Azure Load Testing.
subnetId string N Identyfikator zasobu podsieci sieci wirtualnej do testowania prywatnych punktów końcowych. Ta podsieć hostuje wstrzyknięte maszyny wirtualne aparatu testowego. Aby uzyskać więcej informacji, zobacz jak testować prywatnie hostowane punkty końcowe.
publicIPDisabled boolean N Wyłącz wdrażanie publicznego adresu IP, modułu równoważenia obciążenia i sieciowej grupy zabezpieczeń podczas testowania prywatnego punktu końcowego. Aby uzyskać więcej informacji, zobacz jak testować prywatnie hostowane punkty końcowe.
regionalLoadTestConfig obiekt N Dystrybuuj obciążenie między regionami, aby symulować ruch użytkowników z wielu regionów. Aby uzyskać więcej informacji, zobacz regionalną konfigurację testu obciążeniowego, aby uzyskać więcej informacji.

Przykład konfiguracji testu obciążeniowego

Poniższy fragment kodu YAML zawiera przykładową konfigurację testu obciążeniowego.

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

Konfiguracja widoku failureCriteria

Kryteria testu niepowodzenia umożliwiają zdefiniowanie warunków w celu określenia, czy przebieg testu obciążeniowego zakończył się pomyślnie, czy nie. Jeśli zostanie spełniony co najmniej jeden kryteria niepowodzenia, test otrzyma wynik testu, który zakończył się niepowodzeniem. Dowiedz się więcej o korzystaniu z kryteriów niepowodzenia testu obciążeniowego.

Można zdefiniować kryteria niepowodzenia, które mają zastosowanie do całego testu obciążeniowego lub które mają zastosowanie do określonego żądania. Kryteria niepowodzenia mają następującą strukturę:

  • Kryteria testu na poziomie testu obciążeniowego: Aggregate_function (client_metric) condition threshold.
  • Kryteria testu stosowane do określonych żądań JMeter: Request: Aggregate_function (client_metric) condition threshold.

Obsługiwane metryki klienta

Testowanie obciążenia platformy Azure obsługuje następujące metryki klienta:

Metric Funkcja agregacji Threshold Warunek opis
response_time_ms avg (średnia)
min (minimum)
max (maksimum)
pxx (percentyl), xx może być 50, 75, 90, 95, 96, 97, 98, 99, 999 i 9999
Wartość całkowita reprezentująca liczbę milisekund (ms). > (większe niż)
< (mniejsze niż)
Czas odpowiedzi lub czas, który upłynął, w milisekundach. Dowiedz się więcej o upływie czasu w dokumentacji narzędzia Apache JMeter.
latency avg (średnia)
min (minimum)
max (maksimum)
pxx (percentyl), xx może być 50, 90, 95, 99
Wartość całkowita reprezentująca liczbę milisekund (ms). > (większe niż)
< (mniejsze niż)
Opóźnienie ( w milisekundach). Dowiedz się więcej o opóźnieniu w dokumentacji narzędzia Apache JMeter.
error percentage Wartość liczbowa w zakresie od 0 do 100, reprezentująca wartość procentową. > (większe niż) Procent żądań, które zakończyły się niepowodzeniem.
requests_per_sec avg (średnia) Wartość liczbowa z maksymalnie dwoma miejscami dziesiętnymi. > (większe niż)
< (mniejsze niż)
Liczba żądań na sekundę.
requests count Wartość całkowita. > (większe niż)
< (mniejsze niż)
Łączna liczba żądań.

Przykład konfiguracji kryteriów niepowodzenia

Poniższy fragment kodu przedstawia konfigurację testu obciążeniowego, która ma trzy kryteria niepowodzenia testu obciążeniowego.

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

Konfiguracja widoku autoStop

Funkcja automatycznego zatrzymywania testów obciążeniowych umożliwia automatyczne zatrzymywanie testu obciążeniowego, gdy wartość procentowa błędu przekracza określony próg w danym przedziale czasu. Dowiedz się więcej na temat funkcji automatycznego zatrzymania testu obciążeniowego.

Klucz Typ Domyślna wartość opis
errorPercentage integer 90 Próg wartości procentowej błędu w ciągu timeWindow. Jeśli wartość procentowa błędu przekracza tę wartość procentową w danym przedziale czasu, przebieg testu zostanie zatrzymany automatycznie.
timeWindow integer 60 Przedział czasu w sekundach do obliczenia wartości errorPercentage.

Przykład konfiguracji automatycznego zatrzymania

Poniższy fragment kodu przedstawia konfigurację testu obciążeniowego, która ma trzy kryteria niepowodzenia testu obciążeniowego.

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

Konfiguracja widoku properties

Możesz określić plik właściwości użytkownika JMeter dla testu obciążeniowego. Plik właściwości użytkownika jest przekazywany wraz z planem testu i innymi plikami. Dowiedz się więcej o korzystaniu z właściwości użytkownika JMeter w usłudze Azure Load Testing.

Klucz Typ Domyślna wartość opis
userPropertyFile string Plik do użycia jako plik właściwości użytkownika narzędzia Apache JMeter lub plik konfiguracji locust. W przypadku locust pliki z rozszerzeniami .conf, .ini i .toml są obsługiwane jako plik konfiguracji. Plik jest przekazywany do zasobu usługi Azure Load Testing wraz ze skryptem testowym i innymi plikami konfiguracji. Jeśli plik znajduje się w podfolderze na komputerze lokalnym, użyj ścieżki względem lokalizacji skryptu testowego.

Przykład konfiguracji pliku właściwości użytkownika

Poniższy fragment kodu przedstawia konfigurację testu obciążeniowego, która określa plik właściwości użytkownika.

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'

Poniższy fragment kodu przedstawia konfigurację testu obciążeniowego, która określa plik konfiguracji locust.

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'

Konfiguracja widoku secrets

Wartości wpisów tajnych można przechowywać w usłudze Azure Key Vault i odwoływać się do nich w planie testu. Dowiedz się więcej na temat używania wpisów tajnych z usługą Azure Load Testing.

Klucz Typ Domyślna wartość opis
name string Nazwa wpisu tajnego. Ta nazwa powinna być zgodna z nazwą wpisu tajnego używaną w żądaniach planu testów.
value string Identyfikator URI (identyfikator wpisu tajnego) dla wpisu tajnego usługi Azure Key Vault.

Przykład konfiguracji wpisów tajnych

Poniższy fragment kodu przedstawia konfigurację testu obciążeniowego, która odwołuje się do wpisu tajnego my-secret w usłudze 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

Konfiguracja widoku env

Zmienne środowiskowe można określić i odwołać się do nich w planie testu. Dowiedz się więcej na temat używania zmiennych środowiskowych z usługą Azure Load Testing.

Klucz Typ Domyślna wartość opis
name string Nazwa zmiennej środowiskowej. Ta nazwa powinna być zgodna z nazwą zmiennej używanej w żądaniach planu testów.
value string Wartość zmiennej środowiskowej.

Przykład konfiguracji zmiennej środowiskowej

Poniższy fragment kodu przedstawia konfigurację testu obciążeniowego, która określa zmienną środowiskową my-variable i wartość 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

Konfiguracja widoku certificates

Certyfikaty klienta można przekazać do testu obciążeniowego. Certyfikat jest przechowywany w usłudze Azure Key Vault. Dowiedz się więcej na temat używania certyfikatów klienta z usługą Azure Load Testing.

Klucz Typ Domyślna wartość opis
name string Nazwa certyfikatu.
value string Identyfikator URI (identyfikator wpisu tajnego) dla certyfikatu w usłudze Azure Key Vault.

Przykład konfiguracji certyfikatu

Poniższy fragment kodu przedstawia konfigurację testu obciążeniowego, która odwołuje się do certyfikatu klienta w usłudze 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

Żądanie pliku JSON

Jeśli używasz testu opartego na adresach URL, możesz określić żądania HTTP w pliku JSON zamiast używać skryptu testowego JMeter. Pamiętaj, aby ustawić wartość testType na URL w pliku YAML konfiguracji testu i odwołać się do pliku JSON żądań.

Żądania HTTP

Plik JSON żądań używa następujących właściwości do definiowania żądań we requests właściwości :

Właściwość Type opis
requestName string Unikatowa nazwa żądania. Możesz odwołać się do nazwy żądania podczas konfigurowania kryteriów testu niepowodzenia.
responseVariables tablica Lista zmiennych odpowiedzi. Użyj zmiennych odpowiedzi, aby wyodrębnić wartość z żądania i odwołać się do niej w kolejnym żądaniu. Dowiedz się więcej o zmiennych odpowiedzi.
responseVariables.extractorType string Mechanizm wyodrębniania wartości z danych wyjściowych odpowiedzi. Obsługiwane wartości to XPathExtractor, JSONExtractori RegularExpression.
responseVariables.expression string Wyrażenie w celu pobrania danych wyjściowych odpowiedzi. Wyrażenie zależy od wartości typu wyodrębniającego.
responseVariables.variableName string Unikatowa nazwa zmiennej odpowiedzi. Tę zmienną można odwołać w kolejnym żądaniu przy użyciu {$variable-name} składni .
queryParameters tablica Lista parametrów ciągu zapytania, które mają być przekazywane do punktu końcowego.
queryParameters.key string Nazwa parametru ciągu zapytania.
queryParameters.value string Wartość parametru ciągu zapytania.
requestType string Typ żądania. Obsługiwane wartości to: URL lub CURL.
endpoint string Adres URL punktu końcowego aplikacji do przetestowania.
headers tablica Lista nagłówków HTTP do przekazania do punktu końcowego aplikacji. Określ parę klucz-wartość dla każdego nagłówka.
body string Tekst treści żądania HTTP. Możesz użyć elementu requestBodyFormat , aby określić format zawartości treści.
requestBodyFormat string Format zawartości treści. Obsługiwane wartości to: Text, , JavaScriptJSON, HTML, i XML.
method string Metoda HTTP w celu wywołania punktu końcowego. Obsługiwane wartości to: GET, , POST, DELETEPUT, PATCH, HEAD, i OPTIONS.
curlCommand string Polecenie cURL do uruchomienia. Wymaga, aby element to requestType CURL.

Poniższy fragment kodu JSON zawiera przykładowy plik JSON żądań:

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

Ładowanie konfiguracji

Plik JSON żądań używa następujących właściwości do zdefiniowania konfiguracji ładowania we testSetup właściwości :

Właściwość Type Typ ładowania opis
loadType string Typ wzorca ładowania. Obsługiwane wartości to: linear, stepi spike.
scenario string Odwołanie do grupy żądań określonej we scenarios właściwości .
virtualUsersPerEngine integer wszystkie Liczba użytkowników wirtualnych na wystąpienie aparatu testowego.
durationInSeconds integer wszystkie Łączny czas trwania testu obciążeniowego w sekundach.
rampUpTimeInSeconds integer Liniowy, krok Czas trwania w sekundach, aby zwiększyć liczbę docelowych użytkowników wirtualnych.
rampUpSteps integer Krok Liczba kroków, które należy wykonać, aby osiągnąć docelową liczbę użytkowników wirtualnych.
spikeMultiplier integer Kolec Współczynnik mnożenia liczby użytkowników docelowych w czasie trwania skoku.
spikeHoldTimeInSeconds integer Kolec Łączny czas trwania w sekundach w celu utrzymania obciążenia skokowego.

Konfiguracja regionalnego testu obciążeniowego

Obciążenie można dystrybuować między regionami, aby lepiej symulować rzeczywiste wzorce ruchu. Możesz określić regiony, z których chcesz wygenerować obciążenie, oraz ilość obciążenia, które chcesz symulować z każdego regionu. Można to zrobić, określając nazwę regionu i liczbę wystąpień aparatu, które mają być w tym regionie. Dowiedz się więcej na temat generowania obciążenia z wielu regionów.

Klucz Typ Domyślna wartość opis
region string Nazwa regionu świadczenia usługi Azure.
engineInstances integer Liczba wystąpień aparatu dla tego regionu świadczenia usługi Azure.

Przykład konfiguracji testu obciążenia regionalnego

Poniższy fragment kodu przedstawia konfigurację testu obciążeniowego, która określa dwa regiony eastus platformy Azure i eastasia liczbę wystąpień aparatu dla każdego regionu.

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