Quando si implementa un servizio di web API, siano esse RESTful o RESTless, in progetti piuttosto piccoli si può pensare di accontentarsi di qualche semplice test "manuale". In seconda battuta, si possono sfruttare curl ed un po' di shell scripting per implementare alcuni test più specifici e completi.
Tuttavia, è facile convincersi che anche quest'ultima soluzione pecca in termini di manutenibilità. Aumentando la complessità delle nostre API, è infatti facile arrivare a dover scrivere script sempre più complicati. È quindi decisamente preferibile utilizzare strumenti che automatizzino il testing, magari scrivendoli durante lo sviluppo dell'applicazione.
Il problema irrisolto ha però a che fare con il load testing, ovvero il processo che ci permette di verificare la capacità di carico delle nostre API (e quindi, come diretta conseguenza, della nostra infrastruttura, web server compreso). Per questa necessità, esiste un servizio particolarmente utile e facilmente accessibile online: Loader.io.
Loader.io ci permette di effettuare test di carico direttamente sfruttando una interfaccia web. Accedendo al sito di Loader.io ed iscrivendosi, è possibile scegliere tra due piani: uno gratuito e limitato (è possibile testare un solo host, per non più di un minuto, e con non più di 2 URL per volta), ed uno a pagamento, senza grosse limitazioni.
Una volta ottenute le credenziali e verificato l'account, è possibile aggiungere un nuovo host su cui effettueremo i test di carico veri e propri.
Ci verrà quindi chiesto di aggiungere alcuni file nella directory principale dell'host, in modo da verificare la nostra paternità dell'host ed effettuare i test evitando di saturare la banda di qualche altro malcapitato server.
Fatto ciò, non resta che sfruttare l'interfaccia intuitiva di Loader.io per creare un nuovo test. Sarà possibile specificare parametri come il numero di client da utilizzare, la durata del test, e tutti ciò che riguarda le richieste HTTP da effettuare (oltre ad URL e metodo, si possono specificare anche alcuni header della richiesta ed aggiungere parametri al body). È anche possibile sfruttare il contenuto della risposta di una richiesta, memorizzandolo in una variabile da utilizzare nella richiesta successiva.
Una volta creato il test, è possibile lanciarlo. Al termine, verrà generato un report interattivo con i risultati del test, che include (tra le altre cose) anche i tempi di risposta del server e gli eventuali errori HTTP generati.
Non resta che provare questo tool e sfruttarlo al meglio per i nostri progetti (presenti e futuri).