Tutorial sui test API: una guida completa per i principianti

Questo tutorial approfondito sui test API spiega tutto sui test API, sui servizi Web e su come introdurre i test API nella vostra organizzazione:

Questo tutorial introduttivo fornisce una visione approfondita del testing delle API, del concetto di test shift-left e dei servizi web.

Concetti come API Web, come funziona l'API (con esempi reali) e come si differenzia dai servizi Web sono ben spiegati con esempi in questo tutorial.

Elenco di tutorial sul test API

Tutorial #1: Tutorial sui test API: una guida completa per i principianti

Tutorial #2: Tutorial sui servizi web: componenti, architettura, tipi ed esempi

Tutorial #3: Le 35 migliori domande di intervista su ASP.Net e API Web con le relative risposte

Tutorial #4: Esercitazione su POSTMAN: Test API con POSTMAN

Tutorial #5: Test dei servizi web con il client HTTP Apache

Panoramica delle esercitazioni di questa serie di test API

Tutorial # Cosa imparerete
Tutorial_#1: Tutorial sui test API: una guida completa per i principianti

Questo tutorial approfondito sul test delle API vi spiegherà tutto sul test delle API e sui servizi Web in dettaglio e vi spiegherà anche come introdurre il test delle API nella vostra organizzazione.

Tutorial_#2: Tutorial sui servizi web: componenti, architettura, tipi ed esempi

Questo tutorial sui servizi Web spiega l'architettura, i tipi e i componenti dei servizi Web, oltre a importanti terminologie e alle differenze tra SOAP e REST.

Tutorial_#3: Le 35 migliori domande di intervista su ASP.Net e API Web con le relative risposte

In questo tutorial è possibile esplorare l'elenco delle domande più frequenti di ASP.Net e Web API con risposte ed esempi per principianti e professionisti esperti.

Tutorial_#4: Esercitazione su POSTMAN: Test API con POSTMAN

Questo tutorial spiega passo dopo passo il test delle API con POSTMAN, le basi di POSTMAN, i suoi componenti e gli esempi di richiesta e risposta in termini semplici per una facile comprensione.

Tutorial_#5: Test dei servizi web con il client HTTP Apache

Questa esercitazione sulle API riguarda l'esecuzione di varie operazioni CRUD sui servizi Web e il test dei servizi Web utilizzando il client HTTP di Apache.

Esercitazione sui test API

Questa sezione vi aiuterà a ottenere una comprensione di base dei servizi Web e delle API Web che, a sua volta, vi sarà utile per comprendere i concetti principali delle prossime esercitazioni di questa serie di test API.

L'API (Application Programming Interface) è un insieme di tutte le procedure e le funzioni che ci permettono di creare un'applicazione accedendo ai dati o alle caratteristiche del sistema operativo o delle piattaforme. Il test di tali procedure è noto come API Testing.

Test di spostamento a sinistra

Uno dei tipi di test più importanti che vengono richiesti oggi nei colloqui per il test delle API è lo Shift Left Testing. Questo tipo di test viene praticato in quasi tutti i progetti che seguono una metodologia Agile.

Prima dell'introduzione dello Shift Left Testing, il collaudo del software avveniva solo dopo il completamento della codifica e la consegna del codice ai tester. Questa pratica portava alla fretta dell'ultimo minuto per rispettare la scadenza e ostacolava in larga misura la qualità del prodotto.

A parte questo, l'impegno profuso (quando i difetti venivano segnalati nell'ultima fase prima della produzione) era enorme, poiché gli sviluppatori dovevano ripercorrere da capo sia la fase di progettazione che quella di codifica.

Ciclo di vita dello sviluppo del software (SDLC) prima del test Shift Left

Il flusso SDLC tradizionale era: requisiti -> progettazione -> codifica -> test.

Svantaggi dei test tradizionali

  • Il collaudo è all'estrema destra. Quando un bug viene identificato all'ultimo minuto, si devono sostenere molti costi.
  • Il tempo impiegato per risolvere il bug e per testarlo nuovamente prima di promuoverlo in produzione è enorme.

