Categoria

Pagina 1 di 1

Testing PHP: dal 5% di coverage al codebase che non ti sveglia di notte

Testare codice PHP legacy è spesso considerato impossibile. Non lo è: richiede strategia, strumenti giusti, e oggi anche LLM ben utilizzati. Un codebase a 5% di copertura può arrivare a 70% in tre mesi, e da lì in poi ogni refactor diventa un'operazione informata invece che una scommessa al buio.

In questa categoria scrivo di testing PHP applicato: generazione test con LLM su codebase PHP legacy (case study da 5% a 70%), regressione visuale con Playwright su gestionali Laravel, separazione dominio e infrastruttura con architettura esagonale, Testcontainers per test di integrazione con database reali, PHPUnit e Pest.

Se hai un codebase PHP senza copertura test e vuoi cambiare la situazione senza fermare lo sviluppo, parliamone. Oppure scopri come lavoro sulla qualità del codice PHP.

LLM per generazione test automatici: da 5% a 70% di copertura su codebase PHP legacy

LLM per generazione test automatici: da 5% a 70% di copertura su codebase PHP legacy Partire da 5% di copertura test su un codebase legacy è demoralizzante. Portarla al 70% in 3 mesi è realistico con LLM nell'anello di supporto - ma solo se il processo è strutturato. Ti mostro il workflow che ho testato: LLM genera characterization test sul comportamento esistente, sviluppatore verifica, itera. Con catalogo degli anti-pattern LLM tipici (test che passano sempre, assertion inutili) e come rilevarli. Continua a leggere
Ultima modifica:

Automazione test di regressione visuale con Playwright per applicazioni Laravel

Automazione test di regressione visuale con Playwright per applicazioni Laravel Un refactoring CSS su un gestionale Laravel aveva rotto la visualizzazione di 12 componenti - nessuno se ne era accorto fino alle segnalazioni degli utenti. Con Playwright ho implementato test di regressione visuale: ogni PR che modifica CSS viene confrontata con screenshot di riferimento. I bug visivi vengono intercettati in CI. Continua a leggere
Ultima modifica:

Architettura esagonale (Ports & Adapters) in Laravel: separare dominio da infrastruttura

Architettura esagonale (Ports & Adapters) in Laravel: separare dominio da infrastruttura Un'applicazione Laravel con la logica di business nei controller e le chiamate al database direttamente nei Model è impossibile da testare correttamente. Ho refactorizzato un gestionale HR verso l'architettura esagonale: il dominio ora è testabile senza database, e cambiare da MySQL a PostgreSQL ha richiesto un solo adapter. Continua a leggere
Ultima modifica:

Testcontainers per PHP: test di integrazione con database e servizi reali in CI

Testcontainers per PHP: test di integrazione con database e servizi reali in CI I test con SQLite in memoria non trovano i bug che nascono dalle differenze tra SQLite e MySQL. Con Testcontainers per PHP, ogni test di integrazione ottiene un'istanza MySQL reale in un container Docker, azzerata tra le esecuzioni. Ho adottato questo approccio per un cliente e-commerce: i bug in staging sono scesi del 60%. Continua a leggere
Ultima modifica:

Dependency injection avanzato in PHP 8: costruire servizi testabili e sostituibili

Dependency injection avanzato in PHP 8: costruire servizi testabili e sostituibili La dependency injection è il pattern che più di ogni altro determina la testabilità del codice PHP. Vi mostro i pattern avanzati che uso in progetti complessi: constructor promotion di PHP 8, binding a interfaccia, lazy proxy per servizi costosi e come scrivere test che non dipendono dall'implementazione concreta. Continua a leggere
Ultima modifica: