Terhelésteszt konfigurálása a YAML-ben
Megtudhatja, hogyan konfigurálhatja a terheléstesztet az Azure Load Testingben a YAML használatával. A tesztkonfigurációs YAML-fájllal terhelésteszteket hozhat létre és futtathat a folyamatos integrációs és folyamatos kézbesítési (CI/CD) munkafolyamatból.
YaML-szintaxis terheléstesztelése
A terhelésteszt-konfiguráció a következő kulcsokat használja:
Kulcs | Típus | Kötelező | Alapértelmezett érték | Leírás |
---|---|---|---|---|
version |
húr | I | Terhelésteszt specifikáció verziója. Az egyetlen támogatott érték az v0.1 . |
|
testId |
húr | I | A terhelési teszt egyedi azonosítója. Az értéknek 2 és 50 karakter közöttinek kell lennie ([a-z0-9_-]). Meglévő teszt esetén az testId Azure Portal teszt részleteinek oldaláról szerezheti be. |
|
testName |
húr | N |
Elavult. A terhelési teszt egyedi azonosítója. Ezt a beállítást a rendszer lecseréli a következőre testId : . A mezővel testName továbbra is futtathat meglévő teszteket. |
|
displayName |
húr | N | A teszt megjelenítendő neve. Ez az érték az Azure Portal tesztlistájában jelenik meg. Ha nincs megadva, testId a rendszer megjelenítendő névként használja. |
|
description |
húr | N | A teszt rövid leírása. Az érték legfeljebb 100 karakter hosszúságú lehet. | |
testType |
húr | I | Teszt típusa. Lehetséges értékek:
|
|
testPlan |
húr | I | Hivatkozás a teszttervfájlra.
|
|
engineInstances |
egész szám | I | A tesztterv futtatásához használt párhuzamos tesztmotor-példányok száma. További információ a nagy léptékű terhelés konfigurálásáról. | |
configurationFiles |
sztringek tömbje | N | A tesztszkript által megkövetelt külső fájlok listája. Például JMX-töredékfájlok, CSV-adatfájlok, képek vagy bármely más adatfájl. Az Azure Load Testing az összes fájlt ugyanabban a mappában tölti fel, mint a tesztszkript. A JMeter-szkriptben vagy a Locust-szkriptben csak a fájlnév használatával hivatkozzon külső fájlokra, és távolítsa el a fájl elérési útját. |
|
failureCriteria |
object | N | A terhelésteszt sikertelenségére vonatkozó feltételek listája. További részletekért tekintse meg a failureCriteria webhelyet . | |
autoStop |
sztring vagy objektum | N | Automatikusan állítsa le a terhelési tesztet, ha a hiba százalékos értéke meghaladja az értéket. Lehetséges értékek: - disable : ne állítsa le automatikusan a terhelési tesztet.- objektum: további részletekért tekintse meg az automatikus konfigurációt . |
|
properties |
object | N |
|
|
zipArtifacts |
sztringek tömbje | N | Megadja a zip-összetevők fájljainak listáját. Ha a fájlok mérete meghaladja az 50 MB-ot, a JMeter-alapú tesztek fő JMeter-szkriptjétől és felhasználói tulajdonságaitól eltérő fájlok, valamint a Locust-alapú tesztekhez használt Locust-szkript és konfigurációs fájlok esetében tömörítse őket zip-fájlba. Győződjön meg arról, hogy a ZIP-fájl mérete 50 MB alatt marad. Csak 5 ZIP-összetevő engedélyezett, egyenként legfeljebb 1000 fájllal és 1 GB tömörítetlen mérettel. Csak a következőre vonatkozik: testType: JMX és testType: Locust . |
|
splitAllCSVs |
Logikai | N | Hamis | A bemeneti CSV-fájlok egyenletes felosztása az összes tesztmotor-példányon. További információ: CSV-fájl olvasása terheléstesztekben. |
secrets |
object | N | Az Apache JMeter vagy a Locust szkript által hivatkozott titkos kódok listája. További részletekért lásd a titkos kulcsokat . | |
env |
object | N | Az Apache JMeter-szkript vagy a Locust által hivatkozott környezeti változók listája. További részletekért tekintse meg a környezeti változókat . | |
certificates |
object | N | Az alkalmazásvégpontokkal való hitelesítéshez szükséges ügyféltanúsítványok listája a JMeter vagy a Locust szkriptben. További részletekért tekintse meg a tanúsítványokat . | |
keyVaultReferenceIdentity |
húr | N | A felhasználó által hozzárendelt felügyelt identitás erőforrás-azonosítója az Azure Key Vault titkos kulcsainak eléréséhez. Rendszer által felügyelt identitás használata esetén nincs szükség erre az információra. Győződjön meg arról, hogy a felhasználó által hozzárendelt identitás hozzáférést biztosít az Azure Key Vaulthoz. További információ a felügyelt identitásokról az Azure Load Testingben. | |
subnetId |
húr | N | A virtuális hálózati alhálózat erőforrás-azonosítója a privát üzemeltetésű végpontok teszteléséhez. Ez az alhálózat üzemelteti az injektált tesztmotor virtuális gépeit. További információkért tekintse meg a privát üzemeltetésű végpontok tesztelésének betöltését. | |
publicIPDisabled |
Logikai | N | Tiltsa le nyilvános IP-cím, terheléselosztó és hálózati biztonsági csoport üzembe helyezését egy privát végpont tesztelése közben. További információkért tekintse meg a privát üzemeltetésű végpontok tesztelésének betöltését. | |
regionalLoadTestConfig |
object | N | A terhelés régiók közötti elosztása több régióból származó felhasználói forgalom szimulálásához. További információkért lásd a regionális terhelésteszt konfigurációját . |
Tesztkonfigurációs minta betöltése
Az alábbi YAML-kódrészlet egy példa terhelésteszt-konfigurációt tartalmaz.
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'
- ‘testfragment.jmx’
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
konfiguráció
A sikertelen tesztfeltételek segítségével feltételeket határozhat meg annak megállapításához, hogy egy terheléses teszt sikeres volt-e vagy sem. Ha egy vagy több sikertelen feltétel teljesül, a teszt sikertelen teszteredményt kap. További információ a terhelésteszt sikertelenség feltételeinek használatáról.
Megadhat olyan feladatfeltételeket, amelyek a teljes terhelési tesztre vonatkoznak, vagy amelyek egy adott kérelemre vonatkoznak. A feladatfeltételek struktúrája a következő:
- Tesztelési feltételek a terhelésteszt szintjén:
Aggregate_function (client_metric) condition threshold
. - Adott JMeter-kérelmekre alkalmazott tesztelési feltételek:
Request: Aggregate_function (client_metric) condition threshold
.
Támogatott ügyfélmetrikák
Az Azure Load Testing a következő ügyfélmetrikákat támogatja:
Metrika | Összesítő függvény | Küszöbérték | Feltétel | Leírás |
---|---|---|---|---|
response_time_ms |
avg (átlag)min (minimum)max (maximális)pxx (percentilis), xx lehet 50, 75, 90, 95, 96, 97, 98, 99, 999 és 9999 |
Egész szám, amely az ezredmásodpercek számát (ms) jelöli. |
> (nagyobb, mint)< (kisebb, mint) |
Válaszidő vagy eltelt idő ezredmásodpercben. További információ az Eltelt időről az Apache JMeter dokumentációjában. |
latency |
avg (átlag)min (minimum)max (maximális)pxx (percentilis), xx lehet 50, 90, 95, 99 |
Egész szám, amely az ezredmásodpercek számát (ms) jelöli. |
> (nagyobb, mint)< (kisebb, mint) |
Késés ezredmásodpercben. További információ a késésről az Apache JMeter dokumentációjában. |
error |
percentage |
Numerikus érték a 0–100 tartományban, százalékértékeket jelölve. |
> (nagyobb, mint) |
A sikertelen kérelmek százalékos aránya. |
requests_per_sec |
avg (átlag) |
Legfeljebb két tizedesjegyet tartalmazó numerikus érték. |
> (nagyobb, mint) < (kisebb, mint) |
Kérelmek száma másodpercenként. |
requests |
count |
Egész számérték. |
> (nagyobb, mint) < (kisebb, mint) |
Kérelmek teljes száma. |
Hibakonfigurációs konfigurációs minta
Az alábbi kódrészlet egy terhelésteszt-konfigurációt mutat be, amely három terheléstesztelési feladatfeltételt is tartalmazza.
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
konfiguráció
A terhelésteszt automatikus beállítása lehetővé teszi a terhelésteszt automatikus leállítását, ha a hiba százalékos értéke túllép egy adott küszöbértéket egy adott időablakban. További információ az automatikus terhelésteszt funkcióról.
Kulcs | Típus | Alapértelmezett érték | Leírás |
---|---|---|---|
errorPercentage |
egész szám | 90 | A hiba százalékos küszöbértéke a timeWindow . Ha a hiba százalékos értéke meghaladja ezt a százalékértéket egy adott időszak alatt, a teszt automatikusan lefut. |
timeWindow |
egész szám | 60 | A számításának időablaka errorPercentage másodpercben. |
Automatikus konfigurációs minta
Az alábbi kódrészlet egy terhelésteszt-konfigurációt mutat be, amely három terheléstesztelési feladatfeltételt is tartalmazza.
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
konfiguráció
A terhelési teszthez megadhat egy JMeter felhasználói tulajdonságokat tartalmazó fájlt. A rendszer feltölti a felhasználói tulajdonságokat tartalmazó fájlt a tesztterv és más fájlok mellett. További információ a JMeter felhasználói tulajdonságainak használatáról az Azure Load Testingben.
Kulcs | Típus | Alapértelmezett érték | Leírás |
---|---|---|---|
userPropertyFile |
húr | Apache JMeter-felhasználótulajdonság-fájlként vagy Locust-konfigurációs fájlként használandó fájl. A Locust esetében a .conf, .ini és .toml kiterjesztésű fájlok konfigurációs fájlként támogatottak. A fájl a tesztszkript és más konfigurációs fájlok mellett fel lesz töltve az Azure Load Testing-erőforrásba. Ha a fájl a helyi gépen található almappában található, használjon egy elérési utat a tesztszkript helyéhez képest. |
Felhasználói tulajdonság fájlkonfigurációs mintája
Az alábbi kódrészlet egy terhelésteszt-konfigurációt mutat be, amely egy felhasználói tulajdonságfájlt határoz meg.
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'
Az alábbi kódrészlet egy terhelésteszt-konfigurációt mutat be, amely egy Locust-konfigurációs fájlt határoz meg.
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'
secrets
konfiguráció
Titkos értékeket tárolhat az Azure Key Vaultban, és hivatkozhat rájuk a tesztcsomagban. További információ a titkos kódok Azure Load Testing használatával való használatáról.
Kulcs | Típus | Alapértelmezett érték | Leírás |
---|---|---|---|
name |
húr | A titkos kód neve. Ennek a névnek meg kell egyeznie a tesztterv-kérelmekben használt titkos névvel. | |
value |
húr | URI (titkos azonosító) az Azure Key Vault titkos kulcsához. |
Titkos kulcsok konfigurációs mintája
Az alábbi kódrészlet egy terhelésteszt-konfigurációt mutat be, amely egy titkos kódra my-secret
hivatkozik az Azure Key Vaultban.
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
konfiguráció
Megadhatja a környezeti változókat, és hivatkozhat rájuk a teszttervben. További információ a környezeti változók Azure Load Testing használatával való használatáról.
Kulcs | Típus | Alapértelmezett érték | Leírás |
---|---|---|---|
name |
húr | A környezeti változó neve. Ennek a névnek meg kell egyeznie a tesztterv-kérelmekben használt változó nevével. | |
value |
húr | A környezeti változó értéke. |
Környezeti változó konfigurációs mintája
Az alábbi kódrészlet egy terhelésteszt-konfigurációt mutat be, amely környezeti változót my-variable
és értéket my-value
határoz meg.
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
konfiguráció
Az ügyféltanúsítványokat átadhatja a terheléses tesztnek. A tanúsítvány tárolása az Azure Key Vaultban történik. További információ az ügyféltanúsítványok Azure Load Testing használatával való használatáról.
Kulcs | Típus | Alapértelmezett érték | Leírás |
---|---|---|---|
name |
húr | A tanúsítvány neve. | |
value |
húr | URI (titkos azonosító) a tanúsítványhoz az Azure Key Vaultban. |
Tanúsítványkonfigurációs minta
Az alábbi kódrészlet egy terhelésteszt-konfigurációt mutat be, amely az Azure Key Vaultban található ügyféltanúsítványra hivatkozik.
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
JSON-fájl kérése
Ha URL-alapú tesztet használ, A JMeter-tesztszkript használata helyett megadhatja a HTTP-kéréseket egy JSON-fájlban. Ügyeljen arra, hogy a testType
tesztkonfigurációs YAML-fájlban állítsa be a beállítást URL
, és hivatkozzon a kérések JSON-fájlra.
HTTP-kérések
A requests JSON-fájl a következő tulajdonságokat használja a kérelem meghatározásához a requests
tulajdonságban:
Tulajdonság | Típus | Leírás |
---|---|---|
requestName |
húr | Egyedi kérés neve. A sikertelen tesztfeltételek konfigurálásakor hivatkozhat a kérelem nevére. |
responseVariables |
array | Válaszváltozók listája. Válaszváltozókkal kinyerhet egy értéket a kérelemből, és hivatkozhat rá egy későbbi kérelemben. További információ a válaszváltozókról. |
responseVariables.extractorType |
húr | Egy érték kinyerésére szolgáló mechanizmus a válaszkimenetből. A támogatott értékek a következők XPathExtractor : , JSONExtractor és RegularExpression . |
responseVariables.expression |
húr | Kifejezés a válaszkimenet lekéréséhez. A kifejezés az elszívó típusértékétől függ. |
responseVariables.variableName |
húr | Egyedi válaszváltozó neve. Ezt a változót egy későbbi kérelemben a szintaxis használatával {$variable-name} hivatkozhatja. |
queryParameters |
array | A végpontnak átadni kívánt lekérdezési sztringparaméterek listája. |
queryParameters.key |
húr | Lekérdezési sztring paraméterének neve. |
queryParameters.value |
húr | Lekérdezési sztring paraméterének értéke. |
requestType |
húr | A kérés típusa. A támogatott értékek a következők: URL vagy CURL . |
endpoint |
húr | A tesztelni kívánt alkalmazásvégpont URL-címe. |
headers |
array | Az alkalmazásvégpontnak továbbítandó HTTP-fejlécek listája. Adja meg az egyes fejlécekhez tartozó kulcs-érték párokat. |
body |
húr | A HTTP-kérés törzsszövege. Ezzel requestBodyFormat megadhatja a törzstartalom formátumát. |
requestBodyFormat |
húr | A törzstartalom formátuma. A támogatott értékek a következők: Text , JSON , JavaScript , HTML és XML . |
method |
húr | HTTP-metódus a végpont meghívásához. A támogatott értékek a következők: GET , POST , PUT , DELETE , PATCH , HEAD és OPTIONS . |
curlCommand |
húr | a futtatandó cURL-parancs. Megköveteli, hogy a requestType CURL . |
A következő JSON-kódrészlet egy példakérési JSON-fájlt tartalmaz:
{
"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
}
]
}
Konfiguráció betöltése
A requests JSON-fájl a következő tulajdonságokat használja a tulajdonság terheléskonfigurációjának testSetup
meghatározásához:
Tulajdonság | Típus | Betöltési típus | Leírás |
---|---|---|---|
loadType |
húr | Terhelési minta típusa. A támogatott értékek a következők: linear , step és spike . |
|
scenario |
húr | Hivatkozás a tulajdonságban megadott kérelemcsoportra scenarios . |
|
virtualUsersPerEngine |
egész szám | Mind | Virtuális felhasználók száma tesztmotor-példányonként. |
durationInSeconds |
egész szám | Mind | A terhelési teszt teljes időtartama másodpercben. |
rampUpTimeInSeconds |
egész szám | Lineáris, lépés | A virtuális felhasználók célszámának eléréséhez másodpercben megadott időtartam. |
rampUpSteps |
egész szám | Lépés | A virtuális felhasználók célszámának eléréséhez szükséges lépések száma. |
spikeMultiplier |
egész szám | Kalász | A célfelhasználók számának szorzása a kiugró időtartam alatt. |
spikeHoldTimeInSeconds |
egész szám | Kalász | Teljes időtartam másodpercben a kiugró terhelés fenntartásához. |
Regionális terhelésteszt konfigurációja
A terhelés régiók közötti elosztásával jobban szimulálhatja a valós forgalmi mintákat. Megadhatja azokat a régiókat, amelyekből a terhelést létre szeretné hozni, valamint az egyes régiókból szimulálni kívánt terhelés mennyiségét. Ezt a régió nevének és a régióban használni kívánt motorpéldányok számának megadásával teheti meg. További információ a terhelés több régióból történő generálásáról.
Kulcs | Típus | Alapértelmezett érték | Leírás |
---|---|---|---|
region |
húr | Az Azure-régió neve. | |
engineInstances |
egész szám | Az adott Azure-régió motorpéldányainak száma. |
Regionális terhelésteszt konfigurációs mintája
Az alábbi kódrészlet egy terhelésteszt-konfigurációt mutat be, amely két Azure-régiót eastus
és eastasia
az egyes régiókhoz tartozó motorpéldányok számát határozza meg.
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
Kapcsolódó tartalom
- Megtudhatja, hogyan hozhat létre automatizált regressziós tesztelést a CI/CD-munkafolyamatban.
- Megtudhatja, hogyan paraméterezheti a terheléses teszteket titkos kódokkal és környezeti változókkal.
- Megtudhatja, hogyan töltheti be a teszt által védett végpontokat.