Devi testare una web API? Buone Pratiche, Strumenti e 6 Consigli prima di iniziare

testare una web apiAPI, web service e web API. In un recente articolo abbiamo parlato di API, acronimo di Application Programming Interface, interfaccia che un’applicazione offre per comunicare con altre applicazioni. API è una raccolta di funzioni software che possono essere eseguite da un’altra applicazione.

I web service sono omologhi alle API, hanno la stessa origine e si differenziano per specializzazione, operando solo su web. Quindi un web service fornisce dati su web ad altri servizi/applicazioni indipendentemente dal sistema operativo su cui questi girano e dal linguaggio di programmazione utilizzato.

Prima di testare una web API: qual è la differenza tra questa e un web service?

Qual è la differenza tra le API web e i servizi Web? Tutti i servizi web sono API, ma non tutte le API sono servizi web. Le web API e i servizi web sono spesso confusi l’uno con l’altro; tuttavia, le web API sono un’evoluzione dei servizi web in cui viene indicato come i componenti software dovrebbero interagire tra loro usando come intermediario il protocollo HTTP specifico del web. Il client non ha bisogno di sapere quale procedura chiamare sul server, cosa invece necessaria con un web service di cui bisogna conoscere gli endpoint. Utilizza invece una serie di comandi (chiamati “verbi”) che sono incorporati in HTTP e quando il comando arriva dall’altra parte, spetta al sistema di ricezione sapere cosa fare con esso.

Leggi anche Architettura REST: le pratiche di buona progettazione

Ad esempio, il verbo HTTP che viene in genere utilizzato per recuperare i dati è “GET”. Quando l’HTTP viene utilizzato per astrarre i sistemi l’uno dall’altro, i sistemi sono considerati più strettamente accoppiati (rispetto ai servizi web) e quindi l’intero sistema risulta più robusto. L’HTTP non è l’unico protocollo utilizzabile, ad esempio CoAP è un protocollo simile a HTTP che è comune a Internet of Things, ed è anche considerato come RESTful.

E’ quindi evidente che l’errore, nel caso di una web API risulti potenzialmente molto dannoso in quanto coinvolge la gestione della stessa applicazione, i server su cui è in esecuzione e i client che lo utilizzano. Vediamo quindi quali sono le buone pratiche e gli strumenti per testare una web API.

Come testare una web API: buone pratiche e strumenti

Il test di una web API è un test del software, quindi un test per verificare se la web API soddisfa le aspettative in termini di funzionalità, affidabilità, prestazioni e sicurezza.

Leggi anche Sai cos’è un web service? Eppure lo usi tutti i giorni

Vediamo qual è lo schema che riassume le varie tipologie di test che lo sviluppatore deve praticare per garantire la qualità del software prodotto. E’ importante sottolineare che ogni strumento serve per identificare e risolvere una particolare classe di problemi ed osservare il comportamento del software in esame sotto diversi punti di vista.

  • Unit test: per testare la funzionalità delle singole operazioni, ovvero del minimo componente di un’applicazione identificabile in modo autonomo, come ad esempio una singola funzione o una singola classe o un metodo.
  • Test funzionali: per testare la funzionalità e la cooperazione delle varie Unit in modo più ampio utilizzando il blocco dei risultati dello Unit test.
  • Test di carico: per testare funzionalità e prestazioni sotto carico.
  • Runtime / Error Detection: per monitorare un’applicazione per identificare problemi quali eccezioni e perdite di risorse.
  • Test di sicurezza: per garantire che l’implementazione della web API sia protetta da minacce esterne.
  • UI Test: viene eseguito per garantire che ogni aspetto dell’interfaccia utente funzioni come previsto.

Ogni tipologia di test può variare da completamente “manuale” ad automatico. Nel caso in cui si voglia ottenere la completa automazione del processo di test, lo sviluppo dei test case (cioè delle singole procedure di test) deve essere considerato parte integrante dell’attività di sviluppo. A tale fine esistono una miriade di framework sviluppati per il testing per ogni linguaggio di programmazione.

Leggi anche Web API marketplace, business del futuro?

