View a markdown version of this page

Crea uno scenario di test - Test di carico distribuito su AWS

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Crea uno scenario di test

La creazione di uno scenario di test prevede quattro passaggi principali: configurazione delle impostazioni generali, definizione dello scenario, definizione dei modelli di traffico e revisione della configurazione.

Fase 1: impostazioni generali

Configura i parametri di base per il test di carico, inclusi il nome del test, la descrizione e le opzioni di configurazione generali.

Identificazione del test

  • Nome del test (obbligatorio): un nome descrittivo per lo scenario di test

  • Descrizione del test (obbligatorio): dettagli aggiuntivi sullo scopo e sulla configurazione del test

  • Tag (opzionale): aggiungi fino a 5 tag per classificare e organizzare i tuoi scenari di test

Opzioni di pianificazione

Configura quando deve essere eseguito il test:

  • Esegui ora: esegui il test subito dopo la creazione.

  • Esegui una volta: pianifica l'esecuzione del test a una data e ora specifiche.

  • Esegui in base a una pianificazione: utilizza la pianificazione basata su cron per eseguire i test automaticamente a intervalli regolari. Puoi scegliere tra modelli comuni (ogni ora, ogni giorno, settimanalmente) o definire un'espressione cron personalizzata. Per dettagli sul formato cron accettato, sui pattern supportati e sui vincoli, fate riferimento al riferimento alle espressioni Cron nella guida per gli sviluppatori.

Pianificazione del flusso di lavoro

Quando si pianifica un test, si verifica il seguente flusso di lavoro:

  • I parametri di pianificazione vengono inviati all'API della soluzione tramite Amazon API Gateway.

  • L'API passa i parametri a una funzione Lambda che crea una EventBridge pianificazione Amazon Scheduler configurata per essere eseguita alla data specificata.

  • Per i test una tantum (Run Once), la EventBridge pianificazione dello Scheduler richiama la funzione api-services Lambda alla data e all'ora specificate, che esegue il test.

  • Per i test ricorrenti (Run on a Schedule), la EventBridge pianificazione Scheduler richiama la funzione api-services Lambda immediatamente e sulla cadenza definita dall'espressione cron o rate fino alla data di scadenza.

Dati in tempo reale

Seleziona la casella di controllo Includi dati in tempo reale per visualizzare le metriche in tempo reale mentre il test è in esecuzione. Se abilitato, puoi monitorare:

  • Tempo di risposta medio.

  • Gli utenti virtuali contano.

  • Le richieste riuscite contano.

  • Conteggio delle richieste non riuscite.

La funzionalità dei dati in tempo reale fornisce grafici in tempo reale con dati aggregati a intervalli di un secondo. Per ulteriori informazioni, consulta Monitoraggio con dati in tempo reale.

Fase 2: Configurazione dello scenario

Definisci lo scenario di test specifico e seleziona il tuo framework di test preferito.

Selezione del tipo di test

Scegliete il tipo di test di carico da eseguire:

  • Endpoint HTTP semplice: testa un singolo endpoint o pagina Web API con una configurazione semplice.

  • JMeter - Carica gli script di test JMeter (file .jmx o archivi .zip).

  • k6 - Carica gli script di test k6 (file .js o archivi .zip).

  • Locust - Carica gli script di test Locust (file .py o archivi .zip).

Nota

Tutti e quattro i tipi di test si basano su componenti di terze parti. La soluzione esegue i test tramite il framework di automazione dei test Taurus, che esegue JMeter, k6 o Locust a seconda del tipo di test; i test Simple HTTP Endpoint vengono convertiti in un piano di test JMeter ed eseguiti dal pacchetto Apache JMeter. Prima di creare un test, esamina i framework di test per considerazioni sulla sicurezza, informazioni sulla licenza e Third-party opzioni di patch.

modalità Traffic Shape

