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:
|
|
testPlan |
string | Y | Odwołanie do pliku planu testu.
|
|
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 |
|
|
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 , JSONExtractor i 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 , , JavaScript JSON , HTML , i XML . |
method |
string | Metoda HTTP w celu wywołania punktu końcowego. Obsługiwane wartości to: GET , , POST , DELETE PUT , 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 , step i 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
Powiązana zawartość
- Dowiedz się, jak utworzyć zautomatyzowane testowanie regresji w przepływie pracy ciągłej integracji/ciągłego wdrażania.
- Dowiedz się, jak sparametryzować testy obciążeniowe przy użyciu wpisów tajnych i zmiennych środowiskowych.
- Dowiedz się, jak załadować zabezpieczone punkty końcowe.