Testare i Web server: test di carico e stress test

Le performance di un sito web possono dipendere da svariati fattori come il server, i contenuti, l’asset, lo script, il traffico, i framework, il database, etc. quindi è difficile individuare immediatamente la fonte di alcune problematiche che compromettono metriche fondamentali per il posizionamento SEO del sito e per la sua visibilità online.

Sia prima che dopo la pubblicazione di un sito web è consigliabile fare dei test su quanto sviluppato, che siano in grado di fornire un quadro della performance del sito, individuando colli di bottiglia e problemi di usabilità, per intervenire e migliorare le prestazioni dove necessario.

Ci sono due tipologie di test delle prestazioni che si eseguono sui web server:

  • Test di carico, che hanno lo scopo di esaminare il comportamento del sistema in condizioni di carico normali, simulandolo. Attraverso questo si evidenzia la reattività, la stabilità, la scalabilità, l’affidabilità, la velocità e l’utilizzo delle risorse del software e dell’infrastruttura.
  • Stress test, che esaminano il comportamento del sistema in condizioni estreme fino a determinare la quantità massima di lavoro che un server è in grado di gestire senza che si rallentino i tempi di risposta. Si cercano perdite di memoria, rallentamenti, problemi di sicurezza e danneggiamento dei dati, osservando come si comporta e se si ripristina correttamente. La maggior parte dei siti web è soggetta a livelli di traffico abbastanza regolari ma potrebbero comunque presentarsi occasioni con carichi anomali.

Tools per i test

Esistono diversi tools con i quali eseguire i test, per i test di carico possiamo affidarci a:

  • Loader.io, strumento in cloud semplice da utilizzare e che permette di simulare carichi crescenti e attività diverse, anche su siti in sviluppo e aree riservate.
  • Locust, strumento versatile che ha come punto di forza la scalabilità, ovvero la possibilità di espansione potenzialmente infinita.
  • Apache JMeter, applicazione desktop open source, inizialmente creata per testare le applicazioni web, successivamente ha esteso i test a qualsiasi tipologia si software.

Mentre per gli stress test:

  • Apache Bench, open source di facile utilizzo e comprensione.
  • Siege, che può sottoporre a stress test un singolo URL con un numero definito di utenti o più URL in memoria e testarli contemporaneamente.
  • Funkload che permette di eseguire test su funzionalità, tempi di caricamento, performance, longevità e stress. Supporta inoltre i test sulle applicazioni web e mobile.

Le metriche e KPI

Scegliere le giuste metriche e KPI aiuta a valutare correttamente le prestazioni di un sistema, le più rilevanti sono:

  • Misurazione della scalabilità e delle prestazioni all’aumentare delle richieste http;
  • Tempo pagina necessario per recuperare tutte le informazioni in una pagina e pagine al secondo;
  • Throughput, dimensione dei dati di risposta al secondo;
  • Tempi di risposta dell’applicazione;
  • Hit time, tempo medio per recuperare un’immagine o una pagina;
  • Time To First Byte, tempo necessario per restituire il primo byte di dati o informazioni;
  • Connessioni non riuscite;
  • Time out, numero di richieste scadute;
  • Hit non riusciti, numero di tentativi falliti effettuati dal sistema (collegamenti interrotti o immagini non visualizzate);