Scegli da che parte controlla il carico generato dal test. La modalità selezionata modifica i campi mostrati dalla console nella Fase 3: Forma del traffico.

  • Standard: la soluzione controlla il carico. Sei tu a impostare gli utenti virtuali, il periodo di avvio e la durata della sospensione. Standard è l'impostazione predefinita ed è l'unica modalità che supporta i test Simple HTTP Endpoint.

  • Nativo: lo script controlla il caricamento. La soluzione esegue lo script nella riga di comando del framework di test e imposta solo il numero di attività per regione e una durata di sicurezza.

Native richiede uno script caricato, quindi non puoi selezionarlo quando scegli il tipo di test Simple HTTP Endpoint. Per le definizioni complete e le indicazioni sulla modalità da scegliere, consulta le modalità Modalità di configurazione del traffico Traffic shape.

Configurazione dell'endpoint HTTP

Quando si seleziona «Simple HTTP Endpoint», la soluzione genera un piano di test JMeter a partire dalla configurazione e lo esegue con il binario Apache JMeter in dotazione. Configura queste impostazioni:

Endpoint HTTP (obbligatorio)

Inserisci l'URL completo dell'endpoint che desideri testare. Ad esempio, https://api.example.com/users. Assicurati che l'endpoint sia accessibile dall'infrastruttura AWS.

Metodo HTTP (obbligatorio)

Seleziona il metodo HTTP per le tue richieste. Il valore predefinito è GET. Le altre opzioni includono POST PUTDELETE,PATCH,HEAD, eOPTIONS.

Intestazione della richiesta (opzionale)

Aggiungi intestazioni HTTP personalizzate alle tue richieste. Esempi comuni comprendono:

  • Content-Type: application/json

  • Authorization: Bearer <token>

  • User-Agent: LoadTest/1.0

    Scegli Aggiungi intestazione per includere più intestazioni.

Body Payload (opzionale)

Aggiungi il contenuto del corpo della richiesta per le richieste POST o PUT. Supporta i formati JSON, XML o testo normale. Ad esempio: {"userId": 123, "action": "test"}.

Script del framework di test

Quando usi JMeter, k6 o Locust, carica il tuo file di script di test o un archivio .zip contenente lo script di test e i file di supporto.

Per JMeter, puoi includere plugin personalizzati in una /plugins cartella all'interno del tuo archivio .zip.

Per Locust, è necessario nominare uno script di test all'interno di un archivio .zip. locustfile.py Per installare pacchetti Python di terze parti nel contenitore in fase di esecuzione, includi un requirements.txt file nell'archivio e, facoltativamente, una packages sottodirectory di file wheel per installarli senza accesso a Internet. Per ulteriori informazioni, consulta Locust tests. Test di locuste

Importante

In modalità Standard, la soluzione controlla il carico e sovrascrive ciò che dichiara lo script. Lo script di test (JMeter, k6 o Locust) può definire la concorrenza (utenti virtuali), i tassi di transazione (TPS), i tempi di avvio e altri parametri di caricamento. La soluzione applica invece i valori specificati nella schermata Traffic Shape. Tale configurazione controlla il numero di attività, la concorrenza (utenti virtuali per attività), la durata dell'avvio e la durata del blocco per l'esecuzione del test.

In modalità nativa, lo script controlla il carico e la soluzione non trasmette alcun parametro di caricamento al framework. Per la differenza tra le due modalità, fai riferimento alle modalità Traffic shape.

Durata di sicurezza (modalità nativa)

Quando si seleziona la modalità nativa, la console mostra un campo Durata di sicurezza accanto al caricamento dello script. L'impostazione predefinita è 4 ore e la massima è 24 ore.

In modalità nativa, la durata di sicurezza pone fine a un test che viene eseguito più a lungo del previsto, poiché lo script decide quando termina l'esecuzione. È una guardia, non un programma. Se il test è ancora in esecuzione allo scadere della durata, la soluzione interrompe il framework di test. Mantiene i risultati per la parte eseguita e registra l'esecuzione come completata anziché fallita. Impostalo al di sopra della durata massima prevista per lo script.

