Secondo un sondaggio SlashData del 2020, quasi il 90% degli sviluppatori intervistati utilizzava le API in una certa misura. Tenendo conto di ciò, non sorprende che anche se sei un tester manuale o di automazione alla ricerca di un cambio di lavoro, il colloquio di assunzione consisterà in domande relative alle API.
In questo articolo ti guiderò attraverso alcune delle domande di colloquio più comuni e importanti sui test API e fornirò la risposta ideale per ciascuna. Iniziamo!
1. Che cos'è il testing delle API?
Il testing delle API è un tipo di test software che consiste nel valutare le API (Application Programming Interface) per verificare se soddisfano i requisiti di funzionalità, affidabilità, prestazioni e sicurezza. Poiché le API non hanno un'interfaccia grafica, il testing delle API viene eseguito a livello di messaggio del sistema.
2. Quali sono i vantaggi dell'esecuzione dei test API?
I test API hanno diversi vantaggi. Tra i più importanti, si possono menzionare:
- Test senza GUI: I tester possono eseguire test API senza dover utilizzare direttamente il software. Questo è un enorme vantaggio perché dà agli ingegneri QA una visione anticipata di difetti e anomalie, consentendo agli sviluppatori di correggerli prima che impattino la GUI.
- Test della funzionalità principale: Prima di eseguire i test sull’interfaccia grafica, verificare la funzionalità a livello di codice di un'applicazione permette di valutarne la qualità complessiva della build. Questo aiuta a rivelare piccoli errori che potrebbero diventare problemi più gravi a livello GUI. L’accesso al core permette di svolgere i test in contemporanea allo sviluppo, favorendo comunicazione e lavoro di squadra.
- Efficienza temporale: I test API richiedono generalmente meno tempo rispetto ai test funzionali sull'interfaccia grafica. Il testing GUI richiede più tempo perché occorre interrogare i componenti web. L’automazione dei test API, in particolare, comporta meno codice e offre una copertura migliore e più rapida dei test rispetto ai test automatizzati sulla GUI.
- Indipendente dal linguaggio: Un test API utilizza XML o JSON per lo scambio di dati. Queste modalità di trasferimento non dipendono dal linguaggio; pertanto, è possibile utilizzare qualsiasi linguaggio di programmazione nella scrittura dei test automatizzati per le API.
-
Aikido Security
Visit WebsiteThis is an aggregated rating for this tool including ratings from Crozdesk users and ratings from other sites.4.7 -
DigitalAPI
Visit Website -
Invicti
Visit WebsiteThis is an aggregated rating for this tool including ratings from Crozdesk users and ratings from other sites.4.6
3. In che modo il test delle API differisce dal test dell'interfaccia utente?
Il testing delle API si concentra molto di più sulla logica di business, le risposte dei dati e la sicurezza, così come sui colli di bottiglia delle prestazioni. Al contrario, il testing UI riguarda la verifica dell'aspetto grafico di un’interfaccia web o che determinati pulsanti, form, menu a discesa, ecc., funzionino.
4. Quali sono i componenti di una richiesta HTTP?
Una richiesta HTTP ha cinque elementi:
- Un metodo HTTP (descritto sotto) che definisce l'azione.
- Un URI (Uniform Resource Identifier) che è l'identificativo della risorsa sul server.
- Una versione HTTP, ad es. HTTP v1.1.
- L'header della richiesta che trasporta i metadati (come coppie chiave-valore) per il messaggio di richiesta HTTP. Esempi di metadati sono tipo di client (o browser), formati supportati dal client, formati del corpo del messaggio, impostazioni della cache e altre informazioni.
- Il corpo della richiesta rappresenta i dati inviati dal client all’API.
5. Quali sono i metodi HTTP più usati nelle REST API?
I metodi HTTP più importanti utilizzati durante il testing delle REST API sono quelli che eseguono operazioni CRUD:
- GET è il metodo HTTP che legge le informazioni dalla risorsa.
- Il metodo POST viene utilizzato per creare o aggiornare le risorse.
- PUT modifica una risorsa esistente.
- DELETE rimuove una risorsa specificata.
6. Qual è la differenza tra i metodi PUT e POST?
Questa è una domanda che mi è stata posta spesso ai colloqui e in parte la risposta si trova sopra.
Quando hai bisogno di modificare una singola risorsa che fa parte di una collezione di risorse, utilizzi il metodo PUT. Quando devi aggiungere una risorsa figlia a una collezione di risorse, devi utilizzare il metodo POST. Se la chiamata HTTP PUT viene inviata più di una volta, i risultati rimarranno invariati. Se una richiesta POST viene inviata più volte, i risultati saranno diversi, cioè potrebbero essere create più risorse o potrebbe essere restituito un errore.
Ad esempio, se disponi di una risorsa per la creazione e l’aggiornamento degli utenti, inviare lo stesso metodo PUT per un utente aggiornerà l’utente ogni volta. Inviare lo stesso metodo POST per un utente comporterà o la creazione di più utenti, oppure un errore che segnala che il nome utente o l’indirizzo email sono già in uso.
7. Quali sono le classi di codice di stato di risposta HTTP?
Questa è un’altra domanda comune a colloquio ed è importante da conoscere quando si esegue il testing delle API. Le classi dei codici di risposta HTTP sono:
- 1xx: le risposte in questa categoria sono risposte informative. Significano che il client dovrebbe continuare la richiesta oppure ignorare la risposta se è terminata.
- 2xx: un codice 200 indica successo.
- 3xx: queste risposte sono risposte di reindirizzamento. Significa che ci sono più possibili risposte alla richiesta. Una di esse dovrebbe essere selezionata dall’agente utente o dall’utente.
- 4xx: i codici in questo gruppo indicano un errore del client. Significa che il server non può elaborare la richiesta, e lo considera come un errore dal lato client, ad esempio un URL non riconosciuto, una sintassi richiesta errata e così via.
- 5xx: il codice di risposta HTTP 500 è restituito quando si verifica un errore lato server e il server non è in grado di eseguire la richiesta.
Se vuoi entrare nei dettagli degli stati di risposta, puoi trovare l’elenco completo online.
8. Quali sono alcuni strumenti comuni per l’automazione del testing delle API?
Per questa domanda, risponderei con alcuni strumenti con cui ho già lavorato o che conosco almeno un po’. Quindi, se hai esperienza con qualche strumento per il testing delle API, menzionalo. In caso contrario, puoi rispondere citando alcuni tra i più popolari, come Katalon, Postman o SoapUI. Dai un’occhiata al nostro articolo che copre i migliori strumenti di test API per qualche ispirazione.
9. Quali sono alcuni metodi di autenticazione comunemente utilizzati nel testing delle API?
Una risposta adeguata a questa domanda sarebbe:
- Autenticazione basata su sessione/cookie
- Autenticazione di base
- Autenticazione digest
- OAuth
10. Qual è la differenza tra autenticazione e autorizzazione?
In breve, l’autenticazione è il processo di verifica dell’identità di un utente, mentre l’autorizzazione è il processo di conferma del livello di accesso dell’utente.
11. Perché il testing delle API è preferito al testing dell’interfaccia utente per i test automatizzati?
Ritornando alla classica piramide dell’automazione dei test, è risaputo nel nostro settore che i test end-to-end dell’interfaccia utente dovrebbero essere in cima, il che significa che dovrebbero rappresentare il minor numero di test. Questo perché i test automatici sull’interfaccia utente tendono a richiedere più tempo e sono più soggetti a instabilità, perché hanno molte dipendenze. I test automatici sulle API rappresentano la parte di test di integrazione della piramide, sono molto più rapidi e di solito più affidabili.
12. Qual è la differenza tra il testing delle API e il testing unitario?
Il testing unitario rientra nel white box testing, mentre il testing delle API è solitamente black box testing. Poiché un utente finale interagirà con l’interfaccia utente, il testing delle API deve rappresentare il sistema nel suo complesso. Nel testing unitario, una considerazione chiave consiste nel verificare che ciascun componente o modulo funzioni in modo impeccabile. Cioè, per ottenere un’architettura modulare solida, le dipendenze dovrebbero essere minimizzate.
13. Quali tipi di testing possono essere applicati alle API?
La maggior parte delle tipologie di test applicate sui test UI sono valide anche per le API. Alcuni dei tipi di test più rilevanti che puoi menzionare per questa domanda da colloquio sulle API sono:
- Test funzionale: nella maggior parte dei casi vorrai verificare che le API facciano ciò per cui sono state progettate. Questo significa che eseguirai casi di test funzionali sulle API.
- Test manuale: solo perché non sei un tester di automazione non significa che non puoi testare le API. Puoi utilizzare strumenti come Postman per inviare richieste e testare le risposte manualmente.
- Test automatizzato: è una buona idea automatizzare i casi di test delle API. Molti degli strumenti sopra elencati possono aiutarti in questo, oppure puoi creare il tuo framework per le API.
- Test di carico: simulando traffico verso le API, i tester possono identificare i colli di bottiglia prima che arrivino in produzione. In assenza di un carico di produzione, potrebbe essere difficile individuare questi colli di bottiglia negli ambienti di sviluppo. Esistono strumenti per il test di carico che ti permettono di inviare chiamate HTTP a un determinato endpoint e misurare il tempo di risposta, gli errori e la percentuale di errore, insieme ad altri dati utili delle risposte. Possono anche aiutarti a simulare grandi quantità di dati per valutare come si comporta un'applicazione.
- Test di sicurezza: con il test di sicurezza, l'implementazione dell’API viene protetta da minacce esterne. Le fasi del test di sicurezza includono la verifica delle tecniche di crittografia e dell’architettura del controllo di accesso all’API. Sono incluse anche la gestione degli accessi degli utenti e la verifica delle autorizzazioni.
- Test di penetrazione: con questa tipologia di test, utenti che non conoscono l’API cercheranno di valutare i possibili vettori di attacco da remoto, concentrandosi sulle funzionalità, le risorse, i flussi di lavoro o sull’intera API e i suoi componenti.
Che tu sia un tester manuale o ti occupi di automazione dei test, è fondamentale sapere come lavorare con le API. Se ti stai preparando per un colloquio su domande relative ai test API, spero che questo articolo ti sia utile.
Non dimenticare di iscriverti alla newsletter di The CTO Club per altri consigli e tutorial sul testing!
