Tutorial sul test delle API REST: esempi di casi di test manuali

⚡ Riepilogo intelligente

Il test delle API REST convalida i servizi web RESTful inviando richieste HTTP come GET, POST, PUT e DELETE, e verificando il codice di stato, le intestazioni di risposta e il payload restituiti dal server.

  • 🔑 Idea centrale: È possibile interagire direttamente con il livello di servizio, senza alcuna interfaccia utente intermedia.
  • 🔁 Copertura del metodo: Eseguire operazioni GET, POST, PUT e DELETE su ogni risorsa esposta.
  • ️ Configurazione del cliente: Installa Advanced Rest Client prima di inviare la prima richiesta.
  • 📋 Richiesta di build: Fornire l'endpoint URLmetodo, intestazioni, parametri e payload JSON.
  • ✅ Verifiche delle risposte: Verificare che il codice di risposta, il messaggio di risposta e il corpo della risposta corrispondano alle aspettative.
  • 🔐 Livello di sicurezza: Ripetere le chiamate con token mancanti, scaduti o con privilegi limitati per forzare le risposte 401 e 403.
  • 🤖 Supporto AI: L'apprendimento automatico genera payload per casi limite che i tester manuali di solito trascurano.

Cos'è il test dell'API REST?

Test dell'API REST È una tecnica di test di automazione web open-source utilizzata per testare le API RESTful delle applicazioni web. Lo scopo del test delle API REST è registrare la risposta dell'API REST inviando diverse richieste HTTP/S per verificare se l'API REST funziona correttamente. Il test delle API REST viene eseguito tramite i metodi GET, POST, PUT e DELETE.

REST sta per Representational State Transfer. È uno stile architettonico e un approccio per la comunicazione utilizzato nello sviluppo di Servizi webREST è diventato una scelta logica per la creazione di API, perché consente agli utenti di connettersi e interagire con i servizi cloud in modo efficiente.

Un'API, o Interfaccia di Programmazione delle Applicazioni, è un insieme di istruzioni di programmazione per accedere a un'applicazione software basata sul web. In altre parole, è un insieme di comandi utilizzati da un programma per comunicare direttamente con un altro e utilizzare le rispettive funzioni per ottenere informazioni.

Per esempio, un Google Un sito web può disporre di un'API per la ricerca, le traduzioni e i calendari. In genere, le API si presentano come nell'esempio seguente, con nome del server, percorsi e parametri.

http://<server name>/v1/export/Publisher/Standard_Publisher_Report?format=csv
#1 Migliori in assolutoTest globali dell'app
9.8/ 10
★ ★ ★ ★ ★
Ottieni una demo gratuita
PractiTest
9.5/ 10
★ ★ ★ ★ ★
Visita PractiTest
Testiny
9.3/ 10
★ ★ ★ ★ ★
Visita Testiny
migliori PerTest di crowdsourcing e controllo qualitàGestione dei testTeam di QA di piccole e medie dimensioni
Caratteristica fondamentale✓Test di integrazione di terze parti✓Gestione centralizzata dei test✓Casi di test manuali e automatizzati
Integrazioni✓Jira, Slack, TestRail✓Jira, Jenkins, Slack✓Jira, GitHub, GitLab
Prova GratuitaDemo gratuitaProva Gratis 14 giorniDemo gratuita
Ottieni una demo gratuitaVisita PractiTestVisita Testiny

Ma perché investire tempo e risorse nei test a questo livello?

Perché è importante testare le API REST

Un'API REST si interpone tra l'interfaccia utente e il database, rappresentando quindi il livello in cui risiede la maggior parte della logica di business. Un difetto in una regola di prezzo o in un controllo delle autorizzazioni emerge nella risposta dell'API molto prima che qualcuno noti un numero errato sullo schermo, pertanto i test in questa fase consentono di individuare i problemi in una fase più precoce e più vicina alla loro causa.

La velocità è il secondo motivo. Una richiesta si completa in millisecondi e non necessita di browser, motore di rendering o localizzatori di elementi fragili. Un tester può testare decine di endpoint nel tempo necessario al caricamento di una pagina per un singolo test di interfaccia, e la stessa richiesta si comporta in modo identico sia che il front-end sia un sito web, un'app mobile o un'integrazione con un partner.

La stabilità è la terza ragione. I layout cambiano costantemente, ma un REST con pubblicatotracsi prevede che rimanga stabile. Test scritti contro tale convinzionetracPer sopravvivere alle riprogettazioni, proteggono le parti del prodotto su cui poi altri team costruiscono.

Tipi di metodi API

Ne esistono principalmente 4 tipi Test API Metodi: GET, POST, DELETE e PUT.

  • GET– Il metodo GET viene utilizzato per esportaretracottenere informazioni dal server specificato utilizzando un URI specificato. Quando si utilizza una richiesta GET, dovrebbe essere eseguita solotraci dati t e non dovrebbero avere altri effetti sui dati.
  • POST– Una richiesta POST viene utilizzata per creare una nuova entità. Può anche essere utilizzato per inviare dati al server, ad esempio informazioni sui clienti, caricamento di file, ecc. utilizzando moduli HTML.
  • PUT– Crea una nuova entità o aggiornane una esistente.
  • DELETE– Rimuove tutte le rappresentazioni correnti della risorsa di destinazione fornite da un URI.