Fase 3: Forma del traffico

Configura la modalità di distribuzione del traffico durante il test, incluso il supporto multiregionale.

Modalità di configurazione del traffico

La soluzione offre due modalità di forma del traffico, Standard e Native. Si differenziano in base al lato che controlla il caricamento: la soluzione o lo script caricato. La modalità viene selezionata nella Fase 2: Configurazione dello scenario e questa determina quale dei campi seguenti è applicabile.

Nota

La modalità nativa è una funzionalità di anteprima nella versione 4.3.0. La modalità standard è l'impostazione predefinita ed è il comportamento che la soluzione ha sempre utilizzato.

Standard

La modalità standard consente alla soluzione di controllare il carico. È possibile impostare il numero di attività di Fargate per regione, gli utenti virtuali simultanei per attività, un periodo di avvio e una durata di attesa. La soluzione esegue il test tramite il framework di automazione Taurus, che traduce tali valori nei controlli di carico del framework sottostante. Taurus ha la precedenza su qualsiasi caricamento dichiarato dallo script, quindi un blocco di opzioni k6, un Locust o un gruppo di thread JMeter viene LoadTestShape riscritto o ignorato. Gli utenti virtuali di una regione sono il numero di attività moltiplicato per la concorrenza di ciascuna attività e la forma è la stessa a prescindere dal framework scelto. Questo è il modo in cui venivano eseguiti tutti i test prima della versione 4.3.0, quindi gli scenari creati in precedenza continuano a comportarsi esattamente come prima e non necessitano di modifiche.

Scegliete Standard quando la forma di caricamento appartiene all'esterno dello script, impostata dalla console, dalla CLI o da un agente. Standard è l'unica modalità che consente di impostare un numero esatto di utenti virtuali e modificare la forma di avvio e mantenimento senza toccare lo script. Solo Standard supporta il tipo Simple HTTP Endpoint, in cui la soluzione genera il piano di test per te. Usi tipici: un controllo della capacità che passa da 500 a 5.000 utenti virtuali, una regressione notturna che trattiene 1.000 utenti per dieci minuti o qualsiasi confronto che richieda una rampa identica. Il suo limite è l'espressività. Tutto ciò che Taurus non è in grado di rappresentare non è disponibile qui, inclusi scenari ponderati multipli, soglie per fase ed esecutori relativi al tasso di arrivo.

Nativo

La modalità nativa consente allo script di controllare il carico. La soluzione esegue il file che hai caricato nella riga di comando del framework:jmeter -n -t,k6 run, olocust --headless. Non passa alcun flag di caricamento, quindi lo script è l'unica autorità sul traffico che genera e la soluzione non lo riscrive mai. Rimangono due controlli: quante attività Fargate avviare per regione e una durata di sicurezza richiesta fino a 24 ore. La durata di sicurezza è una protezione contro uno script che non finisce mai, non un programma. Se un test è ancora in esecuzione allo scadere della durata, la soluzione arresta il framework, raccoglie i risultati per la parte eseguita e registra l'esecuzione come completata anziché fallita. Ogni attività viene eseguita come un processo di framework indipendente senza coordinamento tra le attività, quindi una regione genera una copia completa del carico dichiarato dallo script per ogni attività. Ad esempio, uno script k6 che contiene 200 utenti virtuali, eseguito su cinque attività, colloca 1.000 utenti virtuali sulla destinazione. Il conteggio delle attività è quindi l'unico controllo del carico che Native ti offre e si sposta in multipli interi di ciò che dichiara lo script. Modificare la rampa, il tempo di attesa o il conteggio degli utenti virtuali significa modificare lo script.