Da qui è nata l'idea di spostare la fase di test a sinistra, dando così vita a Shift Left Testing.

Lettura consigliata => Test a sinistra: un mantra segreto per il successo del software

Fasi del test di spostamento a sinistra

Il Left Shift Testing ha portato a una migrazione di successo dal rilevamento dei difetti alla prevenzione dei difetti, aiutando inoltre il software a fallire rapidamente e a risolvere tutti i difetti al più presto.

API web

In termini generali, un'API Web può essere definita come qualcosa che prende la richiesta da un sistema client a un server Web e rimanda la risposta da un server Web a un computer client.

Come funziona un'API?

Prendiamo uno scenario molto comune: la prenotazione di un volo su www.makemytrip.com, un servizio di viaggi online che aggrega informazioni da più compagnie aeree. Quando si prenota un volo, si inseriscono informazioni come la data di viaggio/ritorno, la classe, ecc. e si clicca su cerca.

In questo caso, l'applicazione interagisce con le API di più compagnie aeree e consente di accedere ai dati della compagnia aerea.

Un altro esempio è www.trivago.com che confronta ed elenca i prezzi, la disponibilità, ecc. di diversi hotel di una determinata città. Questo sito web comunica con le API di diversi hotel per accedere al database ed elencare i prezzi e la disponibilità dal loro sito web.

Pertanto, un'API Web può essere definita come "un'interfaccia che facilita la comunicazione tra un computer client e un server Web".

Servizi web

I servizi Web sono (come le API Web) i servizi che servono da una macchina all'altra, ma la differenza principale tra API e servizi Web è che i servizi Web utilizzano una rete.

È possibile affermare che tutti i servizi Web sono API Web, ma che tutte le API Web non sono servizi Web (come spiegato nell'ultima parte dell'articolo). Pertanto, i servizi Web sono un sottoinsieme delle API Web. Per saperne di più su API Web e servizi Web, consultare il diagramma seguente.

API Web vs Servizi Web

Servizi Web vs API Web

Sia le API Web che i servizi Web vengono utilizzati per facilitare la comunicazione tra il client e il server. La differenza principale sta solo nel modo in cui comunicano.

Ognuno di essi richiede un corpo della richiesta accettabile in una lingua specifica, le loro differenze nel fornire una connessione sicura, la loro velocità di comunicazione al server e di risposta al client, ecc.

Di seguito sono elencate le differenze tra servizi Web e API Web.

Servizio Web

  • I servizi Web utilizzano generalmente il linguaggio XML (Extensible Markup Language), quindi sono più sicuri.
  • I servizi Web sono più sicuri in quanto sia i servizi Web che le API forniscono SSL (Secure Socket Layer) durante la trasmissione dei dati, ma anche WSS (Web Services Security).
  • Web Service è un sottoinsieme di Web API. Ad esempio, I servizi Web si basano solo su tre stili di utilizzo, ossia SOAP, REST e XML-RPC.
  • I servizi Web hanno sempre bisogno di una rete per funzionare.
  • I servizi Web supportano "Un codice per diverse applicazioni", il che significa che viene scritto un codice più generico per diverse applicazioni.

API web

  • Un'API Web utilizza generalmente JSON (JavaScript Object Notation), il che significa che l'API Web è più veloce.
  • L'API Web è più veloce perché JSON è leggero, a differenza di XML.
  • Le API Web sono l'insieme dei servizi Web. Ad esempio, Tutti e tre gli stili di servizi Web sono presenti anche nell'API Web, ma a parte questo, utilizza altri stili come JSON - RPC.
  • Le API Web non richiedono necessariamente una rete per funzionare.
  • Le API Web possono supportare o meno l'interoperabilità a seconda della natura del sistema o dell'applicazione.

Introduzione del test API nella vostra organizzazione

Nella vita di tutti i giorni, tutti noi siamo abituati a interagire con le applicazioni tramite API, ma non pensiamo nemmeno ai processi di back-end che guidano le funzionalità sottostanti.