Come testare l'API REST

Il test delle API REST richiede che un'applicazione interagisca con un'API di esempio da testare. Per testare un'API, sono necessarie due cose:

  • Strumento/framework di test per gestire l'API
  • Scrivi il tuo codice per testare l'API REST di esempio

I casi di test delle API REST possono essere testati con strumenti come:

  • Cliente di riposo avanzato
  • Postman-Resto del cliente
  • Curl in Linux

Qui utilizzeremo Advanced Rest Client. Di seguito sono riportati i passaggi per ottenere Advanced Rest Client.

Come ottenere Advanced Rest Client?

  • Vai su Google ChromeWeb Store
  • Cerca "Advanced Rest Client" o vai direttamente Qui. e installa l'estensione
  • Seleziona l'icona "Advanced Rest Client" nella sezione app di Chrome: chrome://apps/

La pagina del negozio online appare come mostrato di seguito.

Come installare Advance Rest Client

Una volta completata l'installazione, segui il test qui sotto per testare un API RESTful.

Passaggi per testare l'API REST

Qui stiamo utilizzando l'estensione client REST nel browser Chrome. Per comprenderlo in modo chiaro, stiamo usando un'API fittizia a scopo di test:

http://ip.jsontest.com/

Passaggio 1) Aprire il client REST avanzato

Avviare l'app Advanced REST client (ARC), una volta installata correttamente.

Apri il client REST avanzato

Passaggio 2) Inserire il URL di API da testare

Inserisci l'API REST di esempio URL per testare nel URL casella di testo.

URL di API da testare

Passaggio 3) Selezionare il metodo HTTP

Seleziona il metodo per il tipo di metodi HTTP nel test API per colpire, ad esempio POST

Metodo HTTP

Passaggio 4) Fornire il set di intestazioni

Fornisci il set di intestazioni, nella casella di testo Intestazioni. Fai clic su Inserisci set di intestazioni.

Set di intestazioni

Passaggio 5) Confermare le intestazioni impostate

Successivamente fare clic su USA QUESTO SET.

Set di intestazioni

Passaggio 6) Fornire il contenuto del corpo richiesto

  1. Ora passa alla scheda Corpo.
  2. Imposta il tipo di contenuto del corpo richiesto e la visualizzazione dell'editor, ad esempio Tipo di contenuto del corpo: application/json
  3. Visualizzazione editor: input non elaborato.
  4. Nella sezione Payload, passa il corpo della richiesta dell'API demo per i test sotto forma di coppie chiave-valore, ad esempio {"chiave1":"valore1","chiave2":"valore2"}. Se si tratta di un'API POST, è necessario passare un corpo o dei parametri. Li passeremo nella sezione payload.
{"property" : ["Sites"], "report_type" : ["ALL"]}

Passaggi per testare l'API REST

⚠️ Attenzione: Un Content-Type di application/json con un payload non valido JSON Restituisce l'errore 400 Bad Request.

Passaggio 7) Invia i dettagli per iniziare il test

  1. Premi il pulsante di invio.
  2. Puoi cliccare sul pulsante DETTAGLI per vedere le intestazioni delle risposte.

Passaggi per testare l'API REST

Ecco i dettagli della risposta:

Passaggi per testare l'API REST

La risposta deve ancora essere valutata in base al risultato atteso.

Convalida dei risultati

Principalmente, per testare le API Web, dobbiamo controllare il codice di risposta, il messaggio di risposta e il corpo della risposta.

I codici di risposta si suddividono in cinque famiglie:

Famiglia Categoria Significato
1xx Informativo Ricevuto, ancora in elaborazione
2xx di successo Completato; 200 OK, 201 Creati
3xx Reindirizzamento È necessaria un'ulteriore azione
4xx Errore del cliente Payload, token o risorsa non validi.
5xx Errore del server Richiesta valida, errore del server

Di seguito sono riportati i codici di risposta che si potrebbero incontrare.

Convalida dei risultati

Una singola richiesta dimostra che l'endpoint funziona. Una serie di richieste dimostra che continua a funzionare.

Casi di test API REST che devi assolutamente coprire

Una suite di API REST utile si estende su diverse categorie anziché ripetere la stessa chiamata standard con dati diversi:

  • Percorso felice: Invia una richiesta valida a ciascun endpoint e conferma il codice di stato, lo schema e il valore di ogni campo.
  • Casi negativi: Se si invia un JSON non valido, un metodo non supportato e un ID risorsa mancante, è probabile che si ricevano codici di errore 400, 405 e 404 anziché 500.
  • Valori limite: Se un campo accetta da 1 a 200 caratteri, testa 0, 1, 200 e 201. Le regole di validazione si interrompono ai limiti.
  • Caratteri speciali: Inserisci lettere accentate, emoji, virgolette e testo multibyte in ogni campo per individuare eventuali errori di codifica.
  • Contraccontrolli t: Confronta la risposta con le specifiche OpenAPI o Swagger pubblicate, in modo da individuare tempestivamente eventuali modifiche non documentate.
  • Sequenziamento: È importante chiamare gli endpoint in un ordine realistico, ad esempio POST, poi GET e infine DELETE, poiché lo stato viene mantenuto tra una chiamata e l'altra.
  • Sanità delle prestazioni: Registra i tempi di risposta per ogni esecuzione e segnala qualsiasi endpoint che superi la soglia concordata con il team.

