Tests unitaires

Un test unitaire est un test automatisé qui vérifie le bon fonctionnement d’une unité isolée de code une fonction (en programmation procédurale) ou une méthode d’une classe (en programmation orientée objet).

Il s’inscrit à la base de la pyramide des tests : rapide, peu coûteux, et exécuté dès les premières étapes du développement.

Son objectif est de valider qu’une spécification technique précise est respectée, indépendamment du reste de l’application.

Bon test unitaire = rapide, déterministe, isolé, répétable, et facile à maintenir.

Exemple simple en PHP (avec PHPUnit)

Code à tester : une fonction de calcul

// Fichier: Calculator.php
class Calculator {
    public function add(int $a, int $b): int {
        return $a + $b;
    }
}

Test unitaire associé

// Fichier: CalculatorTest.php
use PHPUnit\Framework\TestCase;

class CalculatorTest extends TestCase {
    public function testAddReturnsCorrectSum(): void {
        $calc = new Calculator();
        $result = $calc->add(2, 3);
        
        $this->assertEquals(5, $result); // Vérifie que 2 + 3 = 5
    }
}

Ce que ce test garantit :

  • La méthode add retourne bien la somme de deux entiers.
  • Si quelqu’un modifie accidentellement le code (ex. : remplace + par -), le test échoue immédiatement.

Bonnes pratiques

  • Un test = une seule assertion (ou un seul comportement).
  • Ne pas tester les dépendances externes (base de données, API) → utiliser des mocks si nécessaire.
  • Lancer les tests automatiquement à chaque modification (CI/CD).

Les tests unitaires sont obligatoires : ils sont la base de la qualité logicielle, de la maintenabilité et de la réduction de la dette technique.

Les contenus de définition restent publics. Les ressources (outils, grilles, supports) liées à cette fiche sont disponibles dans l’espace membre.