Ad esempio, Consideriamo che state sfogliando i prodotti su Amazon.com e vedete un prodotto/un'offerta che vi piace molto e che volete condividere con la vostra rete Facebook.

Nel momento in cui si fa clic sull'icona di Facebook nella sezione di condivisione della pagina e si inseriscono le credenziali del proprio account Facebook per condividere, si interagisce con un'API che collega senza soluzione di continuità il sito web di Amazon a Facebook.

L'attenzione si sposta sul test API

Prima di approfondire il tema del testing delle API, analizziamo le ragioni per cui le applicazioni basate sulle API hanno guadagnato popolarità negli ultimi tempi.

Le ragioni per cui le aziende stanno passando a prodotti e applicazioni basati su API sono molteplici e alcune di esse sono elencate di seguito.

#1) Le applicazioni basate su API sono più scalabili rispetto alle applicazioni/software tradizionali: il tasso di sviluppo del codice è più veloce e la stessa API può servire un numero maggiore di richieste senza grandi modifiche al codice o all'infrastruttura.

#2) I team di sviluppo non devono ricominciare a codificare da zero ogni volta che iniziano a lavorare allo sviluppo di una funzione o di un'applicazione. Le API spesso riutilizzano funzioni, librerie, stored procedure ecc. esistenti e ripetibili e quindi questo processo può renderli complessivamente più produttivi.

Ad esempio, Se siete uno sviluppatore che lavora a un sito di e-commerce e volete aggiungere Amazon come processore di pagamento, non dovete scrivere il codice da zero.

Tutto ciò che dovete fare è impostare l'integrazione tra il vostro sito web e l'API di Amazon utilizzando le chiavi di integrazione e chiamare l'API di Amazon per elaborare i pagamenti durante il checkout.

#3) Le API consentono una facile integrazione con gli altri sistemi sia per le applicazioni standalone supportate che per i prodotti software basati su API.

Ad esempio Consideriamo che vogliate inviare una spedizione da Toronto a New York. Andate online, navigate su un noto sito web di trasporto o logistica e inserite le informazioni richieste.

Dopo aver fornito le informazioni obbligatorie, quando si fa clic sul pulsante Ottieni tariffe - nel back-end, questo sito web di logistica potrebbe connettersi con diverse API e applicazioni di vettori e fornitori di servizi per ottenere le tariffe dinamiche per la combinazione di località dall'origine alla destinazione.

Spettro completo di test API

Il test delle API non si limita all'invio di una richiesta all'API e all'analisi della sola risposta per verificarne la correttezza. Le API devono essere testate per verificarne le prestazioni sotto diversi carichi per individuare eventuali vulnerabilità.

Discutiamone in dettaglio.

(i) Test funzionali

Il test funzionale può essere un compito impegnativo a causa della mancanza di un'interfaccia GUI.

Vediamo come l'approccio al test funzionale per le API sia diverso da quello per le applicazioni basate su GUI e discuteremo anche alcuni esempi al riguardo.

a) La differenza più evidente è che non c'è un'interfaccia grafica con cui interagire. I tester che di solito eseguono test funzionali basati sull'interfaccia grafica trovano un po' più difficile passare ai test di applicazioni non basate sull'interfaccia grafica, rispetto a chi ha già familiarità con essa.

Inizialmente, ancor prima di iniziare a testare l'API, è necessario testare e verificare il processo di autenticazione stesso. Il metodo di autenticazione varia da un'API all'altra e prevede una sorta di chiave o token per l'autenticazione.

Se non si riesce a connettersi con successo all'API, non è possibile procedere con ulteriori test. Questo processo può essere considerato paragonabile all'autenticazione dell'utente nelle applicazioni standard, dove è necessario disporre di credenziali valide per accedere e utilizzare l'applicazione.

b) La verifica della validazione dei campi o dei dati di input è molto importante durante il test delle API. Se fosse disponibile un'interfaccia basata su un modulo (GUI), la validazione dei campi potrebbe essere implementata nel front-end o nel back-end, assicurando così che l'utente non possa inserire valori di campo non validi.

