Categoria

Pagina 2 di 2

Testing: una rete di sicurezza, non un adempimento burocratico

I test non servono a fare bella figura in code review: servono a poter modificare il codice senza paura. La differenza fra una codebase che si evolve e una che si irrigidisce è quasi sempre la presenza di una suite di test di cui il team si fida. In questa categoria il testing non è un dogma, è uno strumento economico di gestione del rischio.

Il primo tema è partire dal legacy reale. Il punto di partenza nelle PMI non è quasi mai un progetto nuovo: è una codebase in produzione con zero test, dove ogni modifica rompe qualcosa da un'altra parte. Scrivo di come si introducono i primi test senza bloccare lo sviluppo, di quali test danno il massimo valore per primi, e di come si porta la copertura da quasi zero a un livello che ti fa dormire, oggi anche con l'aiuto di un LLM in pipeline.

Il secondo tema è testare ciò che conta davvero, non ciò che è comodo. Pest con mutation testing e dataset per misurare se i test valgono qualcosa, testing dei job in coda oltre il semplice controllo che siano stati messi in coda, Testcontainers per verificare l'integrazione con database e servizi reali invece di un finto database in memoria che nasconde proprio i bug che contano.

Se vuoi introdurre i test in un progetto che non ne ha, vedi i miei progetti PHP senior o scrivimi.

Un test non ti dice che il codice è giusto. Ti dice che non l'hai rotto mentre lo cambiavi. È esattamente ciò che serve.

Testing dei job in coda Laravel: da Queue::fake() a withFakeQueueInteractions() per validare retry, release e failure senza broker

Testing dei job in coda Laravel: da Queue::fake() a withFakeQueueInteractions() per validare retry, release e failure senza broker Queue::fake() verifica che un job venga dispatchato correttamente, ma non testa cosa succede dentro handle() quando il job deve rilasciarsi, cancellarsi o fallire. withFakeQueueInteractions(), introdotto in Laravel 11, permette di chiamare handle() in isolamento e asserire su release(), delete() e fail() senza un broker reale. Continua a leggere
Ultima modifica:

Refactoring delle integrazioni API esterne in Laravel: da chiamate Guzzle sparse a HTTP Client con Macro e testing deterministico

Refactoring delle integrazioni API esterne in Laravel: da chiamate Guzzle sparse a HTTP Client con Macro e testing deterministico L'HTTP Client di Laravel wrappa Guzzle aggiungendo macro riutilizzabili, retry con backoff esponenziale e Http::fake() per testing deterministico. In un applicativo con 12 integrazioni esterne, il refactoring da chiamate Guzzle sparse a service class con macro ha eliminato 400 righe di codice duplicato e reso testabili integrazioni che prima non lo erano. Continua a leggere
Ultima modifica:

Strumenti utili per il testing

Tool gratuiti per costruire e verificare i tuoi test:

Generatore dati fake, Regex tester, Glob pattern tester.