Scegliete Native quando desiderate eseguire uno script esattamente come è stato scritto. Uno script già eseguito localmente o in CI viene eseguito invariato sulla soluzione, motivo principale per scegliere Native. Native conserva tutto ciò che il framework può esprimere: scenari, fasi e soglie k6; LoadTestShape classi Locust e set di attività ponderati; timer JMeter e gruppi di thread. Sceglietelo quando la forma del carico fa parte del significato del test e riprodurla fedelmente è più importante che controllarla dall'esterno. Usi tipici: riutilizzare uno script k6 da una pipeline senza riscriverlo, un profilo spike-then-recover o scenari ponderati che un singolo numero di concorrenza non è in grado di esprimere. L'esecuzione del framework così come è stato creato comporta due vincoli. Native richiede uno script caricato, quindi Simple HTTP Endpoint non è disponibile. Gli script Locust non devono essere impostatiprocesses, perché la soluzione conta le richieste solo quando Locust viene eseguito come un singolo processo.

Scelta di una modalità

Se hai bisogno Scegliere

Un numero esatto di utenti virtuali, impostato dall'esterno dello script

Standard

Per modificare il tempo di avvio o di attesa senza modificare lo script

Standard

Un singolo URL senza alcuno script

Standard

La stessa forma di carico indipendentemente dal framework

Standard

Per riutilizzare un CI o uno script locale senza modifiche

Nativo

Vengono rispettati gli stadi, le soglie o la forma dello script

Nativo

Scenari, soglie o esecutori del tasso di arrivo in k6

Nativo

Una Locust o un set di attività ponderato LoadTestShape

Nativo

I timer e i gruppi di thread JMeter vengono eseguiti esattamente come sono stati creati

Nativo

Per scalare il carico solo in multipli interi del carico dello script

Nativo

Multi-Region configurazione del traffico

Seleziona una o più regioni AWS per distribuire geograficamente il test di carico. Per ogni regione selezionata, configura:

Numero di attività

Il numero di contenitori (attività) che verranno lanciati nel cluster Fargate per lo scenario di test. Le attività aggiuntive non verranno create una volta che l'account avrà raggiunto il limite «La risorsa Fargate è stata raggiunta». Il numero di attività si applica a entrambe le modalità di forma del traffico. In modalità nativa è l'unico controllo del carico offerto dalla console, poiché ogni operazione esegue una copia completa dello script.

Concurrency (Simultaneità)

Il numero di utenti virtuali simultanei generati per attività. Il limite consigliato si basa sulle impostazioni predefinite di 2 vCPU per attività. La concorrenza è limitata dalla CPU e dalle risorse di memoria. Questo campo si applica solo alla modalità Standard. In modalità nativa, la console visualizza il valore di sola lettura «Definito da script» per ogni regione, poiché lo script imposta il proprio numero di utenti virtuali.

Determina il numero di utenti

Il numero di utenti che un contenitore può supportare per un test può essere determinato aumentando gradualmente il numero di utenti e monitorando le prestazioni in Amazon CloudWatch. Una volta osservato che le prestazioni di CPU e memoria si stanno avvicinando ai loro limiti, hai raggiunto il numero massimo di utenti che un container può supportare per quel test nella sua configurazione predefinita (2 vCPU e 4 GB di memoria).

Questa calibrazione imposta il valore di concorrenza, quindi si applica alla modalità Standard. I limiti del contenitore che stabilisce si applicano anche alla modalità nativa. Qui puoi aumentare o diminuire il carico dichiarato dallo script, invece di impostare il campo Concurrency.

Processo di calibrazione