Nel caso particolare di una web API il lavoro sarà svolto essenzialmente sul protocollo HTTP percorrendo i seguenti passi:

  • Prevedere l’invio e la verifica di tutti i metodi del protocollo HTTP: GET, POST, PUT, PATCH, DELETE e verificare se il valore di ritorno è basato sulla condizione di input. La risposta della web API deve essere verificata in base alla richiesta. Inoltre verificare se il sistema sta autenticando il risultato quando la web API sta aggiornando qualsiasi struttura dati e se la chiamata attiva qualche altro evento o richiede un’altra web API. Non tralasciare di verificare il comportamento della web API quando non vi è alcun valore di ritorno.
  • L’inserimento/modifica di variabili nelle request di tutti i metodi HTTP utilizzando vari tipi di sorgenti (testo, file, ecc.).
  • Essere in grado di estrarre valori dalle response di tutti i metodi HTTP.
  • Eseguire sequenze anche complesse di request e response includendo logica governata dai costrutti permessi dal linguaggio utilizzato (cicli do/while, cicli for e condizioni if/else).
  • Cercare di riprodurre fedelmente l’interazione con il client (web browser).

 

Testare una web API: quali sono i vantaggi

I test delle web API sono efficaci nel tempo rispetto ai test della GUI (dall’inglese Graphical User Interface). L’automazione dei test delle web API richiede meno codice in modo da fornire una risposta più rapida ed efficiente aiutando così a ridurre i costi di test. Con il test delle web API possiamo trovare bug minori prima del test della GUI che verranno eseguiti in genere alla fine del ciclo di sviluppo. Questi bug minori avranno un impatto molto più pesante durante il test della GUI se non rilevati precocemente. Quindi trovare quei bug nel test delle web API sarà conveniente per l’azienda. Sono inoltre indipendenti dal linguaggio di programmazione e possiamo testare le web API senza un’interfaccia utente, mentre nel test della GUI, è necessario attendere che l’applicazione sia disponibile per testare le funzionalità principali.

 

Testare una web API: criticità e aspetti da tenere presente

Alcuni aspetti da tenere ben presenti durante la progettazione di test per le web API riguardano:

  • la selezione dei parametri di input corretti e delle loro combinazioni
  • la classificazione dei parametri coerente con la natura dellìapplicazione
  • costruzione di una corretta sequenza delle chiamate in modo da garantire una copertura completa dei casi
  • verifica e convalida degli output
  • difficoltà nel fornire valori validi di input per l’assenza della GUI. In questo caso, come anche nel caso in cui non siano soddisfatte completamente le dipendenze del modulo in esame, ci vengono in aiuto i Mock Object che nello Unit test, e soprattutto nel testing in isolamento, ci permettono di simulare in modo controllato un oggetto reale.

I problemi osservati durante l’esecuzione del test delle web API sono:

  • stress, prestazioni e problemi di sicurezza
  • funzionalità duplicata o mancante
  • problemi di affidabilità legata ad esempio all’hardware
  • gestione degli errori inadeguata
  • problemi multi-thread
  • errori impropri, come ad esempio inserimenti di meccanismi di sleeping “a occhio” in attesa che la procedura sia completata

 

Vuoi testare una web API? 6 Consigli prima di iniziare

  • effettua tutti i test per i risultati attesi
  • aggiungi stress al sistema prevedendo una serie di test di carico
  • cerca di raggruppare i test per categoria
  • creare casi di test con tutte le possibili combinazioni di ingressi per una copertura completa
  • dai priorità alle chiamate a funzioni per semplificare il test
  • automatizza ovunque sia possibile

Guest post a cura di Alessandro Testa

Ti potrebbe interessare anche…

“Il futuro della programmazione? Sviluppare App”

“Il futuro della programmazione? Sviluppare App”

Sviluppare app è l'attività che ritiene primaria nel prossimo futuro. Invece sul come sviluppare app mantiene il massimo riserbo, ma Davide Claridi, programmatore con esperienze anche in design e grafica svela importanti informazioni per tutti quei futuri colleghi...

Condividere File con Dropbox: Principianti

Condividere File con Dropbox: Principianti

Conosci Dropbox? Si tratta di un servizio di file hosting su cloud, ovvero uno spazio virtuale e sincronizzato dove poter salvare (e lavorare) i tuoi documenti, indipendentemente dal dispositivo utilizzato. In questo articolo scopriamo insieme come condividere file...

Zero Crisi per il Programmatore freelance

Zero Crisi per il Programmatore freelance

In questo periodo di incertezze anche lavorative dovute all'avvento del Covid-19, ci sono professionalità che hanno retto bene all'urto della crisi. Una di queste? Il programmatore freelance. Vediamo nel dettaglio come e perché. Non c'è crisi per il programmatore...

Commenti

0 commenti

Invia un commento

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

Cos’è AddLance?

AddLance è un servizio gratuito che ti permette di trovare l’aiuto che cerchi. Hai bisogno di un logo, di un sito web, di testi, traduzioni, consulenze legali o altro? Su AddLance ottieni gratis i contatti dei migliori professionisti italiani.

Iscriviti alla Newsletter

Share This