Configurare un test di carico in YAML
Informazioni su come configurare il test di carico in Test di carico di Azure usando YAML. Usare il file YAML di configurazione di test per creare ed eseguire test di carico dal flusso di lavoro di integrazione continua e recapito continuo (CI/CD).
Sintassi YAML del test di carico
Una configurazione di test di carico usa le chiavi seguenti:
Chiave | Type | Obbligatorio | Valore predefinito | Descrizione |
---|---|---|---|---|
version |
stringa | Y | Versione della specifica del test di carico. L'unico valore supportato è v0.1 . |
|
testId |
string | Y | Identificatore univoco del test di carico. Il valore deve essere compreso tra 2 e 50 caratteri ([a-z0-9_-]). Per un test esistente, è possibile ottenere testId dalla pagina dei dettagli del test nel portale di Azure. |
|
testName |
string | N | Deprecato. Identificatore univoco del test di carico. Questa impostazione viene sostituita da testId . È comunque possibile eseguire test esistenti con il campo testName . |
|
displayName |
string | N | Nome visualizzato del test. Questo valore viene visualizzato nell'elenco dei test nel portale di Azure. Se non specificato, testId viene utilizzato come nome visualizzato. |
|
description |
string | N | Breve descrizione del test. Il valore ha una lunghezza massima di 100 caratteri. | |
testType |
string | Y | Tipo di test. Valori possibili:
|
|
testPlan |
string | Y | Riferimento al file del piano di test.
|
|
engineInstances |
integer | Y | Numero di istanze del motore di test parallele per l'esecuzione del piano di test. Altre informazioni sulla configurazione del carico su larga scala. | |
configurationFiles |
matrice di valori string | N | Elenco di file esterni, richiesti dallo script di test. Ad esempio, file di dati CSV, immagini o qualsiasi altro file di dati. Test di carico di Azure carica tutti i file nella stessa cartella dello script di test. Nello script JMeter o nello script Locust fare riferimento solo a file esterni usando il nome del file e rimuovere eventuali informazioni sul percorso del file. |
|
failureCriteria |
oggetto | N | Elenco dei criteri di esito negativo del test di carico. Per altri dettagli, vedere failureCriteria . | |
autoStop |
stringa o oggetto | N | Arrestare automaticamente il test di carico quando la percentuale di errore supera un valore. Valori possibili: - disable : non arrestare automaticamente un test di carico.- object: per altri dettagli, vedere Configurazione dei piani automatici . |
|
properties |
oggetto | N |
|
|
zipArtifacts |
matrice di valori string | N | Specifica l'elenco dei file di artefatti ZIP. Per i file diversi dagli script JMeter e dalle proprietà utente per i test basati su JMeter e i file di script e configurazione locust per i test basati su Locust, se le dimensioni del file superano i 50 MB, comprimerle in un file ZIP. Assicurarsi che il file ZIP rimanga inferiore a 50 MB di dimensioni. Solo 5 artefatti ZIP sono consentiti con un massimo di 1000 file in ogni dimensione non compressa di 1 GB. Si applica solo per testType: JMX e testType: Locust . |
|
splitAllCSVs |
boolean | N | Falso | Suddividere uniformemente i file CSV di input in tutte le istanze del motore di test. Per altre informazioni, vedere Leggere un file CSV nei test di carico. |
secrets |
oggetto | N | Elenco dei segreti a cui fa riferimento lo script Apache JMeter o Locust. Per altri dettagli, vedere segreti . | |
env |
oggetto | N | Elenco di variabili di ambiente a cui fa riferimento lo script Apache JMeter o Locust. Per altri dettagli, vedere Variabili di ambiente. | |
certificates |
oggetto | N | Elenco dei certificati client per l'autenticazione con gli endpoint dell'applicazione nello script JMeter o Locust. Per altri dettagli, vedere Certificati . | |
keyVaultReferenceIdentity |
string | N | ID risorsa dell'identità gestita assegnata dall'utente per l'accesso ai segreti dall'insieme di credenziali delle chiavi di Azure. Se si usa un'identità gestita dal sistema, queste informazioni non sono necessarie. Assicurarsi di concedere a questa identità assegnata dall'utente l'accesso all'insieme di credenziali delle chiavi di Azure. Altre informazioni sulle identità gestite in Test di carico di Azure. | |
subnetId |
string | N | ID risorsa della subnet della rete virtuale per il test di endpoint ospitati privatamente. Questa subnet ospita le macchine virtuali del motore di test inserite. Per altre informazioni, vedere Come caricare gli endpoint ospitati privatamente. | |
publicIPDisabled |
boolean | N | Disabilitare la distribuzione di un indirizzo IP pubblico, di un servizio di bilanciamento del carico e di un gruppo di sicurezza di rete durante il test di un endpoint privato. Per altre informazioni, vedere Come caricare gli endpoint ospitati privatamente. | |
regionalLoadTestConfig |
oggetto | N | Distribuire il carico tra aree per simulare il traffico utente da più aree. Per altre informazioni, vedere Configurazione del test di carico a livello di area per altri dettagli. |
Esempio di configurazione del test di carico
Il frammento YAML seguente contiene una configurazione di test di carico di esempio.
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
Configurazione failureCriteria
I criteri di esito negativo del test consentono di definire le condizioni per determinare se un'esecuzione del test di carico ha avuto esito positivo o negativo. Se vengono soddisfatti uno o più criteri di esito negativo, il test ottiene un risultato di test non riuscito. Altre informazioni sull'uso dei criteri di esito negativo dei test di carico.
È possibile definire criteri di esito negativo che si applicano all'intero test di carico o che si applicano a una richiesta specifica. I criteri di errore hanno la struttura seguente:
- Criteri di test a livello di test di carico:
Aggregate_function (client_metric) condition threshold
. - Criteri di test applicati a richieste JMeter specifiche:
Request: Aggregate_function (client_metric) condition threshold
.
Metriche client supportate
Test di carico di Azure supporta le metriche client seguenti:
Metric | Funzione di aggregazione | Threshold | Condizione | Descrizione |
---|---|---|---|---|
response_time_ms |
avg (media)min (minimo)max (massimo)pxx (percentile), xx può essere 50, 75, 90, 95, 96, 97, 98, 99, 999 e 9999 |
Valore intero, che rappresenta il numero di millisecondi (ms). | > (maggiore di)< (minore di) |
Tempo di risposta o tempo trascorso, espresso in millisecondi. Altre informazioni sul tempo trascorso sono disponibili nella documentazione di Apache JMeter. |
latency |
avg (media)min (minimo)max (massimo)pxx (percentile), xx può essere 50, 90, 95, 99 |
Valore intero, che rappresenta il numero di millisecondi (ms). | > (maggiore di)< (minore di) |
Latenza, in millisecondi. Altre informazioni sulla latenza sono disponibili nella documentazione di Apache JMeter. |
error |
percentage |
Valore numerico nell'intervallo compreso tra 0 e 100, che rappresenta una percentuale. | > (maggiore di) |
Percentuale di richieste non riuscite. |
requests_per_sec |
avg (media) |
Valore numerico con un massimo di due posizioni decimali. | > (maggiore di) < (minore di) |
Numero di richieste al secondo. |
requests |
count |
Valore intero. | > (maggiore di) < (minore di) |
Numero totale di richieste. |
Esempio di configurazione dei criteri non riuscita
Il frammento di codice seguente mostra una configurazione del test di carico con tre criteri di esito negativo del test di carico.
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
Configurazione autoStop
La funzionalità autostop del test di carico consente di arrestare automaticamente un test di carico quando la percentuale di errore supera una soglia specifica durante un determinato intervallo di tempo. Altre informazioni sulla funzionalità di autostop del test di carico.
Chiave | Type | Default value | Descrizione |
---|---|---|---|
errorPercentage |
integer | 90 | Soglia per la percentuale di errore, durante l'oggetto timeWindow . Se la percentuale di errore supera questa percentuale durante un determinato intervallo di tempo, l'esecuzione del test viene arrestata automaticamente. |
timeWindow |
integer | 60 | Intervallo di tempo in secondi per il calcolo di errorPercentage . |
Esempio di configurazione di Autostop
Il frammento di codice seguente mostra una configurazione del test di carico con tre criteri di esito negativo del test di carico.
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
Configurazione properties
È possibile specificare un file di proprietà utente di JMeter per il test di carico. Il file delle proprietà utente viene caricato insieme al piano di test e ad altri file. Altre informazioni sull'uso delle proprietà utente di JMeter in Test di carico di Azure.
Chiave | Type | Default value | Descrizione |
---|---|---|---|
userPropertyFile |
stringa | File da usare come file di proprietà utente apache JMeter o come file di configurazione Locust. Per Locust, i file con estensioni .conf, .ini e .toml sono supportati come file di configurazione. Il file viene caricato nella risorsa Test di carico di Azure insieme allo script di test e ad altri file di configurazione. Se il file si trova in una sottocartella nel computer locale, usare un percorso relativo al percorso dello script di test. |
Esempio di configurazione del file di proprietà utente
Il frammento di codice seguente mostra una configurazione del test di carico, che specifica un file di proprietà utente.
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'
Il frammento di codice seguente mostra una configurazione del test di carico, che specifica un file di configurazione 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'
Configurazione secrets
È possibile archiviare i valori dei segreti in Azure Key Vault e farvi riferimento nel piano di test. Altre informazioni sull'uso dei segreti con Test di carico di Azure.
Chiave | Type | Default value | Descrizione |
---|---|---|---|
name |
stringa | Nome del segreto. Questo nome deve corrispondere al nome del segreto usato nelle richieste del piano di test. | |
value |
string | URI (identificatore segreto) per il segreto di Azure Key Vault. |
Esempio di configurazione dei segreti
Il frammento di codice seguente illustra una configurazione di test di carico che fa riferimento a un segreto my-secret
in 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
Configurazione env
È possibile specificare le variabili di ambiente e farvi riferimento nel piano di test. Altre informazioni sull'uso delle variabili di ambiente con Test di carico di Azure.
Chiave | Type | Default value | Descrizione |
---|---|---|---|
name |
stringa | Nome della variabile di ambiente. Questo nome deve corrispondere al nome della variabile usato nelle richieste del piano di test. | |
value |
string | Valore della variabile di ambiente. |
Esempio di configurazione delle variabili di ambiente
Il frammento di codice seguente mostra una configurazione del test di carico, che specifica una variabile my-variable
di ambiente e un valore 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
Configurazione certificates
È possibile passare i certificati client al test di carico. Il certificato viene archiviato in Azure Key Vault. Altre informazioni sull'uso dei certificati client con Test di carico di Azure.
Chiave | Type | Default value | Descrizione |
---|---|---|---|
name |
stringa | Nome del certificato. | |
value |
string | URI (identificatore segreto) per il certificato in Azure Key Vault. |
Esempio di configurazione del certificato
Il frammento di codice seguente illustra una configurazione del test di carico che fa riferimento a un certificato client in 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
Richieste di file JSON
Se si usa un test basato su URL, è possibile specificare le richieste HTTP in un file JSON anziché usare uno script di test JMeter. Assicurarsi di impostare su testType
URL
nel file YAML di configurazione di test e fare riferimento al file JSON delle richieste.
Richieste HTTP
Il file JSON delle richieste usa le proprietà seguenti per definire le richieste nella requests
proprietà :
Proprietà | Type | Descrizione |
---|---|---|
requestName |
stringa | Nome univoco della richiesta. È possibile fare riferimento al nome della richiesta quando si configurano i criteri di esito negativo del test. |
responseVariables |
array | Elenco delle variabili di risposta. Usare le variabili di risposta per estrarre un valore dalla richiesta e farvi riferimento in una richiesta successiva. Altre informazioni sulle variabili di risposta. |
responseVariables.extractorType |
string | Meccanismo per estrarre un valore dall'output della risposta. I valori supportati sono XPathExtractor , JSONExtractor e RegularExpression . |
responseVariables.expression |
string | Espressione per recuperare l'output della risposta. L'espressione dipende dal valore del tipo di estrattore. |
responseVariables.variableName |
string | Nome della variabile di risposta univoco. È possibile fare riferimento a questa variabile in una richiesta successiva usando la {$variable-name} sintassi . |
queryParameters |
array | Elenco dei parametri della stringa di query da passare all'endpoint. |
queryParameters.key |
string | Nome del parametro della stringa di query. |
queryParameters.value |
string | Valore del parametro della stringa di query. |
requestType |
string | Tipo di richiesta. I valori supportati sono: URL o CURL . |
endpoint |
string | URL dell'endpoint dell'applicazione da testare. |
headers |
array | Elenco di intestazioni HTTP da passare all'endpoint dell'applicazione. Specificare una coppia chiave-valore per ogni intestazione. |
body |
string | Testo del corpo per la richiesta HTTP. È possibile usare per requestBodyFormat specificare il formato del contenuto del corpo. |
requestBodyFormat |
string | Formato del contenuto del corpo. I valori supportati sono: Text , JSON , HTML JavaScript , e XML . |
method |
string | Metodo HTTP per richiamare l'endpoint. I valori supportati sono: GET , PUT POST , DELETE , PATCH , HEAD , e OPTIONS . |
curlCommand |
string | Comando cURL da eseguire. Richiede che sia requestType CURL . |
Il frammento JSON seguente contiene un file JSON di esempio:
{
"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
}
]
}
Configurazione del caricamento
Il file JSON delle richieste usa le proprietà seguenti per definire la configurazione del testSetup
carico nella proprietà :
Proprietà | Type | Tipo di carico | Descrizione |
---|---|---|---|
loadType |
stringa | Tipo di modello di carico. I valori supportati sono: linear , step e spike . |
|
scenario |
string | Riferimento al gruppo di richieste, specificato nella scenarios proprietà . |
|
virtualUsersPerEngine |
integer | Tutte le date | Numero di utenti virtuali per istanza del motore di test. |
durationInSeconds |
integer | Tutte le date | Durata totale del test di carico in secondi. |
rampUpTimeInSeconds |
integer | Lineare, Passaggio | Durata in secondi fino al numero di utenti virtuali di destinazione. |
rampUpSteps |
integer | Procedi | Numero di passaggi per raggiungere il numero di utenti virtuali di destinazione. |
spikeMultiplier |
integer | Picco | Fattore per moltiplicare il numero di utenti di destinazione con durante la durata del picco. |
spikeHoldTimeInSeconds |
integer | Picco | Durata totale in secondi per mantenere il carico di picco. |
Configurazione del test di carico a livello di area
È possibile distribuire il carico tra aree per simulare meglio i modelli di traffico reali. È possibile specificare le aree da cui si vuole generare il carico e la quantità di carico che si vuole simulare da ogni area. A tale scopo, è possibile specificare il nome dell'area e il numero di istanze del motore desiderate in tale area. Altre informazioni sulla generazione del carico da più aree.
Chiave | Type | Default value | Descrizione |
---|---|---|---|
region |
stringa | Nome dell'area di Azure. | |
engineInstances |
integer | Numero di istanze del motore per l'area di Azure. |
Esempio di configurazione del test di carico a livello di area
Il frammento di codice seguente mostra una configurazione di test di carico, che specifica due aree eastus
di Azure e eastasia
il numero di istanze del motore per ogni area.
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
Contenuto correlato
- Informazioni su come creare test di regressione automatizzati nel flusso di lavoro CI/CD.
- Informazioni su come parametrizzare i test di carico con segreti e variabili di ambiente.
- Informazioni su come eseguire il test di carico degli endpoint protetti.