Puoi iniziare a determinare i limiti di utenti simultanei per il tuo test utilizzando il seguente esempio:

  1. Crea un test con non più di 200 utenti.

  2. Durante l'esecuzione del test, monitora la CPU e la memoria utilizzando la CloudWatch console:

    1. Nel pannello di navigazione, in Container Insights, seleziona Performance Monitoring.

    2. Nella pagina di monitoraggio delle prestazioni, dal menu a discesa a sinistra, seleziona ECS Clusters.

    3. Dal menu a discesa a destra, seleziona il tuo cluster Amazon Elastic Container Service (Amazon ECS).

  3. Durante il monitoraggio, osserva la CPU e la memoria. Se la CPU non supera il 75% o la memoria non supera l'85% (ignora i picchi occasionali), puoi eseguire un altro test con un numero maggiore di utenti.

Ripetere i passaggi 1-3 se il test non ha superato i limiti delle risorse. Facoltativamente, è possibile aumentare le risorse del contenitore per consentire un numero maggiore di utenti simultanei. Tuttavia, ciò comporta un costo più elevato. Per informazioni dettagliate, consulta la Guida per gli sviluppatori.

Nota

Per risultati accurati, esegui un solo test alla volta per determinare i limiti di utenti simultanei. Tutti i test utilizzano lo stesso cluster e CloudWatch Container Insights aggrega i dati sulle prestazioni in base al cluster. Ciò fa sì che entrambi i test vengano segnalati contemporaneamente a CloudWatch Container Insights, il che si traduce in metriche di utilizzo delle risorse imprecise per un singolo test.

Per ulteriori informazioni sulla calibrazione degli utenti per motore, consulta Calibrating a Taurus Test nella documentazione. BlazeMeter

Nota

La soluzione mostra le informazioni sulla capacità disponibili per ciascuna regione, aiutandovi a pianificare la configurazione del test entro i limiti disponibili.

Tabella delle attività disponibili

La Tabella delle attività disponibili mostra la disponibilità delle risorse per ogni regione selezionata:

  • Regione: il nome della regione AWS.

  • vCPU per attività: il numero di CPU virtuali allocate a ciascuna attività (impostazione predefinita: 2).

  • Limite di attività DLT: il numero massimo di attività che possono essere create in base alla quota di vCPU Fargate on-demand del tuo account. I nuovi account hanno in genere una quota inferiore; verifica il limite attuale nella console Service Quotas e richiedi un aumento se necessario.

  • Attività DLT disponibili: il numero attuale di attività disponibili nella regione, calcolato come limite di attività DLT meno le vCPU già in uso eseguendo le attività di Fargate.

Per aumentare il numero di attività o vCPU disponibili per attività, consulta la Guida per gli sviluppatori.

Durata del test

Definisci per quanto tempo verrà eseguito il test di carico. La console mostra questa sezione solo in modalità Standard. In modalità nativa, lo script determina la durata del test, limitata dalla durata di sicurezza impostata nella Fase 2: Configurazione dello scenario.

Accelera

Il tempo necessario per raggiungere l'obiettivo di concorrenza. Il carico aumenta gradualmente da 0 al livello di concorrenza configurato in questo periodo.

Tenere premuto per

La durata necessaria per mantenere il carico target. Il test prosegue in piena concomitanza per questo periodo.

Fase 4: Revisione e creazione

Rivedi tutte le configurazioni prima di creare lo scenario di test. Verifica:

  • Impostazioni generali (nome, descrizione, pianificazione).

  • Configurazione dello scenario (tipo di test, endpoint o script).

  • Forma del traffico (modalità, attività, utenti, durata, regioni).

Dopo la revisione, scegli Crea per salvare lo scenario di test.

Gestione degli scenari di test

Dopo aver creato uno scenario di test, puoi:

  • Modifica: modifica la configurazione del test. Casi di utilizzo comune comprendono:

    • Perfezionamento della forma del traffico per ottenere la velocità di transazione desiderata.

  • Copia: duplica uno scenario di test esistente per creare varianti. Casi di utilizzo comune comprendono:

    • Aggiornamento degli endpoint o aggiunta headers/body di parametri.

    • Aggiungere o modificare script di test.

  • Elimina: rimuovi gli scenari di test che non ti servono più.