Strumento di test dell'API REST

Strumenti diversi sono adatti a fasi di test diverse.

Chiavetta Tipo migliori per
Cliente di riposo avanzato Client desktop Chiamate manuali rapide
Postman Client desktop Collezioni e spazi di lavoro di gruppo
JMeter Test di carico Tempi di risposta sotto carico
SoapUI Test funzionali RIPOSO e SAPONE insieme
Stia tranquillo Java libreria Automatizzazione dei casi stabili
cURL riga di comando Incollare le chiamate nei report di bug

Vedi il riepilogo di Strumenti di test dell'API.

La maggior parte degli endpoint reali si rifiuta di rispondere finché la richiesta non dimostra chi l'ha inviata.

Autenticazione e controlli di sicurezza delle API REST

Gli endpoint demo pubblici rispondono a chiunque, ma un'API REST di produzione è protetta da un sistema di autenticazione e una falla nell'autorizzazione è molto più dannosa di un valore errato in un campo. Innanzitutto, identifica il meccanismo: una chiave API statica, credenziali HTTP Basic, un token bearer OAuth 2.0 o un JSON Web Token firmato.

Una volta che la richiesta autenticata ha esito positivo, analizzate attentamente i possibili scenari di errore:

  1. Nessuna credenziale: Rimuovere l'intestazione Authorization. Aspettarsi un errore 401 Non autorizzato e nessun dato nel corpo della risposta.
  2. Credenziali non valide: Corrompere un carattere del token. Aspettarsi di nuovo un errore 401, con un messaggio che non spiega il motivo.
  3. Credenziali scadute: Riutilizzare un token oltre la sua scadenza. Verificare che venga rifiutato anziché onorato, un difetto comune di sfasamento dell'orologio.
  4. Livello di privilegio errato: Autenticarsi come utente con privilegi limitati e chiamare un endpoint riservato agli amministratori. Aspettarsi un errore 403 Forbidden, non 200.
  5. Il record di un altro utente: Modifica l'ID in modo che l'utente A richieda i dati dell'utente B. Se ciò dovesse funzionare, si tratterebbe di un grave difetto nel controllo degli accessi.

Infine, verificare che ogni chiamata transiti su HTTPS e che le risposte errate non lascino tracce dello stack. tracbanner es o di versione e che le ripetizioni rapide attivano l'errore 429 Too Many Requests.

Anche il test delle API REST presenta difficoltà che il test delle interfacce non ha.

Sfide per il test delle API

I problemi interessanti per i tester durante il test delle API REST sono:

  1. Per garantire che il framework di test vari i parametri delle chiamate API in modo da verificare la funzionalità e al contempo evidenziare i malfunzionamenti. Ciò include l'esplorazione delle condizioni limite e l'assegnazione di parametri comuni.
  2. Creazione di interessanti combinazioni di valori di parametro per chiamate con due o più parametri
  3. Identificare il contenuto in base al quale devono essere effettuate le chiamate API. Ciò potrebbe includere l'impostazione di condizioni ambientali esterne (dispositivi periferici, file, ecc.) nonché dati memorizzati internamente che influenzano l'API.
  4. Sequenziamento delle chiamate API secondo l'ordine in cui la funzione verrà eseguita
  5. Per fare in modo che l'API produca risultati utili dalle chiamate successive.

DOMANDE FREQUENTI

I test REST funzionano con JSON o XML leggeri su semplici verbi HTTP. I test SOAP convalidano un involucro XML rigoroso rispetto a un WSDL.tract, quindi necessita di un client consapevole dello schema come SoapUI piuttosto che un semplice client REST.

No. Client come Advanced Rest Client e Postman ti permette di creare una richiesta tramite un modulo. La programmazione diventa necessaria solo quando automatizzi gli stessi casi con una libreria come Stia tranquillo.

La maggior parte dei team considera un tempo inferiore a 300 millisecondi come buono e un tempo inferiore a un secondo come accettabile per una singola lettura. Qualsiasi valore superiore a pochi secondi danneggia l'applicazione chiamante, quindi registra i tempi a ogni esecuzione e segnala un difetto in caso di discrepanza.

L'intelligenza artificiale legge una specifica OpenAPI e genera payload di richiesta, comprese varianti di confine e malformate che i tester spesso non rilevano. Inoltre, raggruppa gli errori simili ed evidenzia gli endpoint le cui recenti modifiche li rendono suscettibili a malfunzionamenti.

No. L'IA non sa cosa l'azienda consideri corretto, quali regole di accesso siano importanti o quali dati siano sensibili. Aumenta la generazione di casi, mentre è ancora un tester a decidere cosa significhi effettivamente una risposta valida.

Riassumi questo post con: