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

Tests

Le modèle du testing trophy de Kent C. Dodds face à vos tests WordPress

Un modèle de répartition des tests, popularisé dans l'écosystème JavaScript, questionne l'équilibre habituel entre unitaire, intégration et bout en bout sur un projet WordPress.

Par WordPress Développement • 9 décembre 2021 • 4 min de lecture • Aucun commentaire
Le modèle du testing trophy de Kent C. Dodds face à vos tests WordPress

La documentation de la bibliothèque Testing Library résume une idée devenue influente dans l’écosystème JavaScript : écrire des tests, pas trop, surtout des tests d’intégration. Cette formule, associée au modèle du « testing trophy », renverse discrètement la hiérarchie de la pyramide de tests classique, qui plaçait le test unitaire à la base et le plus grand volume.

Pour une équipe qui applique une répartition de tests sans jamais l’avoir vraiment questionnée, ce modèle mérite d’être confronté à la réalité d’un projet WordPress, où une bonne partie du comportement observable dépend justement de l’intégration avec le cœur. Ce billet ne traite pas d’un outil en particulier ; il compare les deux modèles de répartition.

La pyramide classique : beaucoup d’unitaire, peu de bout en bout

Le modèle traditionnel de la pyramide de tests recommande une base large de tests unitaires rapides et isolés, une couche intermédiaire de tests d’intégration plus réduite, et un sommet étroit de tests de bout en bout, lents et coûteux à maintenir. La logique sous-jacente : plus un test est rapide et isolé, plus on peut en écrire, donc plus il doit représenter le socle de la couverture.

Le testing trophy : l’intégration au centre, pas à la marge

Le testing trophy, popularisé par Kent C. Dodds, redistribue ce poids : les tests d’intégration deviennent la catégorie la plus représentée, devant les tests unitaires, avec en plus une base de tests statiques (analyse statique, linting) que la pyramide classique ne mentionnait pas explicitement.

Testing trophy (de haut en bas, par volume croissant)
  E2E            — peu nombreux, parcours critiques uniquement
  Intégration    — la couche la plus représentée
  Unitaire       — présent mais pas majoritaire
  Statique       — analyse statique, linting, base du trophée

L’argument central : un test unitaire isolé peut passer alors que l’assemblage réel des pièces échoue, parce qu’il ne vérifie qu’une fonction en dehors de son contexte d’exécution véritable. Un test d’intégration, lui, vérifie que les pièces fonctionnent ensemble, ce qui se rapproche davantage de ce qu’un utilisateur final expérimente réellement.

Pourquoi ce modèle parle particulièrement à WordPress

Sur un projet WordPress, une part importante du comportement observable dépend d’une intégration réelle avec le cœur : hooks, requêtes WP_Query, capacités et rôles, système de métadonnées. Un test unitaire isolé qui simule entièrement ces mécanismes via des doublures peut passer alors que la véritable interaction avec WordPress échouerait, par exemple à cause d’un ordre d’exécution de hooks mal anticipé.

L'essentiel à retenir : Le testing trophy place l'intégration au centre, pas la base de la pyramide ; Sur WordPress, une bonne part du comportement dépend justement de cette intégration au cœur ; Le bout en bout reste utile mais coûteux, donc réservé aux parcours critiques

WP_UnitTestCase, qui charge un cœur WordPress réel connecté à une base de données de test, correspond précisément à cette couche d’intégration mise en avant par le testing trophy. Une équipe qui a longtemps privilégié des tests unitaires purs, avec Brain Monkey ou WP_Mock, gagne souvent à rééquilibrer sa suite vers davantage de tests WP_UnitTestCase.

Tableau comparatif des deux modèles

AspectPyramide classiqueTesting trophy
Catégorie majoritaireTests unitairesTests d’intégration
Vitesse d’exécution globaleTrès rapideModérée, à cause du poids de l’intégration
Fidélité au comportement réelPlus faible sur du code fortement intégréPlus élevée sur ce même code
Adapté à WordPressLimité sur les hooks et requêtes nativesBien adapté grâce à WP_UnitTestCase

Ce que le testing trophy ne change pas

Le bout en bout reste, dans les deux modèles, la catégorie la plus coûteuse à écrire et à maintenir, et reste donc réservée aux parcours véritablement critiques : tunnel de commande, formulaire de contact, authentification. Ce n’est pas parce que l’intégration prend plus de place que le bout en bout doit être abandonné ; il garde une valeur irremplaçable sur ce qu’aucun autre niveau ne peut vérifier, l’expérience réelle dans un navigateur.

Un test qui simule trop parfaitement WordPress finit par tester le simulateur, pas WordPress lui-même : c’est l’angle mort que le testing trophy cherche justement à réduire.

En résumé

Le testing trophy ne remplace pas la pyramide classique par une recette universelle, mais il propose un rééquilibrage utile pour un projet fortement dépendant de son intégration avec un cœur applicatif, ce qui est précisément le cas de WordPress. Réévaluer la part de tests d’intégration face aux tests unitaires purs, sans renoncer à un socle statique et à un sommet de bout en bout ciblé, permet une couverture plus fidèle au comportement réellement observé par un utilisateur.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Partager :

À propos de l'auteur

WordPress Développement

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

Voir tous ses articles

Dans la même veine

À lire aussi