Di cosa è composta una richiesta HTTP?
QA / QA Automation
Cos'è una matrice di tracciabilità e come si forma?
Cos'è la cache, cosa sono i cookie?
API REST: come creare un servizio mock? Fornisci esempi di strumenti.
Con quale scopo viene utilizzato l'ORM nei test e in quali casi è meglio non usarlo?
La Programmazione Orientata agli Oggetti (OOP) è un approccio allo sviluppo di software in cui il codice è organizzato sotto forma di oggetti Incapsulamento L’incapsulamento è l’unione di dati e metodi che lavorano con questi dati all’interno di una stessa classe, oltre alla restrizione dell’accesso diretto allo stato interno dell’oggetto. In parole semplici: l’oggetto gestisce i propri dati, e il codice esterno interagisce con esso tramite metodi. Astrazione L’astrazione consiste nel evidenziare solo le caratteristiche importanti dell’oggetto e nel nascondere i dettagli della sua implementazione. In parole semplici: all’utente importa cosa fa l’oggetto, non come lo fa esattamente. Polimorfismo Il polimorfismo è la capacità di oggetti con implementazioni diverse di usare un’interfaccia comune. Nei test, questo aiuta a scrivere codice universale che funziona con diversi tipi di dati o classi. Esempio in Python: class Animal: def make_sound(self): pass class Dog(Animal): def make_sound(self): return "Bau!" class Cat(Animal): def make_sound(self): return "Miao!" def animal_sound(animal: Animal): print(animal.make_sound()) dog = Dog() cat = Cat() animal_sound(dog) # Bau! animal_sound(cat) # Miao! Ne test automatizzati, il polimorfismo è utile per: - Creare metodi di verifica universali - Implementare diverse strategie di test tramite un’interfaccia - Supportare diverse versioni di API/UI senza modificare i test Ereditarietà L’eredità è un meccanismo che permette a una nuova classe di usare automaticamente una classe esistente, ereditandone proprietà e metodi. In parole semplici: la nuova classe riutilizza il codice della classe genitore e lo amplia se necessario. Git 1. Sistemi di controllo di versione. Locale, centralizzato, distribuito. 2. Concetti di base. Repository, indice, commit, puntatori, branch, copia di lavoro. 3. Lavorare con il repository. Comandi: init, clone, status 4. Creare un commit. Comandi: add, commit. 5. Creare, visualizzare, cambiare tra branch, eliminare. Comandi: branch, checkout, log, diff. 6. Annullare modifiche. Comandi: restore, rm, checkout, revert. 7. Unire modifiche tra branch. Comandi: merge, cherry-pick, rebase. 8. Lavorare con il repository remoto. Comandi: fetch, pull, push. 9. Lavorare con GitHub, fork e Pull Requests.
A cosa servono ORDER BY e GROUP BY in SQL? Quali funzioni di aggregazione hai usato nel lavoro?
Qual è la differenza tra i metodi PUT e PATCH e quali sono le loro caratteristiche di funzionamento?
Come si risolve il problema della corsa dei messaggi in Kafka?
Quali informazioni vengono trasmesse nelle intestazioni della richiesta HTTP?
Parla del ciclo di vita di un bug. Si può fare per stati.
Cos'è il tracciamento dei messaggi e come aiuta a localizzare un difetto in un'architettura a microservizi?
In quali casi ha senso usare l'asincronia e in quali no? Come implementi l'asincronia nei test?
Come implementare una soft assert in pytest per più verifiche in un test, in modo che il test non fallisca al primo errore, ma esegua tutte le verifiche?
Qual è la differenza tra un iteratore e un generatore?
Qual è la differenza tra i test Smoke, Sanity e Regression?
Come intercettare e modificare la risposta dell'API in Playwright per testare l'interfaccia utente?