Condividi tramite


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:
  • URL: Test di carico basato su URL
  • JMX: Test di carico basato su JMeter
  • Locust: test di carico basato su Locust
testPlan string Y Riferimento al file del piano di test.
  • Se testType: JMX: percorso relativo allo script di test di JMeter.
  • Se testType: Locust: percorso relativo allo script di test Locust.
  • Se testType: URL: percorso relativo al file JSON delle richieste.
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
  • Se testType: JMX: riferimenti al file di proprietà utente di JMeter.
  • Se testType: Locust: riferimenti al file di configurazione locust.
Per altri dettagli, vedere proprietà .
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, HTMLJavaScript, e XML.
method string Metodo HTTP per richiamare l'endpoint. I valori supportati sono: GET, PUTPOST, 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, stepe 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