Glossario · Performance
Load testing (test di carico)
In inglese: Load testing
Detto anche: test di carico, load test, prova di carico
Definizione
Test di performance che sottopone un sistema al traffico reale previsto per verificare tempi di risposta, tasso di errore e throughput rispetto a obiettivi concordati.
Il load testing (test di carico) sottopone un sistema al traffico che ti aspetti davvero, di solito il picco normale, e misura come si comporta: percentili di latenza, tasso di errore, throughput e utilizzo delle risorse. La domanda a cui risponde è “rispetta i suoi obiettivi di performance con il carico che abbiamo pianificato?”. Non si tratta di rompere il sistema: quello è lo stress testing.
Esempio (k6)
import http from 'k6/http';
import { check, sleep } from 'k6';
export const options = {
stages: [
{ duration: '2m', target: 100 }, // ramp up to 100 virtual users
{ duration: '10m', target: 100 }, // hold at expected peak
{ duration: '1m', target: 0 }, // ramp down
],
thresholds: {
http_req_duration: ['p(95)<500', 'p(99)<1200'],
http_req_failed: ['rate<0.01'],
},
};
export default function () {
const res = http.get('https://staging.example.com/api/products');
check(res, { 'status is 200': (r) => r.status === 200 });
sleep(1); // think time between iterations
}
Se una delle due soglie viene superata, k6 termina con un codice di uscita diverso da zero, quindi lo stesso script può fare da gate nella CI.
Load, stress, soak e spike
| Tipo | Profilo di carico | Domanda a cui risponde |
|---|---|---|
| Load | Picco previsto, mantenuto costante | Rispettiamo gli obiettivi al picco normale? |
| Stress | Crescente oltre il previsto | Dove e come si rompe, e si riprende? |
| Soak | Carico normale per ore | Peggiora nel tempo (memory leak, esaurimento dei pool)? |
| Spike | Salto improvviso, poi calo | Sopravvive a un picco improvviso e torna a scalare verso il basso? |
Come farlo bene
- Modella il traffico reale. Usa il mix di endpoint, dimensioni dei payload e think time che vedi negli analytics di produzione, non un solo URL martellato in un ciclo.
- Usa un ambiente simile alla produzione. I risultati di una macchina di staging sottodimensionata ti parlano solo di quella macchina.
- Giudica con i percentili, non con le medie. Una media nasconde la coda lenta di cui gli utenti si lamentano davvero.
- Osserva anche il lato server. CPU, memoria, connessioni al database e profondità delle code spiegano perché la latenza si è spostata.
- Concorda prima gli obiettivi. Senza un obiettivo esplicito come “p95 sotto i 500 ms a 200 richieste al secondo”, un test di carico produce numeri ma nessun verdetto.