Ad esempio, Se un'applicazione richiede che il formato della data sia GG/MM/AAAA, possiamo applicare questa convalida al modulo che raccoglie le informazioni per garantire che l'applicazione riceva ed elabori una data valida.

Dobbiamo assicurarci che l'API sia ben scritta e che sia in grado di applicare tutte queste convalide, di distinguere tra dati validi e non validi e di restituire all'utente finale il codice di stato e il messaggio di errore di convalida attraverso una risposta.

c) Verificare la correttezza delle risposte dell'API per quanto riguarda le risposte valide e non valide è davvero cruciale. Se si riceve un codice di stato 200 (che significa tutto ok) come risposta dall'API di test, ma se il testo della risposta dice che è stato riscontrato un errore, si tratta di un difetto.

Inoltre, se il messaggio di errore stesso non è corretto, può essere molto fuorviante per il cliente finale che sta cercando di integrarsi con questa API.

Nella schermata sottostante, l'utente ha inserito un peso non valido, superiore ai 2267 kg accettabili. L'API risponde con il codice di stato e il messaggio di errore. Tuttavia, il messaggio di errore indica erroneamente le unità di peso come libbre anziché KG. Questo è un difetto che può confondere il cliente finale.

(ii) Test di carico e prestazioni

Le API sono pensate per essere scalabili.

Questo, a sua volta, rende essenziali i test di carico e di prestazione, soprattutto se si prevede che il sistema progettato debba gestire migliaia di richieste al minuto o all'ora, a seconda dei requisiti. L'esecuzione di routine di test di carico e di prestazione sull'API può aiutare ad analizzare le prestazioni, i picchi di carico e il punto di rottura.

Questi dati sono utili quando si pianifica la scalabilità di un'applicazione. Avere a disposizione queste informazioni aiuta a supportare le decisioni e la pianificazione, soprattutto se l'organizzazione prevede di aggiungere altri clienti, il che significa un maggior numero di richieste in entrata.

Come introdurre il test delle API nella vostra organizzazione

Il processo di introduzione del testing delle API in qualsiasi organizzazione è simile a quello utilizzato per l'implementazione o il roll-out di qualsiasi altro strumento e framework di testing.

La tabella seguente riassume le fasi principali e i risultati attesi per ciascuna fase.

Fase Passo Risultato atteso
Selezione dello strumento Raccogliere i requisiti e identificare i vincoli

Comprendere i requisiti per la ricerca sul mercato di uno strumento di test API appropriato.

Ad esempio

Che tipo di API si sta testando: SOAP o REST?

Dobbiamo assumere un tester per questo ruolo o formare i tester esistenti?

Che tipo di test verranno eseguiti: funzionali, di prestazione, ecc.

Qual è il budget per l'implementazione?

Valutare gli strumenti disponibili Confrontate gli strumenti disponibili e selezionate 1 o 2 strumenti che soddisfino al meglio i requisiti.
Prova di concetto Implementare un sottoinsieme di test con lo strumento selezionato.

Presentare i risultati alle parti interessate.

Finalizzare lo strumento da implementare.

Attuazione Per iniziare A seconda dello strumento scelto, è necessario installare lo strumento richiesto su un PC, una macchina virtuale o un server.

Se lo strumento scelto è basato su abbonamento, creare gli account di team necessari.

Formare il team, se necessario.

Andare avanti Creare test

Eseguire i test

Segnalazione dei difetti

Sfide comuni e modi per mitigarle

Discutiamo alcune delle sfide comuni che i team QA devono affrontare quando cercano di implementare un framework di test API in un'organizzazione.

#1) Scegliere lo strumento giusto

La selezione dello strumento giusto per il lavoro è la sfida più comune. Esistono diversi strumenti di test API disponibili sul mercato.

Può sembrare molto attraente implementare l'ultimo e più costoso strumento disponibile sul mercato, ma se non porta i risultati desiderati, allora quello strumento non serve a nulla.

Pertanto, scegliete sempre lo strumento che risponde ai requisiti "indispensabili" in base alle vostre esigenze organizzative.

