Testing & Qualità
Test Automatici in PHP: guida per iniziare con PHPUnit nel 2026
I test automatici sono fondamentali per la qualità del software, ma iniziare può sembrare complicato. In PHP, PHPUnit è lo standard de facto per i test. Ecco una guida pratica per iniziare con i test automatici in PHP, da zero a una suite di test funzionante.
Cos'è PHPUnit
PHPUnit è il framework di testing più utilizzato in PHP. Permette di scrivere e eseguire test automatici per verificare che il codice funzioni correttamente. PHPUnit supporta unit test, test funzionali e test di integrazione.
Installazione
Installa PHPUnit tramite Composer:
composer require --dev phpunit/phpunit
Crea un file phpunit.xml nella root del progetto per configurare PHPUnit.
Tipi di test
1. Unit Test
Gli unit test verificano singole unità di codice (funzioni, metodi) in isolamento. Sono veloci da eseguire e dovrebbero essere la maggior parte dei tuoi test.
Esempio: testare una funzione che calcola il totale di un ordine, verificando che sommi correttamente i prezzi.
2. Test Funzionali
I test funzionali verificano che le funzionalità complete funzionino correttamente. Testano l'interazione tra più componenti.
Esempio: testare che un utente possa completare un ordine dall'inizio alla fine, verificando che tutti i passaggi funzionino insieme.
3. Test di Integrazione
I test di integrazione verificano che diversi moduli del sistema funzionino insieme correttamente.
Scrivere il primo test
Un test PHPUnit è una classe che estende PHPUnit\Framework\TestCase. Ogni metodo che inizia con "test" è un test.
Esempio base:
<?php
use PHPUnit\Framework\TestCase;
class CalculatorTest extends TestCase
{
public function testAdd()
{
$calculator = new Calculator();
$result = $calculator->add(2, 3);
$this->assertEquals(5, $result);
}
}
Assertions comuni
PHPUnit offre molte assertion per verificare risultati:
$this->assertEquals($expected, $actual)– verifica uguaglianza$this->assertTrue($condition)– verifica che sia true$this->assertFalse($condition)– verifica che sia false$this->assertNull($value)– verifica che sia null$this->assertContains($needle, $haystack)– verifica presenza in array
Test in Yii2
Yii2 include supporto per test tramite Codeception, che usa PHPUnit sotto il cofano. Yii2 offre anche test helper specifici per testare applicazioni Yii2.
Per iniziare con Yii2:
- Installa Codeception:
composer require --dev codeception/codeception - Inizializza:
php vendor/bin/codecept bootstrap - Crea test:
php vendor/bin/codecept generate:test unit MyTest
Best practice
1. Testa comportamento, non implementazione
I test dovrebbero verificare che il codice faccia quello che deve fare, non come lo fa. Se cambi implementazione ma il comportamento resta uguale, i test non dovrebbero rompersi.
2. Un test, una cosa
Ogni test dovrebbe verificare una sola cosa. Test semplici sono più facili da capire e debuggare quando falliscono.
3. Nomi descrittivi
Usa nomi di test che descrivano cosa stai testando: testCalculateTotalWithDiscount() è meglio di test1().
4. Testa casi limite
Oltre ai casi normali, testa anche casi limite: valori null, array vuoti, numeri negativi, stringhe molto lunghe.
5. Mantieni i test veloci
I test dovrebbero essere veloci da eseguire. Se i test sono lenti, tenderai a non eseguirli spesso. Evita operazioni lente come chiamate a database o API esterne negli unit test (usa mock).
Da dove iniziare
Inizia con:
- Funzionalità critiche: testa prima le parti più importanti
- Bug passati: scrivi test per bug già trovati per evitare regressioni
- Nuove funzionalità: scrivi test per ogni nuova feature
Non serve testare tutto subito. Inizia con poche funzionalità critiche e espandi gradualmente.
Approfondimenti
- Perché il testing fa risparmiare soldi
- Costi bug in produzione
- Contattami – consulenza testing
- PHPUnit Documentation
Continua a leggere
Bug in Produzione: quanto costano davvero a un'azienda (dati 2026)
Hai un progetto in mente?
Raccontami cosa ti serve: ti propongo la soluzione web più adatta alle tue esigenze.
Contattami I miei servizi