Test di carico API con K6

Feb 27 2023
Il test di carico API è il processo di simulazione del traffico utente verso un endpoint API per misurarne le prestazioni e la capacità di gestire un volume elevato di richieste. Lo scopo del test di carico di un'API è rilevare problemi di prestazioni, ad esempio tempi di risposta lenti, tassi di errore elevati o altri problemi che potrebbero influire sull'esperienza dell'utente.

Il test di carico API è il processo di simulazione del traffico utente verso un endpoint API per misurarne le prestazioni e la capacità di gestire un volume elevato di richieste. Lo scopo del test di carico di un'API è rilevare problemi di prestazioni, ad esempio tempi di risposta lenti, tassi di errore elevati o altri problemi che potrebbero influire sull'esperienza dell'utente.

Per eseguire il test di carico di un'API, è necessario inviare un numero elevato di richieste all'endpoint API utilizzando uno strumento o un framework appositamente progettato per questo scopo. Queste richieste sono in genere progettate per simulare una gamma di comportamenti degli utenti, incluse richieste simultanee, diversi tipi di richieste e diverse dimensioni del payload. Le prestazioni e la scalabilità dell'endpoint vengono determinate analizzando le risposte dall'API in diverse condizioni di carico.

La stabilità e l'affidabilità di un'applicazione Web che si basa su un'API possono essere garantite dai test di carico. Eseguendo i test di carico, gli ingegneri del software e gli amministratori di sistema possono identificare potenziali problemi e ottimizzare l'API per gestire volumi di traffico elevati. Assicura che i consumatori dell'API ricevano un'esperienza utente coerente e reattiva.

Diversi tipi di test di carico API

Esistono diversi tipi di test che possono essere utilizzati per valutare le prestazioni di un endpoint API:

  1. Test delle prestazioni : possiamo utilizzare questo tipo di test per misurare il tempo di risposta dell'API in diverse condizioni di carico. L'obiettivo è identificare la velocità con cui l'API può elaborare e rispondere alle richieste.
  2. Stress test : utilizziamo lo stress test per testare la capacità di un'API di gestire un grande volume di richieste. L'obiettivo è identificare la capacità massima dell'API e come si comporta quando raggiunge i suoi limiti.
  3. Spike Test : utilizziamo gli spike test per valutare la capacità dell'API di gestire improvvisi picchi di traffico. Inoltre, può aiutare a identificare il comportamento dell'API quando viene colpita da picchi di traffico imprevisti.
  4. Test di resistenza : utilizziamo i test di resistenza per valutare le prestazioni dell'API in condizioni di carico sostenuto per un periodo prolungato. L'obiettivo è identificare eventuali riduzioni delle prestazioni o perdite di memoria che possono verificarsi nel tempo.
  5. Test del volume : utilizziamo il test del volume per valutare le prestazioni dell'API con un volume specifico di richieste. L'obiettivo è determinare il numero massimo di richieste che l'API può gestire mantenendo livelli di prestazioni accettabili.

K6

Per questo tutorial, useremo K6 . È un potente strumento open source progettato per testare il carico di applicazioni Web e API. I ragazzi di Grafana Labs l'hanno scritto in Go e ha un moderno linguaggio di scripting basato su JavaScript, che semplifica la scrittura e la manutenzione degli script di test. Inoltre, offre funzionalità avanzate, tra cui il supporto per i protocolli HTTP/1.1, HTTP/2, WebSocket e gRPC e l'integrazione con i più diffusi strumenti DevOps come Grafana , InfluxDB e Prometheus .

L'interfaccia intuitiva di K6, le potenti funzionalità di scripting e l'integrazione con vari strumenti lo rendono una scelta ideale per ingegneri del software e amministratori di sistema che desiderano testare il carico delle proprie API in modo efficiente ed efficace.

Installa pacchetto

npm install k6

Dopo aver installato il pacchetto K6 NPM , puoi salvare il codice JavaScript in un file, ad esempio, jokes_api_load_test.jse quindi eseguire il seguente comando per eseguire il test:

k6 run --vus 100 --duration 4m jokes_api_load_test.js

Il test di carico comprende cinque diversi tipi di test:

  1. Test delle prestazioni : questo test è stato superato con un codice di stato di 200.
  2. Stress Test : Questo test ha avuto esito negativo con un codice di stato di 200. Il test è stato eseguito con 300 utenti virtuali che hanno completato con successo la richiesta, ma 9700 utenti virtuali hanno fallito.
  3. Spike Test : Questo test ha avuto esito negativo con un codice di stato di 200. Il test è stato eseguito con 100 utenti virtuali, ma nessuno di loro è stato in grado di completare con successo la richiesta.
  4. Test di resistenza : questo test è fallito con un codice di stato di 200. Il test è stato eseguito con 100 utenti virtuali, con 100 che hanno completato la richiesta e 9900 che hanno fallito.
  5. Test del volume : questo test ha avuto esito negativo con un codice di stato di 200. Il test è stato eseguito con 347 utenti virtuali, con 40898 errori e solo 347 riusciti.

K6 ha eseguito il test con 100 utenti virtuali e anche il numero massimo di utenti virtuali era 100. Pertanto, la vus_maxmetrica rappresenta il numero massimo di utenti virtuali durante il test.

Punti chiave

Ecco come possiamo utilizzare i risultati del test di carico API per migliorare le prestazioni e la stabilità dell'endpoint API:

  1. Migliora la gestione degli errori : l'elevata percentuale di richieste HTTP non riuscite indica che potrebbero esserci problemi con la gestione degli errori nell'endpoint API. Identificare e affrontare questi problemi può aiutare a migliorare la stabilità dell'endpoint.
  2. Ottimizzazione delle prestazioni : la durata media della richiesta HTTP di 236,7 ms è relativamente lenta. Potrebbe essere dovuto a query di database inefficienti o comunicazioni di rete lente. Per migliorare le prestazioni, può essere utile rivedere e ottimizzare il codice, le query e altre risorse coinvolte nella richiesta.
  3. Scalare l'infrastruttura : i test indicano anche che l'endpoint potrebbe aver bisogno di aiuto per gestire grandi volumi di traffico. Il ridimensionamento dell'infrastruttura, ad esempio aumentando il numero di server o utilizzando bilanciatori di carico, può aiutare a garantire che l'endpoint possa gestire volumi di traffico più elevati senza rallentamenti o arresti anomali.
  4. Migliora i messaggi di errore : i test falliti possono aiutare a identificare errori comuni, che possiamo utilizzare per migliorare i messaggi di errore per l'endpoint API. Messaggi di errore migliori possono aiutare gli ingegneri del software a identificare e risolvere i problemi quando si verificano rapidamente.
  5. Aumenta la copertura del test : i diversi tipi di test utilizzati nel test di carico possono aiutare a identificare le aree dell'endpoint API che necessitano di ulteriori test. Inoltre, l'aumento della copertura dei test può aiutare a garantire che l'endpoint funzioni correttamente e funzioni bene in diversi tipi di traffico utente e scenari.

Continua a ripetere, continua a spedire e continua ad aiutare gli utenti finali.

— — —

*** Lasciami un se l'hai trovato utile o condividi la tua opinione nel commento.