Ecco un esempio di matrice di valutazione degli strumenti per gli strumenti API disponibili

Strumento Prezzi Note
UI del sapone Versione gratuita disponibile per SoapUI Open Source (test funzionale) * REST, SOAP e altri protocolli API e IoT popolari.

* Incluso nella versione gratuita

Test SOAP e REST ad hoc

Asserzione del messaggio

Creazione di test drag & drop

Registri dei test

Configurazione del test

Test dalle registrazioni

Unità di reporting.

* L'elenco completo delle caratteristiche è disponibile sul sito Web.

Postino Disponibile l'app gratuita Postino * Più utilizzato per REST.

* Le caratteristiche sono disponibili sul loro sito web.

Parasoft Si tratta di uno strumento a pagamento, che richiede l'acquisto di una licenza e l'installazione prima di poter essere utilizzato. * Test API completi: test funzionali, di carico e di sicurezza, gestione dei dati di test.
vREST In base al numero di utenti * Test automatizzati delle API REST.

* Registrazione e riproduzione.

* Rimuove la dipendenza da frontend e backend utilizzando le API mock.

* Convalida della risposta potente.

* Funziona per le applicazioni di prova distribuite su localhost/intranet/internet.

* Integrazione JIRA, integrazione Jenkins Importazioni da Swagger, Postman.

HttpMaster Edizione Express: da scaricare gratuitamente

Versione professionale: in base al numero di utenti

* Aiuta a testare i siti web e le API.

* Altre caratteristiche includono la possibilità di definire parametri globali e di creare controlli per la convalida delle risposte ai dati, utilizzando l'ampia serie di tipi di convalida supportati.

Runscope In base al numero di utenti e ai tipi di piano

* Per il monitoraggio e il test delle API.

* Può essere utilizzato per la convalida dei dati per garantire che vengano restituiti dati corretti.

* Contiene funzioni di monitoraggio e notifica in caso di fallimento di una transazione API (se la vostra applicazione richiede la convalida di un pagamento, questo strumento può rivelarsi una buona scelta).

CaricaFuoco In base al numero di utenti e ai tipi di piano * Può essere utilizzato per i test di carico delle API: consente di eseguire alcuni test per scoprire il numero di utenti che un'API può supportare.

* Semplice da usare: consente di eseguire i test all'interno del browser.

PingAPI Gratuito per 1 progetto (1.000 richieste) * Vantaggioso per il test e il monitoraggio automatizzato delle API.

#2) Specifiche di test mancanti

Per testare efficacemente un'applicazione, i tester devono conoscere i risultati attesi. Spesso questa è una sfida, perché per conoscere i risultati attesi è necessario avere requisiti chiari e precisi, cosa che non avviene.

Ad esempio , considerare i requisiti indicati di seguito:

"L'applicazione deve accettare solo una data di spedizione valida e tutti i requisiti non validi devono essere rifiutati".

Questi requisiti mancano di dettagli chiave e sono molto ambigui: come si definisce una data valida? E il formato? Si restituisce un messaggio di rifiuto all'utente finale e così via?

Esempio di requisiti chiari:

1) L'applicazione deve accettare solo una data di spedizione valida.

La data di spedizione è considerata valida se è

  • Non in passato
  • Maggiore o uguale alla data odierna
  • È nel formato accettabile: GG/MM/AAAA

2)

Codice di stato della risposta = 200

Messaggio: OK

3) La data di spedizione che non soddisfa i criteri di cui sopra deve essere considerata non valida. Se un cliente invia una data di spedizione non valida, deve rispondere con i seguenti messaggi di errore:

3.1

Codice di stato della risposta NON 200

Errore: la data di spedizione fornita non è valida; assicurarsi che la data sia nel formato GG/MM/AAAA.

3.2

Codice di stato della risposta NON 200

Errore: la data di spedizione prevista è precedente

#3) Curva di apprendimento

Come accennato in precedenza, l'approccio per il test delle API è diverso rispetto a quello seguito per il test delle applicazioni basate su GUI.

