Le WordPress d'aujourd'hui, décodé pour les développeurs

Tests

Faire vivre un document de stratégie de tests, au-delà d’un simple README

Un README de tests que personne ne relit plus vaut peu. Voici comment rédiger un document de gouvernance suivi réellement par une équipe où chacun teste à sa façon.

Par Clément Hadrot • 24 février 2025 • 5 min de lecture • Aucun commentaire
Faire vivre un document de stratégie de tests, au-delà d'un simple README

Cinq fichiers de tests, cinq styles différents : ici des doublures natives de PHPUnit, là Mockery, ailleurs aucune assertion sur les cas d’erreur. C’est le constat dressé lors d’une revue de code approfondie dans une structure qui développe des extensions pour plusieurs clients, où chaque développeur teste visiblement à sa propre façon, du moment que la pipeline passe au vert.

Un document de stratégie de tests existait pourtant, rédigé un an plus tôt et rangé dans le wiki interne. Le problème n’était pas son contenu, globalement raisonnable, mais son destin : personne ne l’ouvrait plus depuis sa rédaction. Un document de gouvernance qui n’est pas relu régulièrement finit par ne plus gouverner grand-chose.

Pourquoi un document de stratégie s’use plus vite qu’on ne le pense

Un texte rédigé une fois, validé en réunion, puis archivé, subit le même sort que n’importe quelle documentation statique : le projet évolue, de nouveaux outils arrivent, de nouveaux développeurs rejoignent l’équipe sans jamais avoir participé à sa rédaction initiale, et le texte devient progressivement une photographie d’un état passé plutôt qu’un guide pour l’avenir.

Le vrai enjeu n’est donc pas d’écrire un bon document une fois, mais de construire un mécanisme qui l’oblige à rester pertinent.

Réduire le document à l’essentiel, quatre pages au maximum

Un document de trente pages ne sera jamais relu en entier par un développeur pressé. La stratégie tient sur quatre pages, organisées en sections courtes et concrètes :

  • Quels types de tests sont attendus pour quel type de code (logique métier, contrôleur REST, gabarit d’affichage).
  • Quelle bibliothèque de doublures de test utiliser dans quel contexte, avec un exemple de code pour chacune.
  • Quel seuil de couverture minimal s’applique, et à quelles exceptions documentées.
  • Quelle est la procédure quand un test devient instable ou trop lent.

Un exemple concret vaut mieux qu’une règle abstraite

Plutôt que d’écrire « préférez les doublures natives de PHPUnit à Mockery sauf cas justifié », le document montre le code correspondant, directement copiable :

// Préféré : doublure native PHPUnit
$service = $this->createMock( Service_Facturation::class );
$service->method( 'calculer_total' )->willReturn( 42.0 );

// Réservé aux cas où l'ordre d'appel compte
$service = Mockery::mock( Service_Facturation::class );
$service->shouldReceive( 'calculer_total' )
    ->once()
    ->ordered()
    ->andReturn( 42.0 );
L'essentiel à retenir : Un document court, relu à chaque revue de code plutôt qu'archivé ; Des règles vérifiables automatiquement, pas seulement écrites ; Un propriétaire désigné qui fait vivre le texte

Transformer les règles en vérifications automatiques

Une règle écrite mais non contrôlée reste une intention. Chaque fois qu’une règle du document peut être vérifiée par un outil, elle doit l’être : un seuil de couverture minimal se contrôle avec l’option --coverage-clover de PHPUnit lue en CI, une convention de nommage de méthode de test se contrôle avec une règle PHPCS personnalisée. Ce qui n’est pas vérifiable automatiquement doit être signalé comme tel dans le document, pour rester honnête sur ses propres limites.

Désigner un propriétaire, pas un comité

Un document sans propriétaire clair devient un texte dont la mise à jour n’est la responsabilité de personne. Un développeur, désigné pour une durée de six mois renouvelable, porte la responsabilité de proposer les mises à jour lorsqu’un nouvel outil est adopté ou qu’une règle s’avère inadaptée en pratique. Ce rôle n’exige pas de trancher seul : il s’agit de porter le sujet en revue d’équipe, pas de l’imposer.

Un document de gouvernance sans propriétaire ressemble à un jardin sans jardinier : il pousse encore un peu, puis il se fige.

L’inscrire dans le rituel de revue de code

Le changement le plus efficace observé dans cette agence n’a pas été une réécriture du contenu, mais un ajout au modèle de pull request : une case à cocher demandant explicitement si les tests ajoutés respectent le document de stratégie, avec un lien direct vers celui-ci. Ce simple rappel, répété à chaque contribution, a suffi à ramener le document dans le champ de vision quotidien de l’équipe, là où il avait disparu pendant des mois.

Prévoir une relecture calendaire, pas seulement événementielle

Au-delà des mises à jour ponctuelles, une relecture complète du document est planifiée deux fois par an, lors d’une réunion dédiée d’une heure où chaque section est discutée collectivement. Cette relecture régulière, même quand rien ne semble avoir changé, évite que le document ne devienne obsolète sans que personne ne s’en aperçoive.

En résumé

Un document de stratégie de tests ne vaut que par les mécanismes qui le maintiennent vivant : sa brièveté, ses règles vérifiables automatiquement, un propriétaire identifié et sa présence dans le rituel de revue de code. Sans ces mécanismes, même le texte le mieux rédigé finit archivé, et chacun revient à tester à sa façon.

Partager :

À propos de l'auteur

Clément Hadrot

Développeur WordPress, passionné par Elementor, le FSE et l’automatisation par IA.

Voir tous ses articles

Dans la même veine

À lire aussi