Benchmark avanzati di una Web API con NBomber Guida passo-passo per simulare carico, utenti simultanei e scenari realistici in ambiente .NET

Benchmark avanzati di una Web API con NBomber

Realizzare un test comparativo di una Web API che abbiamo sviluppato è il primo passo verso un'ottimizzazione consapevole del proprio codice sorgente. Per questo motivo, qualche giorno fa abbiamo  pubblicato un articolo dedicato al benchmarking di una Web API con Postman, un utile strumento che può essere utilizzato per fornire alcune misurazioni rapide e utili in pochi passaggi.

Tuttavia, quando si parla di performance, misurare semplicemente il tempo di risposta di un singolo endpoint non basta: in scenari reali, le API devono sostenere carichi concorrenti, picchi di traffico, o rispondere a chiamate in sequenza con vincoli temporali molto stretti. In questi casi, strumenti come Postman o semplici script manuali non sono sufficienti.

NBomber è un potente strumento open-source per il load testing, scritto in .NET, che permette di simulare scenari complessi e raccogliere metriche dettagliate sulle performance delle tue Web API. È particolarmente adatto a sviluppatori e team che lavorano nel mondo .NET, ma supporta qualsiasi tipo di endpoint HTTP. In questo articolo metteremo a fuoco le principali funzionalità di NBomber e vedremo come è possibile utilizzarlo per creare dei benchmark più approfonditi sui nostri WebAPI endpoint.

Requisiti

  • Visual Studio o qualsiasi editor .NET compatibile (es. Rider, VS Code)
  • Un progetto  console .NET 6+
  • Pacchetto NuGet NBomber.Http
  • Un endpoint API da testare (es: https://localhost:5001/api/products)

#1. Creazione di un progetto console

Apri il terminale e crea un nuovo progetto console:

#2. Aggiunta di NBomber via NuGet

Aggiungi i pacchetti necessari:

#3. Scenario di test

Apri il file Program.cs e inserisci il seguente codice di base:

In questo esempio, NBomber eseguirà 10 richieste simultanee per 30 secondi, con 5 secondi di riscaldamento.

Parametri personalizzabili

  • copies: numero di utenti simulati
  • duration: durata totale del test
  • WithWarmUpDuration: tempo di preriscaldamento per escludere metriche iniziali instabili

#4. Esecuzione del benchmark

Lancia il test con:

Al termine dell’esecuzione, NBomber mostrerà un report dettagliato in console con:

  • Numero di richieste eseguite
  • Percentili (50th, 75th, 95th, 99th)
  • RPS (Requests per second)
  • Errori, timeout e altro

NBomber può anche generare automaticamente report in formato HTML e JSON.

#5. Esportazione dei risultati in HTML

Per salvare i risultati in un report HTML leggibile, modifica la configurazione del runner:

Troverai il report nella cartella /reports, pronto da condividere con il team o da integrare in pipeline CI/CD.

Cosa è possibile testare con NBomber

  • Performance sotto carico (stress test)
  • Scalabilità in presenza di utenti simultanei
  • Affidabilità di endpoint critici nel tempo
  • Resilienza in condizioni di errore o timeout

Conclusioni

NBomber è uno strumento potente, flessibile e pensato per scenari di performance testing realistici e ripetibili. È perfetto per chi lavora in ambienti .NET ma vuole testare qualsiasi API HTTP, grazie alla semplicità della sua sintassi e alla qualità dei report generati.

Se hai già effettuato test base con Postman e desideri approfondire, NBomber è il passo successivo ideale. E se non l'hai ancora fatto, ti consiglio di leggere anche la guida introduttiva: Benchmarking rapido di una Web API con Postman.

About Ryan

IT Project Manager, Web Interface Architect e Lead Developer di numerosi siti e servizi web ad alto traffico in Italia e in Europa. Dal 2010 si occupa anche della progettazione di App e giochi per dispositivi Android, iOS e Mobile Phone per conto di numerose società italiane. Microsoft MVP for Development Technologies dal 2018.

View all posts by Ryan

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *


Il periodo di verifica reCAPTCHA è scaduto. Ricaricare la pagina.

Questo sito utilizza Akismet per ridurre lo spam. Scopri come vengono elaborati i dati derivati dai commenti.