Se si assumono specialisti interni o consulenti per il test API, la curva di apprendimento dell'approccio al test API o dello strumento di test API può essere minima. Qualsiasi curva di apprendimento, in questo caso, sarebbe associata all'acquisizione della conoscenza del prodotto o dell'applicazione.

Se un membro del team esistente viene incaricato di imparare il test API, a seconda dello strumento scelto, la curva di apprendimento può essere medio-alta, insieme alla modifica dell'approccio al test. La curva di apprendimento per il prodotto o l'applicazione stessa può essere medio-bassa, a seconda che il tester abbia già testato l'applicazione o meno.

#4) Set di competenze esistenti

Questo si collega direttamente al punto precedente sulla curva di apprendimento.

Se un collaudatore sta passando dal collaudo basato su GUI, deve cambiare l'approccio al collaudo e imparare il nuovo strumento o framework come richiesto. Ad esempio Se l'API accetta le richieste in formato JSON, il tester deve imparare cosa sia JSON per iniziare a creare i test.

Studio di caso

Compito

Al fine di scalare un'applicazione esistente, un'azienda ha voluto offrire un prodotto in API oltre a un'applicazione GUI standard. Al team QA è stato chiesto di fornire un piano di copertura dei test per garantire che siano pronti ad accogliere i test API oltre ai normali test basati sulla GUI.

Sfide

  • Nessuno degli altri prodotti software aveva un'architettura basata su API, quindi per poter eseguire i test su questo compito, il team doveva stabilire il processo di test delle API da zero. Ciò significa che gli strumenti dovevano essere valutati, selezionati, finalizzati e il team doveva essere formato per i test.
  • Non è stato stanziato un budget aggiuntivo per l'acquisizione e l'implementazione dello strumento, il che significa che il team ha dovuto scegliere uno strumento di testing delle API gratuito o open-source e che qualcuno del team esistente ha dovuto essere formato per svolgere questo compito.
  • Non c'erano requisiti per i campi API e la convalida dei dati. I requisiti erano "deve funzionare come l'applicazione GUI corrispondente".

L'approccio seguito dal team per mitigare i rischi e aggirare le sfide.

  • Il team QA ha collaborato con il team di progetto per identificare i seguenti requisiti:
    • Tipo di API (REST/SOAP ): REST
    • Test richiesti (funzionali, di carico, di sicurezza): Solo test funzionali
    • Test automatizzati richiesti (Sì/No): Per ora è facoltativo
    • Rapporti di prova (Sì/No): Richiesto
  • Il team QA ha effettuato una valutazione degli strumenti di test API disponibili in base ai requisiti essenziali. Postman API Tool è stato scelto in quanto gratuito e facile da usare, riducendo così al minimo la curva di apprendimento, aveva il potenziale per automatizzare i test ed era dotato di buoni report integrati.
  • Lo stesso tester che ha testato l'applicazione è stato addestrato a utilizzare Postman per creare i test iniziali, eliminando così qualsiasi lacuna nella conoscenza del prodotto.
  • Per far fronte ai requisiti mancanti, il team di progetto ha costruito la documentazione di alto livello a livello di campo utilizzando Swagger. Tuttavia, questo ha lasciato alcune lacune in termini di formati di dati accettabili e questo è stato affrontato con il team di progetto e i formati previsti sono stati concordati e documentati.

Conclusione

Le applicazioni basate su API hanno guadagnato popolarità negli ultimi tempi. Queste applicazioni sono più scalabili rispetto alle applicazioni/software tradizionali e consentono una più facile integrazione con altre API o applicazioni.

Questo tutorial sui test API spiega in dettaglio i test API, i test Shift Left, i servizi Web e le API Web. Abbiamo anche esplorato le differenze tra servizi Web e API Web con esempi.

Nella seconda parte dell'esercitazione, abbiamo discusso l'intero spettro del test delle API, come introdurre il test delle API nella vostra organizzazione e alcune sfide comuni in questo processo insieme alle relative soluzioni.

Date un'occhiata al nostro prossimo tutorial per saperne di più sui servizi web con esempi!!!

Prossimo tutorial

Scorri verso l'alto